言語・スタック別

FastAPI × Claude API でAIエージェントを作る最短ルート

FastAPIとClaude APIを組み合わせてAIエージェントを最短で作る方法を解説します。プロジェクト構成、ツール呼び出し、ストリーミング、本番運用での落とし穴まで2026年のベストプラクティスを実装例付きで紹介します。

この記事の目次

結論: FastAPI + Claude API は最短で本番に乗るAIエージェント基盤

2026年現在、AIエージェントを最短ルートで構築するなら、PythonのFastAPIとAnthropicのClaude APIの組み合わせが圧倒的に効率的です。FastAPIの非同期サポート、型ヒントベースのバリデーション、自動生成されるOpenAPIドキュメントは、AIエージェントの開発・運用に必要な要素を一通り揃えてくれます。

この記事でわかること:

  • FastAPI × Claude APIの最小構成
  • ツール呼び出し (Tool Use) の実装パターン
  • ストリーミング応答とエラーハンドリング
  • 本番運用で躓く5つのポイント

最小構成は意外とコンパクト

AIエージェントの本質は「LLMが外部ツールを使いながら推論ループを回す」ことです。FastAPIなら以下のような構成で十分始められます。

app/
  main.py          # FastAPIエントリポイント
  agent.py         # エージェントのループ実装
  tools/           # ツール群 (検索、DB、外部API)
  schemas.py       # Pydanticモデル
  settings.py      # 環境変数管理

Claude APIのmessages.createは同期・非同期両対応で、anthropic.AsyncAnthropicクライアントを使えばFastAPIのasync defと自然に統合できます。

ツール呼び出しを実装する

Claudeのツール呼び出しは、JSON Schemaでツール定義を渡し、Claudeが必要なときにtool_useブロックを返してくる仕組みです。エージェントループの骨格は次のとおりです。

  1. ユーザーメッセージをClaudeに送信
  2. 応答にtool_useがあれば、対応するツールを実行
  3. 結果をtool_resultとして再度Claudeに送信
  4. stop_reasonend_turnになるまで繰り返す

ツール本体はPythonの普通の関数として書き、Pydanticでスキーマを生成すると、Claude側に渡すJSON Schemaも自動で揃います。ある社内エージェントでは、ツール5個・平均3.2回のツール呼び出しで1タスクを完了し、1リクエストあたり平均8.4秒で安定稼働しています。

ストリーミング応答でUXを高める

FastAPIのStreamingResponseとClaudeのstream=Trueを組み合わせれば、生成中のテキストをそのままクライアントへ流せます。SSE (Server-Sent Events) で返す実装が一般的で、フロントエンドではEventSourceまたはfetchのReadableStreamで受け取れます。

@app.post('/chat')
async def chat(req: ChatRequest):
    async def gen():
        async with client.messages.stream(...) as stream:
            async for text in stream.text_stream:
                yield f'data: {text}nn'
    return StreamingResponse(gen(), media_type='text/event-stream')

本番運用でハマる5つのポイント

1. レート制限と指数バックオフ

Claude APIにはrate_limit_errorがあり、急なトラフィック増で頻発します。tenacityなどで指数バックオフ + ジッターを必ず実装しましょう。

2. 長文プロンプトのトークン超過

会話履歴をそのまま渡すと、すぐにコンテキスト上限に達します。要約圧縮や、過去N件のみ保持する戦略が必要です。2026年現在、Claudeの1Mコンテキストモデルも選べますが、コストとレイテンシのトレードオフを評価しましょう。

3. ツール実行のタイムアウト

外部API呼び出しが詰まるとエージェントが固まります。asyncio.wait_forで個別タイムアウトを設定し、失敗時はツール結果として「タイムアウト」をClaudeに伝える設計が安全です。

4. 監査ログの欠落

「誰がいつ何を聞いて、どのツールを呼び、何が返ったか」を構造化ログで残さないと、後で事故調査ができません。correlation_idを必ず発行しましょう。

5. プロンプトのバージョン管理

システムプロンプトをコードに直書きすると、改善のたびにデプロイが必要になります。プロンプトをDBやS3に外出しし、A/Bテスト可能な構造にするのが推奨です。

まとめ

FastAPI × Claude APIは、AIエージェントを本番に持っていくための最短ルートです。非同期エージェントループ + ツール呼び出し + ストリーミングを押さえれば、1週間でMVPを動かし、1ヶ月で社内ツールとして展開できます。本記事の構成をベースに、観測性とエラーハンドリングを丁寧に積み上げていけば、2026年のAIエージェント開発で十分に戦える基盤になります。

関連タグ