Python調用chatGPT接口 連續對話

 

首先你需要openAI的賬號,在官網申請一個key
網址是:Account API Keys – OpenAI API

這個key只能調用GPT3,不是chatGPT

使用方法是,在代碼中插入你申請的KEY,
然後運行以下Python代碼,在運行的窗口裏,發送你想對AI說的話
注意啊,是在運行的窗口裏敲入你想對AI說的話,不是代碼中輸入
然後每一次的問答都是獨立的,無法連續對話

 

調用GPT3.5

你需要給Python安裝openai庫,如果你已經安裝,請升級到0.27
pip install openai==v0.27.0

下面的代碼,我添加了若干調試信息。

由於vpn不太穩定,有時候還是會時長斷開。

 

TODO:

1.如果單次回覆內容過長,如何讓chatgpt繼續回覆

2.添加try catch ,在網絡超時的時候,程序不要崩潰退出

3.本地都保存了歷史對話,如何在啓動的時候,就加載歷史對話呢

 

import os
import openai
import datetime
import pyperclip
import pandas as pd
openai.api_key = os.getenv("OPENAI_API_KEY")
#os.environ['NO_PROXY']='api.openai.com'

#chatGPT3.5支持連續對話
MAX_TEXT_LENGTH = 1024

print("max_text_length:",MAX_TEXT_LENGTH)
print('輸入1複製上次回答內容')
print('輸入0導出本次所有對話內容')

#創建一個DataFrame用於存儲每次翻譯結果
df = pd.DataFrame(columns=['發送的內容', '收到的回覆'])

conversation=[{"role": "system", "content": "You are a helpful assistant."}]

while True:
    prompt = (input("請輸入您的內容:"))

    if prompt=='1':
        pyperclip.copy(result.replace('\n', ''))  # 複製到剪切板並刪除換行符
        print("已複製到剪切板!")
        continue

    #如果輸入0則將過去的所的內容導出
    if prompt =='0':
        # 獲取當前日期和時間
        now = datetime.datetime.now()
        date_time = now.strftime("%Y-%m-%d_%H-%M-%S")
        date_time=date_time.replace(':', '-')
        # 定義文件名
        filename = "對話導出" + date_time + ".xlsx"
        # 將DataFrame導出爲Excel文件
        df.to_excel(filename, sheet_name='Sheet1', index=False)
        print("Excel文件已保存爲: ", filename)
        continue

    conversation.append({"role": "user","content": prompt})
    print("debug msg-----001")
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages = conversation,
        temperature=1,
        max_tokens=MAX_TEXT_LENGTH,
        top_p=0.9
    )
    print("debug msg-----002")
    conversation.append({"role": "assistant", "content": response['choices'][0]['message']['content']})

    answer = response['choices'][0]['message']['content']
    if len(answer)<200:
        print("answer <200")
    else:
        print("answer >200.is:",len(answer))

    print("\n" + answer + "\n")

    result=answer

    print("debug msg-----003")

    # 創建一個列表,存儲本次原文與譯句
    qa = []
    q = prompt # 發送的內容
    a = answer  # 收到的回答
    qa.append(q)
    qa.append(a)

    # 向DataFrame中添加本次QA
    df.loc[len(df)] = qa

 

 

 

文章參考地址:

https://lingjie.li/archives/974

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章