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