簡介
在筆記本中運行的代理≠在生產中運行的代理。本文涵蓋了從包裝代理到 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
- 會話管理和擴展是關鍵挑戰
練習
- 將SimpleAgent封裝到FastAPI應用程式中
- Docker化並在本地測試
- 實現WebSocket串流
- 部署到Railway或Cloud Run