寫在前面
ChatGPT 近期以強大的對話和信息整合能力風靡全網(wǎng)婿脸。起初础倍,她并沒有引起我很大的興趣咽弦。我認為這不過又是互聯(lián)網(wǎng)公司尋求新的經(jīng)濟增長點的風口而已徒蟆。
就像幾年前的 區(qū)塊鏈 ,大大小小的公司趨之若鶩型型,記得我當時的老東家也推出一款去中心化的 APP段审,用于存儲自己的基因數(shù)據(jù)。現(xiàn)在已經(jīng)沒有人談及區(qū)塊鏈技術(shù)了闹蒜。
就像最近 1-2 年的 元宇宙 寺枉,據(jù)說甚至有學校成立了元宇宙學院,自從扎克伯格曬出一個簡陋無比的元宇宙照片之后嫂用,簡直是將元宇宙的破爛底褲展示在世人面前型凳。如今,元宇宙成了個笑話嘱函。
基于我淺薄的認知甘畅,我并沒有過多關(guān)注 ChatGPT 。直到今天的一些私人原因往弓,我才開始正式了解她疏唾。
ChatGPT 是什么
ChatGPT 的全稱是 Chat Generative Pre-trained Transformer 。我的理解她是一個基于 Transformer 模型 由預(yù)訓(xùn)練數(shù)據(jù)生成對話信息的應(yīng)用函似。(PS:Transformer 模型槐脏,是谷歌在 2017 年推出的 NLP 經(jīng)典模型)
由她的名字,我猜測撇寞,ChatGPT 并不是在全網(wǎng)實時搜索最佳答案顿天,而是根據(jù)預(yù)先訓(xùn)練的數(shù)據(jù)堂氯,實時拼湊出一個答案。這個答案可能并不一定是正確的牌废,但不管你信不信咽白,反正 ChatGPT 自己是相信這個答案的。
ChatGPT 的前世今生
我們所說的 ChatGPT 其實是基于 GPT-3.5 模型 開發(fā)得到的鸟缕。截至目前晶框,OpenAI 公司并沒有開放 GPT-3.5 的接口。因此我們只能通過 OpenAI 的官方網(wǎng)站 https://chat.openai.com/ 來訪問 ChatGPT懂从。(https://ai.com 這個地址是 OpenAI 花重金購買的授段,同樣可以跳轉(zhuǎn)到 ChatGPT 官網(wǎng))
現(xiàn)在網(wǎng)上出現(xiàn)的一些 ChatGPT 中文版,ChatGPT 微信版等等都是基于 2020 年的 GPT-3 模型 開發(fā)而來番甩。雖然和基于GPT-3.5 模型演化而來的 ChatGPT 沒法比侵贵。但是同樣能帶我們體驗人工智能的美妙。
而我們今天要搭建的 ChatGPT 同樣是基于GPT-3 模型開發(fā)对室。
用 Python 搭建 ChatGPT
獲取 OpenAI API Key
由我的另一篇博客 超詳細注冊 OpenAI 接口賬號的教程 獲取 OpenAI API Key 模燥。
安裝 openai 模塊
使用如下代碼安裝 openai 模塊咖祭。
pip install openai
調(diào)用接口獲取返回信息
代碼
調(diào)用 openai.Completion.create 函數(shù)獲取返回信息掩宜。
import os
import openai
# 填寫注冊O(shè)penAI接口賬號時獲取的 OpenAI API Key
openai.api_key = os.getenv("OPENAI_API_KEY")
# 提問
issue = '你是誰?'
# 訪問OpenAI接口
response = openai.Completion.create(
model='text-davinci-003',
prompt=issue,
temperature=0.9,
max_tokens=150,
top_p=1,
frequency_penalty=0.0,
presence_penalty=0.6
)
# 返回信息
resText = response.choices[0].text
print(resText)
參數(shù)
- model:使用的模型么翰,可選內(nèi)容如下:
- prompt:提問牺汤,提問描述越詳細,回答越準確
- temperature:控制結(jié)果的隨機性浩嫌,如果希望結(jié)果更有差異性 0.9檐迟,或者希望有固定結(jié)果可以嘗試 0.0
- max_tokens:生成結(jié)果時的最大 tokens 數(shù)。平均一個漢字是 2 個 tokens码耐,text-davinci-003 最多是 4000 個 tokens追迟,也就是 2000 個漢字左右
- top_p:一個可用于代替 temperature 的參數(shù),對應(yīng)機器學習中 nucleus sampling骚腥,如果設(shè)置 0.1 意味著只考慮構(gòu)成前 10% 概率質(zhì)量的 tokens
- frequency_penalty:控制字符的重復(fù)度敦间,取值為 -2.0 ~ 2.0 之間的數(shù)字
- presence_penalty:控制主題的重復(fù)度,取值為 -2.0 ~ 2.0 之間的數(shù)字
測試 ChatGPT
別的不敢評價束铭,就是這個最后用 python 寫冒泡排序廓块,我給打 99 分。代碼最后莫名其妙多出一個逗號契沫,原以為這代碼肯定會報錯带猴,誰知道測試了下可以正常運行,運行結(jié)果也是對的懈万。后來查了一下資料拴清,原來 print()后面加上逗號可以讓回車符失效靶病,ChatGPT 是故意這么做的,這是我不知道的知識點口予。給她扣掉一分嫡秕,是因為這代碼空格和回車有點太隨意了,并不是特別工整苹威。
最后
免費的 API 接口是有額度限制的昆咽。每個賬號有 18 美元 的免費額度,限期 3 個月 牙甫。 不同的模式計費不同掷酗,text-davinci-003 這個模式大約每 1000 個 tokens 扣費 0.02 美元。
除此以外窟哺,OpenAI 的接口還有如下功能泻轰,靜待你的挖掘。
[站外圖片上傳中...(image-9f61b9-1677113856911)]