0Pricing
AI Agents · レッスン

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 response

CORS 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. APIの背後でエージェントを提供する
  2. 非同期ワークフローとバックグラウンドジョブ
  3. レート制限とクォータ管理
  4. エージェントのBlue-GreenおよびCanaryデプロイ
← AI Agentsに戻る