博客專欄

EEPW首頁 > 博客 > 使用Streamlit和OpenAI搭建一個(gè)ChatGPT聊天機(jī)器人(附代碼)

使用Streamlit和OpenAI搭建一個(gè)ChatGPT聊天機(jī)器人(附代碼)

發(fā)布人:大數(shù)據(jù)文摘 時(shí)間:2023-02-18 來源:工程師 發(fā)布文章

大數(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)系工作人員刪除。



關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉