APIの背後でエージェントを提供する
認証、リクエスト検証、SSEまたはWebSocketsによるストリーミングを備えたFastAPIでエージェントをラップします。
「APIの背後でエージェントを提供する」はCoddyKit上の無料AI Agentsレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Agents学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Agentsコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
ノートブックからサービスへ
ノートブックで動作するエージェントは出発点にすぎません。リリースするには、他のサービスから呼び出せるHTTP APIでラップします。
FastAPI Skeleton
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class AgentRequest(BaseModel):
query: str
user_id: str
class AgentResponse(BaseModel):
answer: str
trace_id: str
@app.post('/agents/qa', response_model=AgentResponse)
def qa(req: AgentRequest):
trace_id = run_agent(req.query, req.user_id)
return AgentResponse(answer=result.answer, trace_id=trace_id)認証
すべてのエージェントエンドポイントで認証が必要です。呼び出し元の種類に応じて、APIキーまたはOAuthを使用します。
from fastapi import Header, HTTPException
def require_api_key(api_key: str = Header(alias='X-API-Key')):
if not is_valid(api_key):
raise HTTPException(401, 'Invalid API key')
return api_key
@app.post('/agents/qa')
def qa(req: AgentRequest, key=Depends(require_api_key)):
...レスポンスのストリーミング
チャットUIでは、SSEでトークンをストリーミングします。
from fastapi.responses import StreamingResponse
@app.post('/agents/qa/stream')
def qa_stream(req: AgentRequest):
def gen():
for chunk in stream_agent(req.query):
yield f'data: {chunk}\n\n'
yield 'data: [DONE]\n\n'
return StreamingResponse(gen(), media_type='text/event-stream')リクエストのバリデーション
Pydanticは型と基本的なバリデーションを適用します。必要に応じてカスタムバリデーションを追加してください。
from pydantic import Field
class AgentRequest(BaseModel):
query: str = Field(min_length=1, max_length=10_000)
user_id: str
options: dict = {}エラーハンドリング
例外を適切なHTTPレスポンスにマッピングします。
from fastapi import HTTPException
@app.exception_handler(BudgetExceeded)
def budget_handler(req, exc):
return JSONResponse({'error': 'budget-exceeded'}, status_code=429)
@app.exception_handler(Exception)
def catch_all(req, exc):
log.exception('Unhandled')
return JSONResponse({'error': 'internal', 'trace_id': get_trace_id()}, status_code=500)並行実行
FastAPIはデフォルトでasyncを使用します。CPUバウンドのエージェント(まれ)やブロッキングするSDKでは、非同期クライアントを使用してください。
from openai import AsyncOpenAI
client = AsyncOpenAI()
async def run_agent_async(query):
return await client.chat.completions.create(...)Health and Readiness Endpoints
@app.get('/healthz')
def healthz():
return {'status': 'ok'}
@app.get('/readyz')
def readyz():
if not vector_db.is_healthy():
raise HTTPException(503)
return {'status': 'ready'}Containerise
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ['uvicorn', 'main:app', '--host', '0.0.0.0', '--port', '8080']複数のワーカーで実行する
本番環境ではUvicorn + Gunicornを使用します。
gunicorn -k uvicorn.workers.UvicornWorker -w 4 main:appリバースプロキシ
TLS、gzip、IP許可リストを利用するには、前段にNginxまたはCaddyを配置してください。
Logging Structured Output
import structlog
log = structlog.get_logger()
@app.middleware('http')
async def log_requests(request, call_next):
response = await call_next(request)
log.info('http', method=request.method, path=request.url.path, status=response.status_code)
return responseCORS for Browser Clients
from fastapi.middleware.cors import CORSMiddleware
app.add_middleware(
CORSMiddleware,
allow_origins=['https://app.example.com'],
allow_methods=['*'], allow_headers=['*']
)本番環境チェックリスト項目
本番環境のエージェントAPIに必須なのはどれですか。
まとめ
FastAPI + Pydantic + 非同期クライアント + ストリーミング + 認証 + 構造化ログ + ヘルスプローブ。これが本番環境に必要な最小構成です。
よくある質問
「APIの背後でエージェントを提供する」レッスンは無料ですか?
はい。「APIの背後でエージェントを提供する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Agentsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Agentsコースには全4レッスンが含まれています。
「APIの背後でエージェントを提供する」で何を学びますか?
認証、リクエスト検証、SSEまたはWebSocketsによるストリーミングを備えたFastAPIでエージェントをラップします。 ブラウザで直接実行するハンズオンコードでAI Agentsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Agentsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Agentsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「APIの背後でエージェントを提供する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Agentsレッスンでコードを書いて実行できますか?
はい。すべてのAI Agentsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- APIの背後でエージェントを提供する
- 非同期ワークフローとバックグラウンドジョブ
- レート制限とクォータ管理
- エージェントのBlue-GreenおよびCanaryデプロイ