創建API

用 FastAPI 快速創建一個 API,它的接口定義如下:

POST /chatbot/talk
Request Body:
{
“message”: "你好!"
}

Response:
{
“content”: “bot response message”
}


首先,你需要安裝 FastAPI 和 OpenAI SDK,可以通過以下命令在命令行中安裝它們:

pip install fastapi uvicorn openai

為了演示方便,此處簡化了一些最佳實踐,下面是一個最基本的 FastAPI 服務實現,文件保存在 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

現在只需創建一個 run.py文件來啟動 FastAPI 服務。

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"
)

接下來運行 run.py。

在瀏覽器中打開 http://127.0.0.1:8080/docs 即可看到 Swagger 界面已經加載并顯示出我們的 Talk API,如下圖所示:

點擊 Try it out, 在 message 里填入一個句子,例如我們這里輸入的”你好”,點擊 Execute按鈕。如果沒有問題應該能得到下面的響應結果:

OK,到這里我們的后臺服務就已經準備好了。

UI界面

接下來我們做一個基于VUE 的UI 界面來實現聊天窗口。要實現基于VUE的聊天界面,需要執行以下步驟:

下面是一個示例 Chat.vue 文件的基本代碼:

<template>
<div>
<div v-for="(message, index) in messages" :key="index">
<div v-if="message.isBot">{{ message.content }}</div>
<div v-else>{{ message.content }}</div>
</div>
<input v-model="message" type="text" placeholder="Type your message here...">
<button @click="sendMessage">Send</button>
</div>
</template>

<script>
import axios from 'axios'

export default {
name: “ChatView”,
data() {
return {
message: '',
messages: [],
}
},
methods: {
async sendMessage() {
const url = 'http://127.0.0.1:8080/chatbot/talk'
const data = { message: this.message }
const response = await axios.post(url, data)
this.messages.push({ content: this.message, isBot: false })
this.messages.push({ content: response.data.content, isBot: true })
this.message = ''
},
},
}
</script>

在這個示例中,messages 是一個數組,它用于存儲聊天記錄。

sendMessage 方法將新消息添加到 messages 數組中,并使用 Axios 發送消息并更新響應的數據屬性。

最后,它清空了 message 數據屬性,以便用戶可以輸入下一個消息。

在模板中,我們使用 v-for 循環遍歷 messages 數組,并根據 isBot 數據屬性來判斷消息是用戶的消息還是聊天機器人的消息。

運行

最后,要在瀏覽器中運行 Vue 應用程序,需要執行以下步驟。

注意:確保已經安裝了 Node.js 和 npm,這將使我們能夠使用 Vue 的命令行工具來創建和管理的項目。

(1)打開命令行終端,導航到項目目錄,并使用以下命令安裝:

npm install -g cnpm --registry=https://registry.npmmirror.com
cnpm install -g @vue/cli

(2)使用以下命令創建一個新的 Vue 項目:

vue create my-chat-app

這將提示選擇一些選項來配置我們的項目,例如要使用哪個包管理器,要使用哪些插件等等。

可以根據需求進行選擇,稍等片刻項目即可創建成功,如下圖所示:

(3)進入 my-chat-app 目錄,安裝 Axios,可以使用以下命令:

cnpm install axios --save

打開創建的項目文件夾,將 Chat.vue 組件添加到 src/components 文件夾中。

打開 src/App.vue 文件,并將以下代碼添加到模板中:

<template>
<div>
<Chat />
</div>
</template>

<script>
import Chat from './components/Chat.vue'

export default {
name: 'App',
components: {
Chat,
},
}
</script>

這將把 Chat 組件添加到 App.vue 模板中,以便您可以在瀏覽器中查看聊天界面。

(4)在命令行終端中運行以下命令啟動開發服務器:

npm run serve

如上圖所示,Web Server 已經啟動完畢,用瀏覽器打開 http://localhost:8081/ 可以看到一個基本的聊天窗口,當然這里只有一個簡單的示例來展示基本操作:

文章轉自微信公眾號@51Testing軟件測試網

上一篇:

一個完整、優雅的微信API接口,?打造微信機器人自動聊天

下一篇:

使用?Golang?構建你的?LLM?API
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費