iT邦幫忙

2026 iThome 鐵人賽

DAY 6
1
AI 自動化

30 天 AI 自動化實戰:用 n8n、FastAPI 與 Gemini 打造 AI 知識管家系列 第 6

Day 06|FastAPI:替 AI Automation 建立 Processing Service

  • 分享至 

  • xImage
  •  

經過了前面五天的觀念洗禮與藍圖建構,終於要正式進入實作。在把 n8n 裝起來、把 Gemini API 串上去之前,我們要先來打造我們專屬的後端服務:FastAPI。
既然 n8n 裡面有 HTTP Request 節點,也有可以直接呼叫 OpenAI 或 Gemini 的節點,那我為什麼不直接讓 n8n 去抓網頁,然後把抓下來的整坨 HTML 直接丟給 AI 就好?為什麼還要大費周章在中間夾一個自己寫的 FastAPI?如果直接把廣告彈出視窗的原始 HTML,或是排版破碎的 PDF ,諸如此類的東西直接丟給語言模型,會耗大量的 Token,還容易超出 Context Window 的上限。再加上雜訊太多,AI 抓錯重點的機率會大幅提升。因此,我們需要在資料進入 LLM 之前,先把它們處理乾淨。而 FastAPI 在這個系統裡就是扮演這個角色。

建置環境
可以透過 Conda 或 uv 來建立一個乾淨的 Python 環境,避免與電腦裡其他專案的套件打架。這裡使用 Conda

# 建立一個虛擬環境,指定 Python 3.10, <environment> 代換為自己取的環境名稱
conda create -n <environment> python=3.10 -y

# 啟動虛擬環境
conda activate <environment>

在啟動虛擬環境後安裝套件

pip install fastapi uvicorn pydantic
  • fastapi:我們的 Web 框架
  • uvicorn:用來運行 FastAPI 的伺服器
  • pydantic:用來驗證資料格式的工具

在你的專案資料夾下,建立一個 python 檔案,並寫入以下程式碼。我們今天先不接 Gemini,單純模擬文字處理的介面:

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class TextRequest(BaseModel):
    text: str


@app.get("/health")
def health():
    return {"status": "ok"}


@app.post("/summarize")
def summarize(data: TextRequest):
    return {
        "received_text": data.text,
        "message": "FastAPI received the data successfully"
    }

接下來啟動伺服器

uvicorn main:app --reload

看到 Application startup complete. 就代表成功了!可以打開瀏覽器前往測試。我們目前做的都是在本地端,確定本地端可以使用後可以再視需求看要不要讓服務上線。


上一篇
Day 05 | 完整架構圖:我們要打造怎樣的 AI 知識管家
下一篇
Day 07|n8n:Workflow Orchestration 是什麼?
系列文
30 天 AI 自動化實戰:用 n8n、FastAPI 與 Gemini 打造 AI 知識管家16
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言