最近火出圈的ChatGPT公司OpenAI發(fā)布了Chat API和gpt-3.5-turbo模型,我們現(xiàn)在可以通過(guò)API來(lái)使用與ChatGPT一樣的NLP模型。
![]()
使用OpenAI API,可以使用gpt-3.5-turbo構(gòu)建自己的應(yīng)用程序,可執(zhí)行以下任務(wù):
草擬電子郵件或其他文字內(nèi)容寫(xiě)代碼,例如Python代碼
創(chuàng)建對(duì)話(huà)代理,回答各類(lèi)問(wèn)題
為您的軟件提供自然語(yǔ)言界面
在各種學(xué)科中進(jìn)行輔導(dǎo)
翻譯語(yǔ)言
為視頻游戲模擬角色等
待發(fā)掘的各種應(yīng)用場(chǎng)景……
下面用Python來(lái)講解如何使用openai python SDK實(shí)現(xiàn)自己的聊天機(jī)器人。如果你之前使用過(guò)openai python SDK,請(qǐng)確保升級(jí)到了最新版本(0.27.0),如果還沒(méi)有安裝Python運(yùn)行環(huán)境,請(qǐng)先安裝python 3.10。
獲取API Key
你需要獲取API Key,如果你已經(jīng)使用過(guò)openai SDK那么你可能已經(jīng)有API Key了(這種情況請(qǐng)?zhí)^(guò)本節(jié)內(nèi)容)。
登錄https://platform.openai.com/并導(dǎo)航到https://platform.openai.com/account/api-keys點(diǎn)擊Create new secret key按鈕可以獲取一個(gè)新的API Key。
注意:API Key內(nèi)容只會(huì)顯示一次。點(diǎn)擊復(fù)制按鈕把API Key復(fù)制并保存好。
![]()
創(chuàng)建API
用FastAPI快速創(chuàng)建一個(gè)API,它的接口定義如下:
POST/chatbot/talk
Request Body:
“message”:"你好!"
Response:
“content”:“bot response message”
首先,你需要安裝FastAPI和OpenAI SDK,可以通過(guò)以下命令在命令行中安裝它們:
pip install fastapi uvicorn openai
為了演示方便,此處簡(jiǎn)化了一些最佳實(shí)踐,下面是一個(gè)最基本的FastAPI服務(wù)實(shí)現(xiàn),文件保存在main\app.py文件中。
import openai
from typing import List
from fastapi import FastAPI
from pydantic import BaseModel
from starlette.middleware.cors import CORSMiddleware
history=[]
app=FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["HEAD","OPTIONS","GET","PUT","PATCH","POST","DELETE"],
allow_headers=["*"],
max_age=86400
openai.api_key="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"
class TalkRequest(BaseModel):
message:str
@app.post("/chatbot/talk")
async def chatbot_talk(user_input:TalkRequest):
if not history:
history.append({"role":"system","content":"You are a helpful assistant."})
history.append({"role":"user","content":user_input.message.strip()})
response=await openai.ChatCompletion.acreate(
model="gpt-3.5-turbo",
messages=history)
bot_response=response.choices[0].message
history.append(bot_response)
return bot_response
現(xiàn)在只需創(chuàng)建一個(gè)run.py文件來(lái)啟動(dòng)FastAPI服務(wù)。
import uvicorn
from main.app import app
if__name__=='__main__':
uvicorn.run(
app=app,
host="127.0.0.1",
port=8080,
use_colors=True,
log_level="debug"
接下來(lái)運(yùn)行run.py。
在瀏覽器中打開(kāi)http://127.0.0.1:8080/docs即可看到Swagger界面已經(jīng)加載并顯示出我們的Talk API,如下圖所示:
![]()
點(diǎn)擊Try it out,在message里填入一個(gè)句子,例如我們這里輸入的”你好”,點(diǎn)擊Execute按鈕。如果沒(méi)有問(wèn)題應(yīng)該能得到下面的響應(yīng)結(jié)果:
![]()
OK,到這里我們的后臺(tái)服務(wù)就已經(jīng)準(zhǔn)備好了。
UI界面
接下來(lái)我們做一個(gè)基于VUE的UI界面來(lái)實(shí)現(xiàn)聊天窗口。要實(shí)現(xiàn)基于VUE的聊天界面,需要執(zhí)行以下步驟:
在Vue項(xiàng)目中創(chuàng)建一個(gè)聊天組件,例如Chat.vue。
在Chat.vue中添加一個(gè)文本框和一個(gè)發(fā)送按鈕,用于向聊天機(jī)器人發(fā)送消息。
使用VUE的數(shù)據(jù)綁定功能,將文本框的值綁定到一個(gè)名為message的Vue組件數(shù)據(jù)屬性。
在發(fā)送按鈕上添加一個(gè)點(diǎn)擊事件,該事件將調(diào)用一個(gè)發(fā)送消息的方法,該方法將使用Axios(或其他HTTP庫(kù))將消息POST到聊天機(jī)器人API。
在發(fā)送成功后,使用Axios響應(yīng)中的數(shù)據(jù)更新Vue組件數(shù)據(jù)屬性的值,以顯示聊天機(jī)器人的響應(yīng)消息。
下面是一個(gè)示例Chat.vue文件的基本代碼:
{{message.content}}
{{message.content}}
Send
在這個(gè)示例中,messages是一個(gè)數(shù)組,它用于存儲(chǔ)聊天記錄。
sendMessage方法將新消息添加到messages數(shù)組中,并使用Axios發(fā)送消息并更新響應(yīng)的數(shù)據(jù)屬性。
最后,它清空了message數(shù)據(jù)屬性,以便用戶(hù)可以輸入下一個(gè)消息。
在模板中,我們使用v-for循環(huán)遍歷messages數(shù)組,并根據(jù)isBot數(shù)據(jù)屬性來(lái)判斷消息是用戶(hù)的消息還是聊天機(jī)器人的消息。
運(yùn)行
最后,要在瀏覽器中運(yùn)行Vue應(yīng)用程序,需要執(zhí)行以下步驟。
注意:確保已經(jīng)安裝了Node.js和npm,這將使我們能夠使用Vue的命令行工具來(lái)創(chuàng)建和管理的項(xiàng)目。
(1)打開(kāi)命令行終端,導(dǎo)航到項(xiàng)目目錄,并使用以下命令安裝:
npm install-g cnpm--registry=https://registry.npmmirror.com
cnpm install-g@vue/cli
(2)使用以下命令創(chuàng)建一個(gè)新的Vue項(xiàng)目:
vue create my-chat-app
這將提示選擇一些選項(xiàng)來(lái)配置我們的項(xiàng)目,例如要使用哪個(gè)包管理器,要使用哪些插件等等。
可以根據(jù)需求進(jìn)行選擇,稍等片刻項(xiàng)目即可創(chuàng)建成功,如下圖所示:
![]()
(3)進(jìn)入my-chat-app目錄,安裝Axios,可以使用以下命令:
cnpm install axios--save
打開(kāi)創(chuàng)建的項(xiàng)目文件夾,將Chat.vue組件添加到src/components文件夾中。
打開(kāi)src/App.vue文件,并將以下代碼添加到模板中:
這將把Chat組件添加到App.vue模板中,以便您可以在瀏覽器中查看聊天界面。
(4)在命令行終端中運(yùn)行以下命令啟動(dòng)開(kāi)發(fā)服務(wù)器:
pm run serve
![]()
如上圖所示,Web Server已經(jīng)啟動(dòng)完畢,用瀏覽器打開(kāi)http://localhost:8081/可以看到一個(gè)基本的聊天窗口,當(dāng)然這里只有一個(gè)簡(jiǎn)單的示例來(lái)展示基本操作:
![]()
因文章篇幅有限,感興趣的同行完全可以利用前端技術(shù)做出更精美的機(jī)器人聊天窗口。
最后:在我的V:atstudy-js,可以免費(fèi)領(lǐng)取一份10G軟件測(cè)試工程師面試寶典文檔資料。以及相對(duì)應(yīng)的視頻學(xué)習(xí)教程免費(fèi)分享!其中包括了有基礎(chǔ)知識(shí)、Linux必備、Shell、互聯(lián)網(wǎng)程序原理、Mysql數(shù)據(jù)庫(kù)、抓包工具專(zhuān)題、接口測(cè)試工具、測(cè)試進(jìn)階-Python編程、Web自動(dòng)化測(cè)試、APP自動(dòng)化測(cè)試、接口自動(dòng)化測(cè)試、測(cè)試高級(jí)持續(xù)集成、測(cè)試架構(gòu)開(kāi)發(fā)測(cè)試框架、性能測(cè)試、安全測(cè)試等。
![]()
特別聲明:以上內(nèi)容(如有圖片或視頻亦包括在內(nèi))為自媒體平臺(tái)“網(wǎng)易號(hào)”用戶(hù)上傳并發(fā)布,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.