本文指導如何通過調用OpenAI的API完成一個簡單的聊天機器人。
背景知識
API介紹
我們可以通過任何語言的 HTTP 請求、官方 Python 、 Node.js 庫或社區(qū)維護的庫與 ChatGPT的API 進行交互,官方API文檔:
API Reference - OpenAI API (可自行去查看)
所以python是有現成包用的,會比調用原始的HTTP請求容易一些,python包:
openai/openai-python: The official Python library for the OpenAI API
本文使用Python編程語言完成一個簡單的AI聊天機器人。
一次簡單的調用
如果要調用ChatGPT的API其實非常簡單,只需要幾行代碼,像下面這樣:
import openai
openai.api_key = "替換為你的key"
openai.api_base = "如果走繞路這里填寫對應的服務商的網址"
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=[
{'role': 'user', 'content': 'hello.'},
],
temperature=1, # 控制模型輸出的隨機程度
)
# 打印ChatGPT的回復
print(response.choices[0].message["content"])
運行后可以看到如下打?。?/p>
Hello! How can I assist you today?
一次調用就完成了。
幾種消息的介紹
上面的messages參數中有一個role關鍵字,它有3中類型,對應3中消息,這里介紹一下:
系統(tǒng)消息
在ChatGPT的客戶端聊天窗口是看不到系統(tǒng)消息的,這個是API中才有的,主要是給開發(fā)人員使用的。
系統(tǒng)消息主要用來設置聊天機器人的角色和行為,相當于給它一些默認的指令。
用戶消息:
就是你在聊天窗口發(fā)的內容,稱為「用戶消息」,
助手消息:
就是ChatGPT發(fā)給你的內容,稱為「助手消息」。
代碼
來看看一個簡單的完成的AI聊天機器人的代碼:
import openai
openai.api_key = "替換為你的"
openai.api_base = "如果走繞路這里填寫對應的服務的網址"
def get_completion_from_messages(messages, model="gpt-3.5-turbo", temperature=0):
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=temperature, # 控制模型輸出的隨機程度
)
return response.choices[0].message["content"]
context = [
# 上下文中定義一個系統(tǒng)角色,告訴ChatGPT他是一個友好的助手,后面的回復它都會是一個非常友好的態(tài)度
{'role': 'system', 'content': 'You are a friendly assistant.'},
]
def chat_to_bot(prompt):
# 我們發(fā)送的信息角色是user
context.append({'role': 'user', 'content': f"{prompt}"})
response = get_completion_from_messages(context)
# 注意這里,需要將先前的內容一并發(fā)給ChatGPT
# ChatGPT返回回來得消息的角色是assistant
context.append({'role': 'assistant', 'content': f"{response}"})
return f'Bot: {response}'
if __name__ == '__main__':
while True:
user_input = input("You: ")
print(chat_to_bot(user_input))
代碼解釋:
-
定義了一個
get_completion_from_messages
函數,該函數向 OpenAI API 發(fā)送一系列消息并獲取響應。 messages 參數是消息對象的列表,每個對象都有一個“角色”(可以是“系統(tǒng)”、“用戶”或“助理”)和“內容”(消息的內容) 。 “溫度”參數控制模型輸出的隨機性。 -
context 定義了對話的初始上下文,告訴模型它正在扮演友好助手的角色。
-
chat_to_bot
此函數向聊天機器人發(fā)送消息并獲取其響應。它將用戶的消息和機器人的響應添加到對話上下文中,因此每次對話后都會更新上下文。 -
主循環(huán)中,它反復要求用戶輸入,將該輸入發(fā)送到聊天機器人,并打印聊天機器人的響應。對話無限期地繼續(xù),直到程序被手動停止。
運行的結果是這樣的:
You: hi
Bot: Hello! How can I assist you today?
You: What did I say in the previous sentence?
Bot: In the previous sentence, you said "hi".
You:
可以看到它知道上下文,可以一直對話下去。文章來源:http://www.zghlxwxcb.cn/news/detail-707078.html
注意:每一次API調用都是獨立的,要讓機器人理解上下文(context),那么每次API調用都需要將之前的聊天內容全部發(fā)過去??梢钥吹?,當對話越來越長的時候,對token的消耗非常大,這是LLM的一個特點。文章來源地址http://www.zghlxwxcb.cn/news/detail-707078.html
到了這里,關于ChatGPT實踐-構建簡單的AI聊天機器人(python)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!