国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【課件】Python調(diào)用OpenAI API實現(xiàn)ChatGPT多輪對話

這篇具有很好參考價值的文章主要介紹了【課件】Python調(diào)用OpenAI API實現(xiàn)ChatGPT多輪對話。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Python調(diào)用openai API實現(xiàn)多輪對話

如何實現(xiàn)多輪對話?

gpt-3.5-turbo 模型調(diào)用方法 openai.ChatCompletion.create 里傳入的 message 是一個列表,列表里每個元素是字典,包含了角色和內(nèi)容,我們只需將每輪對話都存儲起來,然后每次提問都帶上之前的問題和回答即可。

最終效果

【課件】Python調(diào)用OpenAI API實現(xiàn)ChatGPT多輪對話

實現(xiàn)代碼

import openai
import json
import os

os.environ["HTTP_PROXY"] = "http://127.0.0.1:20171"
os.environ["HTTPS_PROXY"] = "http://127.0.0.1:20171"

# 獲取 api
def get_api_key():
    # 可以自己根據(jù)自己實際情況實現(xiàn)
    # 以我為例子,我是存在一個 openai_key 文件里,json 格式
    '''
    {"api": "你的 api keys"}
    '''
    openai_key_file = './envs/openai_key'
    with open(openai_key_file, 'r', encoding='utf-8') as f:
        openai_key = json.loads(f.read())
    return openai_key['api']
openai.api_key = get_api_key() 


class ChatGPT:
    def __init__(self, user):
        self.user = user
        self.messages = [{"role": "system", "content": "一個有10年P(guān)ython開發(fā)經(jīng)驗的資深算法工程師"}]
        self.filename="./user_messages.json"

    def ask_gpt(self):
        # q = "用python實現(xiàn):提示手動輸入3個不同的3位數(shù)區(qū)間,輸入結(jié)束后計算這3個區(qū)間的交集,并輸出結(jié)果區(qū)間"
        rsp = openai.ChatCompletion.create(
          model="gpt-3.5-turbo",
          messages=self.messages
        )
        return rsp.get("choices")[0]["message"]["content"]

    def writeTojson(self):
        try:
            # 判斷文件是否存在
            if not os.path.exists(self.filename):
                with open(self.filename, "w") as f:
                    # 創(chuàng)建文件
                    pass
            # 讀取
            with open(self.filename, 'r', encoding='utf-8') as f:
                content = f.read()
                msgs = json.loads(content) if len(content) > 0 else {}
            # 追加
            msgs.update({self.user : self.messages})
            # 寫入
            with open(self.filename, 'w', encoding='utf-8') as f:
                json.dump(msgs, f)
        except Exception as e:
            print(f"錯誤代碼:{e}")           

def main():
    user = input("請輸入用戶名稱: ")
    chat = ChatGPT(user)
    
    # 循環(huán)
    while 1:
        # 限制對話次數(shù)
        if len(chat.messages) >= 11:
            print("******************************")
            print("*********強制重置對話**********")
            print("******************************")
            # 寫入之前信息
            chat.writeTojson()
            user = input("請輸入用戶名稱: ")
            chat = ChatGPT(user)
            
        # 提問
        q = input(f"【{chat.user}】")
        
        # 邏輯判斷
        if q == "0":
            print("*********退出程序**********")
            # 寫入之前信息
            chat.writeTojson()
            break
        elif q == "1":
            print("**************************")
            print("*********重置對話**********")
            print("**************************")
            # 寫入之前信息
            chat.writeTojson()
            user = input("請輸入用戶名稱: ")
            chat = ChatGPT(user)
            continue
            
        # 提問-回答-記錄
        chat.messages.append({"role": "user", "content": q})
        answer = chat.ask_gpt()
        print(f"【ChatGPT】{answer}")
        chat.messages.append({"role": "assistant", "content": answer})

if __name__ == '__main__':
    main()

代碼解析:

ChatGPT 類,包含三個函數(shù):

  • __init__初始化函數(shù),初始化了三個個實例變量,user、messages、filename(當前用戶、消息列表、存儲記錄的文件路徑)。

  • ask_gpt函數(shù),將當前用戶所有歷史消息+最新提問發(fā)送給 gpt-3.5-turbo ,并返回響應(yīng)結(jié)果。

  • writeTojson函數(shù),結(jié)束/重置用戶時記錄當前用戶之前的訪問數(shù)據(jù)。

  • main函數(shù),程序入口函數(shù),用戶輸入用戶名后進入與 ChatGPT 的循環(huán)對話中,輸入 0 退出程序,輸入 1 重置用戶,退出和重置都會將當前用戶之前訪問數(shù)據(jù)記錄搭配 json 文件中。

  • 由于 gpt-3.5-turbo 單次請求最大 token 數(shù)為:4096,所以代碼里限制了下對話次數(shù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-437728.html

更多拓展

  • 你可以寫個函數(shù),從 json 文件讀取歷史用戶訪問記錄,然后每次訪問可以選用戶。
  • 你可以寫個 web 服務(wù),使用 session 或者數(shù)據(jù)庫支持多用戶同時登錄,同時訪問。
  • 你可以基于之前分享的釘釘機器人項目,將 gpt-3.5-turbo 接入釘釘機器人。

到了這里,關(guān)于【課件】Python調(diào)用OpenAI API實現(xiàn)ChatGPT多輪對話的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • OpenAI-ChatGPT最新官方接口《聊天交互多輪對話》全網(wǎng)最詳細中英文實用指南和教程,助你零基礎(chǔ)快速輕松掌握全新技術(shù)(二)(附源碼)

    OpenAI-ChatGPT最新官方接口《聊天交互多輪對話》全網(wǎng)最詳細中英文實用指南和教程,助你零基礎(chǔ)快速輕松掌握全新技術(shù)(二)(附源碼)

    Using the OpenAI Chat API, you can build your own applications with gpt-3.5-turbo and gpt-4 to do things like: 使用OpenAI Chat API,您可以使用 gpt-3.5-turbo 和 gpt-4 構(gòu)建自己的應(yīng)用程序,以執(zhí)行以下操作: Draft an email or other piece of writing 起草一封電子郵件或其他書面材料 Write Python code 編寫Python代碼 Answer

    2023年04月24日
    瀏覽(43)
  • Java調(diào)用ChatGPT的API接口實現(xiàn)對話與圖片生成

    有些魔法是需要做配置的。否則無法正確實現(xiàn)代碼測試。這里以我使用的工具為例說明。 在pom.xml文件中添加: Constants類中,聲明自己的API Key 其中,查看API Key的位置: https://platform.openai.com/account/api-keys 余額查詢: https://platform.openai.com/account/usage pom.xml文件中需要增加依賴:

    2024年02月07日
    瀏覽(24)
  • Java調(diào)用ChatGPT(基于SpringBoot),實現(xiàn)可連續(xù)對話和流式輸出的ChatGPT API(可自定義實現(xiàn)AI助手)

    Java調(diào)用ChatGPT(基于SpringBoot),實現(xiàn)可連續(xù)對話和流式輸出的ChatGPT API(可自定義實現(xiàn)AI助手)

    源碼及更詳細的介紹說明參見Git上的 README.md 文檔 https://github.com/asleepyfish/chatgpt 本文Demo(SpringBoot和Main方法Demo均包括)的Git地址:https://github.com/asleepyfish/chatgpt-demo 流式輸出結(jié)合Vue前端的Demo的Git地址:https://github.com/asleepyfish/chatgpt-vue 后續(xù)使用方法和api版本更新均在Github的READM

    2023年04月13日
    瀏覽(27)
  • Java調(diào)用ChatGPT(基于SpringBoot和Vue),實現(xiàn)可連續(xù)對話和流式輸出的ChatGPT API(可自定義實現(xiàn)AI助手)

    Java調(diào)用ChatGPT(基于SpringBoot和Vue),實現(xiàn)可連續(xù)對話和流式輸出的ChatGPT API(可自定義實現(xiàn)AI助手)

    源碼及更詳細的介紹說明參見Git上的 README.md 文檔 https://github.com/asleepyfish/chatgpt 本文Demo(SpringBoot和Main方法Demo均包括)的Git地址:https://github.com/asleepyfish/chatgpt-demo 流式輸出結(jié)合Vue前端的Demo的Git地址:https://github.com/asleepyfish/chatgpt-vue 后續(xù)使用方法和api版本更新均在Github的READM

    2023年04月24日
    瀏覽(29)
  • OpenAI開發(fā)系列(六):Completions模型的工作原理及應(yīng)用實例(開發(fā)多輪對話機器人)

    OpenAI開發(fā)系列(六):Completions模型的工作原理及應(yīng)用實例(開發(fā)多輪對話機器人)

    授權(quán)聲明: 本文基于九天Hector的原創(chuàng)課程資料創(chuàng)作,已獲得其正式授權(quán)。 原課程出處:九天Hector的B站主頁,感謝九天Hector為學(xué)習(xí)者帶來的寶貴知識。 請尊重原創(chuàng),轉(zhuǎn)載或引用時,請標明來源。 全文共7000余字,預(yù)計閱讀時間約15~30分鐘 | 滿滿干貨(附代碼),建議收藏! 本文

    2024年02月13日
    瀏覽(28)
  • OpenAI 推出用于下一代對話式 AI 開發(fā)的 ChatGPT 和 Whisper API

    OpenAI 推出用于下一代對話式 AI 開發(fā)的 ChatGPT 和 Whisper API

    人工智能已經(jīng)成為技術(shù)行業(yè)的推動力,使機器能夠?qū)W習(xí)和執(zhí)行以前被認為是人類獨有的任務(wù)。領(lǐng)先的 AI 研究機構(gòu) OpenAI 一直走在這場革命的最前沿,開發(fā)可以處理自然語言并生成類似人類文本的強大模型。其中一個模型是 ChatGPT API,它可以對文本輸入生成連貫且上下文相關(guān)的

    2024年02月09日
    瀏覽(19)
  • OpenAI發(fā)布ChatGPT函數(shù)調(diào)用和API更新

    2023年6月13日,OpenAI針對開發(fā)者調(diào)用的API做了重大更新,包括更易操控的 API模型、函數(shù)調(diào)用功能、更長的上下文和更低的價格。 在今年早些時候發(fā)布gpt-3.5-turbo,gpt-4在短短幾個月內(nèi),已經(jīng)看到開發(fā)人員在這些模型之上構(gòu)建了令人難以置信的應(yīng)用程序。 今天,我們將跟進一些令

    2024年02月08日
    瀏覽(25)
  • openai-chatGPT的API調(diào)用異常處理

    openai-chatGPT的API調(diào)用異常處理

    因為目前openai對地區(qū)限制的原因,即使設(shè)置了全局代理使用API調(diào)用時,還是會出現(xiàn)科學(xué)上網(wǎng)代理的錯誤問題。 openai庫 == 0.26.5 【錯誤提示】: raise error.APIConnectionError( openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host=\\\' api.openai.com \\\', port=443): Max retries exceede

    2024年01月20日
    瀏覽(29)
  • 文心一言 VS ChatGPT測評--多輪對話

    文心一言 VS ChatGPT測評--多輪對話

    上面的圖,藍色圖表是文心一言;下面的圖,綠色圖標是chatGPT。 chatGPT還會搶答了。。。 chatGPT更有條理,1,2,3,4.。。。 文心一言的時效性更強一點,這回合算文心一言贏 還是chatGPT更有條理,文心的回答上句不接下句的,感覺差點意思。 文心的評價感覺更像是吹捧,專業(yè)性

    2024年02月15日
    瀏覽(27)
  • Chatgpt API調(diào)用報錯:openai.error.RateLimitError

    Chatgpt API調(diào)用報錯:openai.error.RateLimitError

    Chatgpt API 調(diào)用報錯: openai.error.RateLimitError: You exceeded your current quota, please check your plan and billing details. 調(diào)用OpenAI API接口 代碼運行報錯: 報錯原因: ????????為了探索和試驗API,所有新用戶都可以獲得價值5美元的免費代幣。這些代幣將在3個月后到期;或者你使用了所有的

    2024年02月13日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包