LESSON 06
/ 06
本番運用:エラー処理・レート制限・モニタリング
本コースの最終レッスンでは、Claude API を本番環境で安定稼働させるための実務知識をまとめます。
主要なエラー種別
- 400 Bad Request:パラメータ誤り。入力検証で防ぐ
- 401 Unauthorized:APIキー誤り。シークレット管理を確認
- 429 Rate Limit:レート制限超過。リトライ必要
- 500 系:Anthropic 側障害。指数バックオフでリトライ
- 529 Overloaded:負荷集中。少し待ってリトライ
リトライ戦略
import time
from anthropic import Anthropic, APIStatusError
client = Anthropic()
def call_with_retry(messages, max_retries=5):
for attempt in range(max_retries):
try:
return client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=messages,
)
except APIStatusError as e:
if e.status_code in (429, 500, 502, 503, 504, 529):
wait = 2 ** attempt # 指数バックオフ
time.sleep(wait)
continue
raise
raise RuntimeError("max retries exceeded")
公式SDKは内部でリトライを実装しているため、追加処理は最小限でもOKです。
レート制限の理解
Claude API のレート制限は3つの軸:
- RPM:Requests per minute(1分あたりリクエスト数)
- ITPM:Input tokens per minute
- OTPM:Output tokens per minute
使用ティアごとに上限が異なり、利用実績に応じて自動昇格します。
モニタリングの基本指標
- リクエスト数(成功/失敗)
- p50・p95・p99 レイテンシ
- トークン使用量(入力・出力・キャッシュ)
- 1リクエストあたりコスト
- エラー率(種別ごと)
Anthropic Console でも基本メトリクスは確認できますが、本番ではDatadog/Grafanaなどへ統合が推奨です。
コスト暴走を防ぐ仕組み
- Console で月次予算アラートを設定
- ユーザーごとの使用上限をアプリ側でも実装
- 長すぎる会話履歴を自動切り詰め
- キャッシュヒット率を監視(70%以上が目安)
コース修了おめでとうございます
本コース「Claude API & Claude Code 活用」はこれで完了です。プロンプトエンジニアリング・API活用・エージェント構築・運用設計まで、実務で必要な全領域を一通りカバーしました。あとは作りたいプロダクトを定め、手を動かすのみです。