今天要利用OpenAI API建立一個類似ChatGPT聊天功能的程式。使用的是Google Colab線上開發環境。
!pip install openai
import openai # 設定金鑰
openai.api_key = "你的金鑰"
def get_reply(messages):
try:
response = openai.ChatCompletion.create(
model = "gpt-3.5-turbo",
messages = messages
)
reply = response["choices"][0]["message"]["content"]
except openai.OpenAIError as err:
reply = f"發生 {err.error.type} 錯誤\n{err.error.message}"
return reply
msg = ""
while True:
msg = input("你:")
if msg == "結束": break # 如果使用者輸入「結束」,程式就結束
messages = [{"role":"user", "content":msg}]
reply = get_reply(messages) # 取得API回覆內容
print(f"AI:{reply}")
執行結果:
hist = [] # 過去的對話紀錄
backtrace = 2 # 記錄對話的組數
def chat(sys_msg, user_msg):
while len(hist) >= 2 * backtrace: # 當有超過了記錄限制
hist.pop(0) # 移除掉最舊的那筆紀錄
hist.append({"role":"user", "content":user_msg})
reply = get_reply(hist + [{"role":"system", "content":sys_msg}])
while len(hist) >= 2 * backtrace: # 當有超過了記錄限制
hist.pop(0) # 移除掉最舊的紀錄
hist.append({"role":"assistant", "content":reply})
return reply # 回傳API回覆內容
msg = ""
sys_msg = input("你希望AI扮演:")
while True:
msg = input("你:")
if msg == "結束": break
reply = chat(sys_msg, msg)
print(f"AI:{reply}")
執行結果:
今天先做到這邊,明天會使用gradio套件來將文字聊天模式轉換為一個簡單的網頁應用程式。