使用Streamlit和OpenAI搭建一個(gè)ChatGPT聊天機(jī)器人(附代碼)
大數(shù)據(jù)文摘授權(quán)轉(zhuǎn)載自法納斯特
作者:小F
ChatGPT是OpenAI開(kāi)發(fā)的一個(gè)大型預(yù)訓(xùn)練語(yǔ)言模型。它是GPT-3模型的變體,GPT-3經(jīng)過(guò)訓(xùn)練,可以在對(duì)話(huà)中生成類(lèi)似人類(lèi)的文本響應(yīng)。
ChatGPT旨在用作聊天機(jī)器人,我們可以對(duì)其進(jìn)行微調(diào),以完成各種任務(wù),如回答問(wèn)題、提供信息或參與對(duì)話(huà)。
與許多使用預(yù)定義的響應(yīng)或規(guī)則生成文本的聊天機(jī)器人不同,ChatGPT經(jīng)過(guò)了訓(xùn)練,可以根據(jù)接收到的輸入生成響應(yīng),從而生成更自然、更多樣化的響應(yīng)。
小F也是去注冊(cè)并且試用了一下,確實(shí)很酷!
ChatGPT可以聯(lián)系上下文,然后給出回答。
Streamlit則是一個(gè)搭建網(wǎng)頁(yè)的Python庫(kù),只需幾行代碼就可以創(chuàng)建一個(gè)交互式、可視化的儀表板。
簡(jiǎn)單直觀(guān),無(wú)需相關(guān)的Web開(kāi)發(fā)經(jīng)驗(yàn),即可輕松創(chuàng)建功能強(qiáng)大的Web頁(yè)面。
本期,小F就通過(guò)這兩來(lái)搭建一個(gè)聊天機(jī)器人~
注冊(cè)O(shè)penAI
首先需要注冊(cè)O(shè)penAI,這樣就可以使用ChatGPT,以及獲取api密鑰。
網(wǎng)上有很多注冊(cè)教程,附上鏈接,小F就不細(xì)說(shuō)了。
如果有問(wèn)題可以來(lái)咨詢(xún)小F,我都已經(jīng)實(shí)驗(yàn)過(guò)啦~
注冊(cè)教程:
https://sms-activate.org/cn/info/ChatGPT
接入微信
一并附上微信聊天機(jī)器人教程,需要安裝golang和docker環(huán)境,然后進(jìn)行部署。
先使用Dockerfile創(chuàng)建一個(gè)鏡像,在Dockerfile所在目錄終端下運(yùn)行如下命令。
其中鏡像名稱(chēng)是可以自定義修改的。
docker build -t xiaomoinfo/wechatgpt:latest .
Dockerfile內(nèi)容如下。
FROM golang:1.19-alpineENV api_key=""RUN export GOPRIVATE=github.com/houko/wechatgptWORKDIR /appCOPY . /appRUN go mod download && go build -o server main.goCMD ./server
Docker啟動(dòng)容器,可以設(shè)置關(guān)鍵字,比如「小F」這個(gè)詞。
經(jīng)過(guò)使用,發(fā)現(xiàn)通過(guò)接口獲取的回答和網(wǎng)頁(yè)上不一樣。
微信教程:
https://github.com/houko/wechatgpt
微信教程介紹完了,就來(lái)看看聊天機(jī)器人吧~
聊天機(jī)器人
安裝兩個(gè)要用到的Python庫(kù)。
# 安裝streamlit和openaipip install -i https://pypi.tuna.tsinghua.edu.cn/simple streamlitpip install -i https://pypi.tuna.tsinghua.edu.cn/simple openai
其中openai庫(kù)在文檔上有一個(gè)簡(jiǎn)單的說(shuō)明。
文檔地址:
https://platform.openai.com/docs
引入Python庫(kù),通過(guò)Streamlit設(shè)置頁(yè)面信息。
import streamlit as stimport openai
# 設(shè)置標(biāo)題, 功能介紹st.title("和ChatGPT聊天")st.sidebar.header("功能介紹")st.sidebar.info( '''這是一個(gè)web應(yīng)用程序,通過(guò)OpenAI的API和ChatGPT模型實(shí)現(xiàn)交互(聊天)功能。在文本框中輸入問(wèn)題,然后按Enter鍵查詢(xún),接收ChatGPT的回答''')
查看文檔后得知,text-davinci-003是我們所能用到最好的模型了。
密匙信息在個(gè)人設(shè)置中獲取,首次需要自己創(chuàng)建。
添加我們選擇的模型以及密匙信息。
# 設(shè)置模型和密匙model_engine = "text-davinci-003"openai.api_key = "你的密匙"
通過(guò)翻閱個(gè)人設(shè)置項(xiàng)信息,發(fā)現(xiàn)接口調(diào)用也是有限制的。
一共18刀的免費(fèi)額度,小F已經(jīng)使用了快1美刀了,還剩不少~
使用OpenAI API生成回答,相關(guān)參數(shù)可以自行看文檔。
def ChatGPT(user_query): """ 使用OpenAI API生成回答, 選擇模型, 設(shè)置參數(shù) """ # 使用OpenAI API生成回答 completion = openai.Completion.create( engine=model_engine, prompt=user_query, max_tokens=1024, n=1, temperature=0.5, ) response = completion.choices[0].text return response
主函數(shù),問(wèn)題輸入和回答輸出顯示。
def main(): """ 獲取用戶(hù)輸入, 提交給ChatGPT, 打印輸出 """ # 獲取問(wèn)題信息 user_query = st.text_input("在這里輸入問(wèn)題,回車(chē)查詢(xún)", "Python是什么?") if user_query != ":q" or user_query != "": # 將問(wèn)題提交給ChatGPT, 返回結(jié)果 response = ChatGPT(user_query) return st.write(f"{response}")
# 主函數(shù)main()
最后就可以在終端運(yùn)行下面的代碼了。
streamlit run example.py
結(jié)果如下。
點(diǎn)擊本地地址,瀏覽器就會(huì)跳轉(zhuǎn)到新的頁(yè)面。
剛開(kāi)始應(yīng)該是這樣的,右上角處于RUNNING狀態(tài),表示正在查詢(xún)。
過(guò)一小會(huì)就會(huì)有結(jié)果返回。
問(wèn)一下「如何制作一個(gè)聊天機(jī)器人」。
發(fā)現(xiàn)ChatGPT真的很會(huì)做拆解,真的不錯(cuò)。
最后,從頁(yè)面上看,有點(diǎn)不像一個(gè)聊天機(jī)器人,感覺(jué)就是一問(wèn)一答而已。
其實(shí)只是沒(méi)把問(wèn)題一個(gè)一個(gè)顯示而已,機(jī)器人實(shí)際還是可以聯(lián)系上下文的。
只不過(guò)確實(shí)沒(méi)有網(wǎng)頁(yè)版的ChatGPT好使,看看后續(xù)會(huì)不會(huì)更新咯。
此外本期也只是調(diào)用API接口而已,至于如何真正的建立聊天機(jī)器人,就涉及到數(shù)據(jù)算法模型訓(xùn)練了,大家感興趣可以自行去學(xué)習(xí)~
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權(quán)請(qǐng)聯(lián)系工作人員刪除。