iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
生成式 AI

AI的雲上漫遊系列 第 12

Day12 FastAPI 實作 - LLM服務串接

  • 分享至 

  • xImage
  •  

有了FastAPI的概念之後,我們就光速的把聊天功能寫成API吧!

畫圖來呈現一些User使用的行為!
https://ithelp.ithome.com.tw/upload/images/20240913/201060947trMvimAmr.png

這個API實現了以下功能:

  1. 使用FastAPI創建了一個Web應用。
  2. 利用LangChain庫初始化了OpenAI語言模型和對話鏈。
  3. 定義了一個/chatendpoint,接收用戶消息並返回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的方式很像呢~

但是更符合我們一般自己做系統會輸入的場景!


上一篇
Day11 FastAPI 介紹
下一篇
Day13 FastAPI 實作 - RAG配置
系列文
AI的雲上漫遊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言