5分鐘實作呼叫ChatGPT介面API完成多輪問答
最近ChatGPT也是火爆例外啊,在親自使用了幾個月之后,我發現這東西是真的好用,實實在在地提高了生產力,那么對于開發人員來說,有時候可能需要在自己的代碼里加入這樣一個智能問答的功能,我最近就出現了這樣的想法和需求,所以簡單研究了一下,網上類似的方法有很多,這里我提供一種我目前測驗成功的也正在使用的一種,有其他需求可以自行上網查找,
1、下載openai庫
我們可以直接使用Python中的openai庫來實作對ChatGPT的呼叫,
首先第一步就是下載,下載方式也很簡單,只需要一條命令pip install openai ,下載程序中可能會出現各種問題:比如pip版本太低,可以使用pip install --upgrade pip命令來升級,如果在命令列已經顯示安裝成功,但是呼叫的時候找不到庫,可能是openai版本有問題,可以嘗試使用這條命令pip install -U openai,
我的已經安裝成功了,所以給我顯示的是openai已安裝的版本資訊:

Windows進入命令列是WIN+R后輸入cmd,然后運行相關命令,但是有個點需要注意,最好選擇管理員權限來運行cmd命令列視窗,如果還有其他問題,可以嘗試切換網路或者使用Anaconda來安裝,

2、獲取API KEY
在呼叫介面之前,我們需要申請一個API KEY來獲取使用權限,獲取方式有兩種,可以自行去OpenAI官網(https://platform.openai.com/account/api-keys)注冊賬號,然后申請(需要魔法上網),不過也可以選擇其他方式去獲取,網上有很多渠道,可以自行查找,這個key的格式大概是這個樣子的:sk-[一大串混亂的字母和數字],
3、模型簡述
OpenAI 開放了兩個新模型的api介面(也就是我們用的這個),專門為聊天而生的 gpt-3.5-turbo 和 gpt-3.5-turbo-0301,我查了一下這兩個模型的區別:
gpt-3.5-turbo 需要在 content 中指明具體的角色和問題內容,而 gpt-3.5-turbo-0301 更加關注問題內容,而不會特別關注具體的角色部分,另外,gpt-3.5-turbo-0301 模型有效期到 6 月 1 日,而 gpt-3.5-turbo 會持續更新,
4、引數介紹
首先介紹一下主要引數的含義:
- model:模型名稱,可選gpt-3.5-turbo或gpt-3.5-turbo-0301,
- messages:資料格式為json,問題描述或者角色定義,也是我們需要重點關注的欄位,
- temperature:控制回傳結果的隨機性,0.0表示結果固定,隨機性大可以設定為0.9,
- max_tokens:最大字數,通常一個漢字占兩個長度,API最多支持的token數量為4096,需要注意的是這個字數同時包含了問題和答案的字數和,
- top_p:也即top probability,是指在生成文本時,模型將考慮概率最高的詞語,設定為1即可,通過調節該值可以控制模型生成文本時的多樣性,較小的 top_p 值會導致生成的文本更加確定性,而較大的 top_p 值則會導致生成的文本更加多樣化但可能存在不連貫、不合理的情況,
- frequency_penalty:該引數用于對詞匯進行懲罰(penalty),以減少重復性和不必要的單詞或短語,當引數設定為較大的值時,模型會傾向于避免使用已經出現過的單詞或短語,通過調節該值可以控制模型對文本的流暢度,較小的值會導致生成的文本更加流暢但可能存在重復或者不太符合邏輯的情況,而較大的值則會導致生成的文本更加嚴謹但可能會出現斷句或者語意不連貫的情況,一般建議設定在0.6到1之間,
- stream:控制是否為流式輸出,當引數設定為 True 時,API 的回傳結果會以流的方式不斷推送給客戶端,無需等待全部結果生成完成,當引數設定為 False 時,則需要等待所有結果生成才能一次性回傳給客戶端,
messages欄位需要重點解釋一下:我們可以在代碼中指定角色型別,在gpt-3.5-turbo模型中,主要包含三種角色,分別是系統system系統、user用戶和assistant助手,
下面這一段是對此比較官方的闡釋:
- System:系統角色指的是聊天機器人所運行的計算機系統或者軟體平臺,在對話程序中,System 負責接受用戶請求并將其轉發給 Assistant 進行處理或回應,并最終將結果回傳給 User,
- User:用戶角色指的是與聊天機器人進行對話的人,在對話互動中,User 可以提出各種問題,包括需要獲取資訊、解決問題、咨詢建議等等,User 一般通過輸入文本、語音等方式向 Assistant 發出請求,并通過系統獲取相應的回復或結果,
- Assistant:Assistant 角色指的是聊天機器人中的智能助手程式,主要負責對用戶請求進行處理和回應,并生成相應的回答或結果,Assistant 可以使用自然語言處理技術,如文本理解、知識庫查詢、邏輯推理等,從而實作與 User 的智能化互動,
代碼示例:
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What year is this year?"},
{"role": "assistant", "content": "2023"},
{"role": "user", "content": " xxxx ?"}
]
5、呼叫介面
在我們完成了openai庫的安裝并了解了上述引數的含義之后,就可以著手寫代碼了,下面一個簡單的多次問答機器人代碼示例:
# -*- coding: utf-8 -*-
import openai
api_key = "在這里填入你的KEY"
openai.api_key = api_key
def askChatGPT(messages):
MODEL = "gpt-3.5-turbo"
response = openai.ChatCompletion.create(
model=MODEL,
messages = messages,
temperature=1)
return response['choices'][0]['message']['content']
def main():
messages = [{"role": "user","content":""}]
while 1:
try:
text = input('問:')
if text == 'quit':
break
# 問
d = {"role":"user","content":text}
messages.append(d)
text = askChatGPT(messages)
d = {"role":"assistant","content":text}
# 答
print('答:'+text+'\n')
messages.append(d)
except:
messages.pop()
print('ChatGPT:error\n')
if __name__ == '__main__':
main()
運行上述代碼之后,在控制臺會提示我們輸入問題,每輸入一個問題并敲回車之后,等待片刻會顯示ChatGPT的回答,我們可以進行連續問答,下圖是運行效果(測驗問題無任何價值導向),

下面這段代碼實作了單次問答呼叫,本質上和上面的代碼是一樣的,各位按需自取:
# -*- coding: utf-8 -*-
import openai
def openai_reply(content, apikey):
openai.api_key = apikey
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo-0301", # gpt-3.5-turbo-0301
messages=[
{"role": "user", "content": content}
],
temperature=0.5,
max_tokens=2048,
top_p=1,
frequency_penalty=0.7,
)
# print(response)
return response.choices[0].message.content
if __name__ == '__main__':
content = '我比較喜歡大海,請給我推薦幾個景點,'
ans = openai_reply(content, '在這里填入你的KEY')
print(ans)

原始的回傳值資料格式示例如下:
{
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "xxxx",
"role": "assistant"
}
}
],
"created": 1683542226,
"id": "chatcmpl-",
"model": "gpt-3.5-turbo-0301",
"object": "chat.completion",
"usage": {
"completion_tokens": 373,
"prompt_tokens": 30,
"total_tokens": 403
}
}
6、總結
以上就是針對程式呼叫ChatGPT介面的全部步驟了,如果運行代碼出現了問題可以最后嘗試一下這個方法:找到目前所使用的python環境的安裝目錄,進入openai庫檔案夾下(D:\environment\python39\Lib\site-packages\openai),替換api_requestor.py檔案,所需的替換檔案可以關注我的訂閱號【靠譜楊的挨踢生活】回復【chat】獲取,

理性看待人工智能的發展,正確認識人的不可替代性,讓AI作為一個越來越實用的工具服務于我們的生產和生活(僅代表個人觀點),
好看請贊,養成習慣:) 本文來自博客園,作者:靠譜楊, 轉載請注明原文鏈接:https://www.cnblogs.com/rainbow-1/p/17382852.html
關于筆者: 我的主頁
歡迎來我的51CTO主頁踩一踩~ 我的51CTO博客
更多分享盡在我的訂閱號:靠譜楊的挨踢生活
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/551945.html
標籤:其他
上一篇:云原生周刊:Kubernetes 1.27 服務器端欄位校驗和 OpenAPI V3 進階至 GA
下一篇:返回列表
