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

レッスン 17: エージェントを本番環境にデプロイする — FastAPI、Docker、クラウド

FastAPI を使用してエージェントを API にラップします。 Dockerize、CI/CD パイプライン。クラウド (AWS/GCP) にデプロイします。スケーリング戦略、セッション管理、キャッシュ。リアルタイムのエージェント チャット用の WebSocket。

🧠 AI と ML — レッスン 16 レッスン 17: エージェントを実稼働環境にデプロイする — FastAPI、Docker、クラウド

AI エージェントの構築: ゼロから本番環境まで

パート 6: 本番環境と実際のデプロイメント

xdev.asia

はじめに

ノートブックで実行されているエージェント ≠ 実稼働環境で実行されているエージェント。この記事では、ラップ エージェントから 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. ドッカー

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、鉄道
  • セッション管理とスケーリングが重要な課題

演習

  1. SimpleAgent を FastAPI アプリにラップする
  2. Docker化してローカルでテストする
  3. WebSocketストリーミングの実装
  4. Railway または Cloud Run へのデプロイ