Claude APIで“実運用らしい”機能を使いこなす
Claude APIは、単にテキストを生成するだけでなく、ストリーミング応答、Tool Use(関数呼び出し)、JSONの構造化出力、Prompt Caching、Batch APIといった実務向け機能を備えています。2025年時点では、チャットUIで試したプロンプトをそのままAPI化するよりも、応答形式・速度・コスト・再現性を設計した実装が重要です。
この記事では、Python中心のコード例で「どう組み込むと実際に使いやすいか」を整理します。SDKの細かな差分は更新されるため、導入時は必ず公式ドキュメントも併読してください。
SSEストリーミング:まずは“待たせない体験”を作る
長めの回答や要約生成では、全文完成を待つより、Server-Sent Events(SSE)で逐次表示した方がUXが良くなります。チャット、レビュー支援、議事録生成では特に有効です。
基本実装の考え方
- バックエンドでClaude APIのストリームを受け取る
- フロントへそのまま中継、または整形して送る
- 断片テキストだけでなく、完了イベント・エラーイベントも扱う
from anthropic import Anthropic
client = Anthropic(api_key="YOUR_API_KEY")
with client.messages.stream(
model="claude-sonnet-4-5",
max_tokens=1200,
temperature=0.2,
messages=[
{"role": "user", "content": "SSEストリーミング実装の要点を3つ教えて"}
]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final_message = stream.get_final_message()
実装時のポイントは、断片をそのまま保存しないことです。途中出力には言い直しや未完文が混ざるため、DB保存や監査ログには最終確定テキストを使う方が安全です。
ストリーミングが向くケース・向かないケース
| ケース | 向き不向き | 理由 |
|---|---|---|
| チャットUI | 向く | 体感速度が大きく改善する |
| 長文要約 | 向く | ユーザーが途中から読み始められる |
| JSON構造化出力 | やや注意 | 途中断片は不完全JSONになりやすい |
| バッチ集計 | 向かない | 逐次表示のメリットが薄い |
特に構造化出力を厳密に使う処理では、ストリーミング表示はUI専用、業務処理は最終レスポンス確定後に行う、という分離が実践的です。
Tool Use:外部処理を“モデル任せにしすぎない”
Tool Useは、Claudeが「必要な関数を選んで引数を作る」仕組みです。よくある用途は、社内検索、在庫照会、天気取得、RAG検索、DB問い合わせです。ただし、重要なのはAIに自由実行させることではなく、どのツールを、どの条件で、どこまで許可するかをアプリ側で制御することです。