Chuyển đến nội dung chính

第 17 課:將代理部署到生產環境 - FastAPI、Docker 和雲端

使用 FastAPI 將代理程式包裝到 API 中。 Dockerize、CI/CD 管道。部署到雲端 (AWS/GCP)。擴展策略、會話管理、快取。用於即時代理聊天的 WebSocket。

🧠 人工智慧與機器學習 — 第 16 課 第 17 課:將代理部署到生產環境 — FastAPI、Docker 與雲端

建構 AI 代理:從零到生產

第 6 部分:生產與實際部署

亞洲開發網

簡介

在筆記本中運行的代理≠在生產中運行的代理。本文涵蓋了從包裝代理到 API → 容器化 → 部署 → 擴充的整個管道。


1.FastAPI 包裝器

from fastapi import FastAPI, WebSocket
from pydantic import BaseModel

app = FastAPI()

class AgentRequest(BaseModel):
    message: str
    session_id: str = None

@app.post("/chat")
async def chat(request: AgentRequest):
    agent = get_or_create_agent(request.session_id)
    response = await agent.run(request.message)
    return {"response": response, "session_id": agent.session_id}

@app.websocket("/ws/chat")
async def websocket_chat(websocket: WebSocket):
    await websocket.accept()
    agent = create_agent()
    while True:
        data = await websocket.receive_text()
        async for chunk in agent.stream(data):
            await websocket.send_text(chunk)

2. Docker

FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]

3. 擴展考慮因素

  • 有狀態代理的會話關聯性
  • Redis 用於共享狀態
  • 基於佇列的長時間運行任務處理
  • 每個使用者/會話的成本預算

總結

  • FastAPI + WebSocket 用於即時代理 API
  • 用於可重複部署的 Docker
  • 雲端部署:AWS ECS、GCP Cloud Run、Railway
  • 會話管理和擴展是關鍵挑戰

練習

  1. 將SimpleAgent封裝到FastAPI應用程式中
  2. Docker化並在本地測試
  3. 實現WebSocket串流
  4. 部署到Railway或Cloud Run