如何使用ChatGPT API
近年來(lái),人工智能(AI)的發(fā)展日新月異,而聊天機(jī)器人(Chatbot)則是AI領(lǐng)域的明星應(yīng)用之一。
今天,我們將深入淺出地介紹如何使用ChatGPT API,構(gòu)建屬于自己的智能聊天機(jī)器人的基礎(chǔ)。
一、準(zhǔn)備工作
- 注冊(cè)O(shè)penAI賬戶 要使用ChatGPT API,首先需要在OpenAI官網(wǎng)(https://www.openai.com)上注冊(cè)一個(gè)賬戶。
完成注冊(cè)并登錄后,通過(https://platform.openai.com/account)申請(qǐng)API密鑰(API Key)。
- 安裝相關(guān)依賴 在本地環(huán)境中安裝Python和OpenAI Python庫(kù)。使用以下命令安裝:
pip install openai
二、使用OpenAI API
- 導(dǎo)入庫(kù)和設(shè)置API密鑰
在Python腳本中,導(dǎo)入OpenAI庫(kù)并設(shè)置API密鑰:
import openai
# 替換為您的API密鑰
openai.api_key = "your-api-key"
- 調(diào)用API
現(xiàn)在可以調(diào)用openai
模塊中的ChatCompletion類
來(lái)與ChatGPT
進(jìn)行交互。
示例代碼:
import openai
# 配置API密鑰
openai.api_key = "your-api-key"
# 準(zhǔn)備輸入消息
messages = [
{"role": "system", "content": "你是一個(gè) AI 助手,會(huì)回答用戶關(guān)于技術(shù)的問題。"},
{"role": "user", "content": "請(qǐng)解釋一下什么是神經(jīng)網(wǎng)絡(luò)?"}, # 在content鍵對(duì)應(yīng)的值中輸入問題文本。
]
# 調(diào)用 openai.ChatCompletion.create 函數(shù)與 GPT 進(jìn)行交互
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # 使用 GPT-3.5 模型
messages=messages, # 輸入消息列表
max_tokens=100, # 限制回復(fù)的最大長(zhǎng)度
temperature=0.7, # 控制回復(fù)的隨機(jī)性
top_p=0.9, # 控制回復(fù)時(shí)的令牌采樣策略
n=1, # 生成的獨(dú)立回復(fù)數(shù)量
stop_sequences=["\n"], # 回復(fù)停止生成的字符串列表
)
# 輸出生成的回復(fù)
generated_reply = response.choices[0].message['content']
print("AI Assistant: ", generated_reply)
openai.ChatCompletion.create
函數(shù)用于與 OpenAI 的 ChatGPT 模型進(jìn)行交互,生成基于輸入消息的回復(fù)。這個(gè)函數(shù)接受多個(gè)參數(shù),下面是其中一些關(guān)鍵參數(shù)及其作用的簡(jiǎn)要解釋:
model
(字符串): 這個(gè)參數(shù)指定了你希望使用的預(yù)訓(xùn)練模型。在這種情況下,你應(yīng)該使用 GPT-3.5 模型,例如"gpt-3.5-turbo"
或者其他可用的 GPT-3 模型變種。
messages
(列表): 這個(gè)參數(shù)接受一個(gè)包含消息對(duì)象的列表。每個(gè)消息對(duì)象都包含一個(gè)role
(字符串,可以是"system"
、"user"
或"assistant"
)以及相應(yīng)的content
(字符串,表示實(shí)際消息文本)。這些消息按順序構(gòu)成了與模型的對(duì)話歷史,通常以一個(gè)系統(tǒng)消息開始,然后是用戶和助手的互動(dòng)消息。
system 消息有助于設(shè)置助手的行為。在上面的例子中,助手被指示 “你是一個(gè)得力的助手”。
user 消息有助于指導(dǎo)助手。就是用戶說(shuō)的話,向助手提的問題。
assistant 消息有助于存儲(chǔ)先前的回復(fù)。這是為了持續(xù)對(duì)話,提供會(huì)話的上下文。
max_tokens
(整數(shù),可選): 這個(gè)參數(shù)用于限制生成回復(fù)的最大長(zhǎng)度。其值表示生成回復(fù)中的最大令牌(token)數(shù)量。如果設(shè)置得太小,可能導(dǎo)致生成的回復(fù)被截?cái)唷?/p>
temperature
(浮點(diǎn)數(shù),可選): 這個(gè)參數(shù)用于控制生成回復(fù)時(shí)的隨機(jī)性。較高的值(如 1.0)會(huì)使生成的回復(fù)更隨機(jī)和多樣化,而較低的值(如 0.1)會(huì)讓回復(fù)更確定和一致。一般情況下,較低的值更適合生成連貫、一致的回復(fù),而較高的值則有助于激發(fā)創(chuàng)意思維。
top_p
(浮點(diǎn)數(shù),可選): 這個(gè)參數(shù)用于控制生成回復(fù)時(shí)的令牌采樣策略。它表示生成回復(fù)時(shí),應(yīng)考慮的最高概率的令牌的累積概率。較高的值(如 0.9)會(huì)考慮更多可能的令牌,而較低的值(如 0.5)會(huì)使采樣范圍更窄。調(diào)整此參數(shù)可以影響生成文本的多樣性和質(zhì)量。
n
(整數(shù),可選): 這個(gè)參數(shù)用于指定要生成的獨(dú)立回復(fù)的數(shù)量。例如,如果你想要從模型獲得多個(gè)不同的回復(fù),可以將n
設(shè)置為大于 1 的值。請(qǐng)注意,生成多個(gè)回復(fù)可能會(huì)增加 API 請(qǐng)求的計(jì)算時(shí)間和成本。
stop_sequences
(列表,可選): 這個(gè)參數(shù)用于指定一個(gè)字符串列表,當(dāng)生成的回復(fù)遇到這些字符串中的任何一個(gè)時(shí),回復(fù)將停止生成。這可以用來(lái)設(shè)置自定義的生成邊界,以避免生成過長(zhǎng)或無(wú)關(guān)的回復(fù)信息。
三、多輪對(duì)話示例
以下代碼展示了如何實(shí)現(xiàn)與ChatGPT的多輪對(duì)話:
import openai
# 配置API密鑰
openai.api_key = "your-api-key"
def chat_with_gpt(messages):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=messages,
max_tokens=1000,
temperature=0.5,
)
resp_content = response['choices'][0]['message']['content']
return resp_content
# 初始化消息列表
messages = [
{"role": "system", "content": "你是我的編程顧問。"},
{"role": "user", "content": "你好,ChatGPT!請(qǐng)問你能幫我回答一些問題嗎?"}
]
# 進(jìn)行多輪對(duì)話
while True:
response = chat_with_gpt(messages)
print(f"ChatGPT: {response}")
user_input = input("User: ")
if user_input.lower() in ["exit", "退出", "再見"]:
print("ChatGPT: 再見!期待下次與您交流。")
break
messages.append({"role": "user", "content": user_input}) # 添加ChatGPT需要上下文聊天記錄。
在上面的代碼中,使用一個(gè)while
循環(huán)實(shí)現(xiàn)多輪對(duì)話。
每次循環(huán)中,先調(diào)用chat_with_gpt
函數(shù)獲取ChatGPT的回答,并將回答輸出。
然后,獲取用戶輸入的下一句話,并將其添加到messages
列表中。
如果用戶輸入"exit"
、"退出"
或"再見"
,循環(huán)將終止,對(duì)話結(jié)束。
代碼運(yùn)行效果:
ChatGPT: 當(dāng)然,我很樂意回答你的問題!請(qǐng)問你有什么需要幫助的? User: 深度學(xué)習(xí)和機(jī)器學(xué)習(xí)有什么區(qū)別? ChatGPT:
深度學(xué)習(xí)和機(jī)器學(xué)習(xí)是兩個(gè)密切相關(guān)的領(lǐng)域,但是它們有一些不同之處。機(jī)器學(xué)習(xí)是一種人工智能的分支,它使用算法和統(tǒng)計(jì)模型來(lái)讓計(jì)算機(jī)從數(shù)據(jù)中學(xué)習(xí)。機(jī)器學(xué)習(xí)算法可以分為監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)和強(qiáng)化學(xué)習(xí)。監(jiān)督學(xué)習(xí)是指給計(jì)算機(jī)提供帶有標(biāo)簽的數(shù)據(jù),讓它從中學(xué)習(xí),例如分類和回歸問題。無(wú)監(jiān)督學(xué)習(xí)是指給計(jì)算機(jī)提供沒有標(biāo)簽的數(shù)據(jù),讓它去發(fā)現(xiàn)數(shù)據(jù)中的模式和結(jié)構(gòu),例如聚類和降維問題。強(qiáng)化學(xué)習(xí)是指讓計(jì)算機(jī)在與環(huán)境互動(dòng)的過程中學(xué)習(xí)最優(yōu)的行為,例如游戲和機(jī)器人控制。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一種特殊形式,它使用深度神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)數(shù)據(jù)中的特征和模式。深度神經(jīng)網(wǎng)絡(luò)是一種由多個(gè)層次組成的神經(jīng)網(wǎng)絡(luò),每一層都可以自動(dòng)學(xué)習(xí)數(shù)據(jù)中的特征,并將其傳遞給下一層。深度學(xué)習(xí)可以應(yīng)用于各種任務(wù),例如圖像識(shí)別、自然語(yǔ)言處理和語(yǔ)音識(shí)別。
因此,機(jī)器學(xué)習(xí)是一個(gè)更廣泛的概念,而深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)子集,它使用深度神經(jīng)網(wǎng)絡(luò)來(lái)進(jìn)行學(xué)習(xí)。 User:
如果我的訓(xùn)練樣本非常大,哪種方式更適合我? ChatGPT:
深度學(xué)習(xí)和機(jī)器學(xué)習(xí)都是人工智能領(lǐng)域中的分支,它們有一些相同之處,但也有一些區(qū)別。機(jī)器學(xué)習(xí)是一種通過從數(shù)據(jù)中學(xué)習(xí)來(lái)完成特定任務(wù)的方法。它可以分為監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)和半監(jiān)督學(xué)習(xí)。監(jiān)督學(xué)習(xí)需要訓(xùn)練數(shù)據(jù)和標(biāo)簽,以便為新數(shù)據(jù)提供正確的標(biāo)簽。無(wú)監(jiān)督學(xué)習(xí)不需要標(biāo)簽,而是通過發(fā)現(xiàn)數(shù)據(jù)中的模式和結(jié)構(gòu)來(lái)學(xué)習(xí)。半監(jiān)督學(xué)習(xí)則是介于兩者之間,它使用帶標(biāo)簽的數(shù)據(jù)和未標(biāo)記的數(shù)據(jù)進(jìn)行訓(xùn)練。
深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)分支,它使用神經(jīng)網(wǎng)絡(luò)來(lái)學(xué)習(xí)數(shù)據(jù)的特征。深度學(xué)習(xí)可以自動(dòng)學(xué)習(xí)特征,而不需要手動(dòng)選擇或提取特征。它可以用于許多任務(wù),如圖像分類、語(yǔ)音識(shí)別和自然語(yǔ)言處理等。
如果訓(xùn)練樣本非常大,深度學(xué)習(xí)可能更適合。深度學(xué)習(xí)模型可以處理大量的數(shù)據(jù),并且可以自動(dòng)學(xué)習(xí)特征,從而減少了手動(dòng)特征提取的工作量。此外,深度學(xué)習(xí)模型可以使用GPU等硬件加速訓(xùn)練,從而加快訓(xùn)練速度。但是,深度學(xué)習(xí)模型通常需要更多的計(jì)算資源和更長(zhǎng)的訓(xùn)
練時(shí)間,因此需要考慮計(jì)算成本和時(shí)間成本。如果數(shù)據(jù)集較小或任務(wù)較簡(jiǎn)單,則機(jī)器學(xué)習(xí)可能更適合。 User:
四、最后
通過以上的學(xué)習(xí),相信你已經(jīng)學(xué)會(huì)了如何使用Openai
的API
與GPT
進(jìn)行多輪對(duì)話。
當(dāng)然,實(shí)際應(yīng)用中,還可能需要根據(jù)需求調(diào)整參數(shù)、處理更復(fù)雜的場(chǎng)景。
此外,每次調(diào)用Openai
的API
并不是免費(fèi)的。在進(jìn)行API
請(qǐng)求時(shí),Openai
會(huì)根據(jù)您的賬戶余額自動(dòng)扣除相應(yīng)數(shù)量的Token
。
如果你對(duì)Python感興趣的話,可以試試我整理的這份Python全套學(xué)習(xí)資料,文末免費(fèi)領(lǐng)取
包括:Python永久使用安裝包、Python web開發(fā),Python爬蟲,Python數(shù)據(jù)分析,人工智能、機(jī)器學(xué)習(xí)等學(xué)習(xí)教程。帶你從零基礎(chǔ)系統(tǒng)性的學(xué)好Python!
零基礎(chǔ)Python學(xué)習(xí)資源介紹
一、Python所有方向的學(xué)習(xí)路線
Python所有方向路線就是把Python常用的技術(shù)點(diǎn)做整理,形成各個(gè)領(lǐng)域的知識(shí)點(diǎn)匯總,它的用處就在于,你可以按照上面的知識(shí)點(diǎn)去找對(duì)應(yīng)的學(xué)習(xí)資源,保證自己學(xué)得較為全面。
二、Python學(xué)習(xí)軟件
工欲善其事,必先利其器。學(xué)習(xí)Python常用的開發(fā)軟件都在這里了!
三、Python入門學(xué)習(xí)視頻
還有很多適合0基礎(chǔ)入門的學(xué)習(xí)視頻,有了這些視頻,輕輕松松上手Python~
四、Python練習(xí)題
每節(jié)視頻課后,都有對(duì)應(yīng)的練習(xí)題哦,可以檢驗(yàn)學(xué)習(xí)成果哈哈!
五、Python實(shí)戰(zhàn)案例
光學(xué)理論是沒用的,要學(xué)會(huì)跟著一起敲代碼,動(dòng)手實(shí)操,才能將自己的所學(xué)運(yùn)用到實(shí)際當(dāng)中去,這時(shí)候可以搞點(diǎn)實(shí)戰(zhàn)案例來(lái)學(xué)習(xí)。這份資料也包含在內(nèi)的哈~
六、Python面試資料
我們學(xué)會(huì)了Python之后,有了技能就可以出去找工作啦!下面這些面試題是都來(lái)自阿里、騰訊、字節(jié)等一線互聯(lián)網(wǎng)大廠,并且有阿里大佬給出了權(quán)威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-742189.html
七、資料領(lǐng)取
上述完整版Python全套學(xué)習(xí)資料已經(jīng)上傳CSDN官方,需要的小伙伴可自行微信掃描下方CSDN官方認(rèn)證二維碼輸入“領(lǐng)取資料”免費(fèi)領(lǐng)?。。?/mark>
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-742189.html
到了這里,關(guān)于教你用Python搭建一個(gè)屬于自己的AI聊天機(jī)器人的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!