有了FastAPI的概念之後,我們就光速的把聊天功能寫成API吧!
畫圖來呈現一些User使用的行為!
這個API實現了以下功能:
/chat
endpoint,接收用戶消息並返回LLM的回覆。以下為程式碼:
from fastapi import FastAPI, HTTPException
import os
from langchain_openai import ChatOpenAI
from langchain_core.prompts import PromptTemplate
app = FastAPI()
OPENAI_API_KEY = os.getenv('OPENAI_API_KEY')
@app.post("/chat")
async def chat(message: str):
prompt = PromptTemplate.from_template("{assistant} 幫我回答以下問題 {input}:\n")
llm = ChatOpenAI(model='gpt-4o-mini')
try:
chain = prompt | llm
response = chain.invoke(
{
"assistant": "你是專業的工程師",
"input": message,
}
)
return {"response": response.content}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
快速地把程式碼review一遍!
使用 @app.post("/chat")
裝飾器定義了一個POST請求的API端點,路徑為 "/chat"。
接收用戶輸入:
函數 chat(message: str)
接收一個名為 message 的字符串參數,這是用戶的輸入。
創建提示模板:
使用 PromptTemplate.from_template()
創建一個提示模板,格式為 "{assistant} 幫我回答以下問題 {input}:\n"
。
初始化語言模型:
使用 ChatOpenAI(model='gpt-4o-mini')
初始化一個 ChatGPT 模型實例。
創建處理鏈:
使用 chain = prompt | llm
創建一個處理鏈,將提示模板和語言模型串聯起來。
調用模型:
使用 chain.invoke()
方法調用處理鏈,傳入兩個參數提示詞與輸入詞。
是不是跟一般的使用jupyter或是console的方式很像呢~
但是更符合我們一般自己做系統會輸入的場景!