APIレスポンスとエラーの処理

Amazon Bedrock入門

Nikhil Rangarajan

Data Scientist

レート制限の管理

  • 指数バックオフを実装
  • スマートリトライでAPI利用を最適化
def backoff_retry(max_retries=3, 
                  init_delay=1):

for attempt in range(max_retries): try: response = bedrock.invoke_model()
# Retries when we have an exception except Exception as e: if "ThrottlingException" in str(e): # Exponential backoff time.sleep(base_delay * (2 ** attempt))
Amazon Bedrock入門

バッチ応答の処理

  • 複数リクエストを効率的に処理
  • バッチ応答を安全に扱う
  • 最適な性能を維持
def process_batch(prompts, batch=5):
  results = []
  for i in range(0, len(prompts), 
                 batch):
    responses = [invoke_model(p) for p 
                 in prompts[i:i+batch]]
Amazon Bedrock入門

レスポンスの後処理

  • レスポンス構造を検証
  • 本文を読み込み・解析
  • 期待キーを確認
  • データ品質を一貫して担保
def postprocess_response(response):

data=json.loads(response['body'] .read())
if 'content' in data: return data['content'].strip()
return None
Amazon Bedrock入門

エラー復旧

  • フォールバック戦略を実装
  • モデル固有のエラーを処理
  • 本番レベルの信頼性を確保
try:
    response = bedrock.invoke_model(modelId="anthropic.claude-3-5-sonnet-v2:0", 
        body=json.dumps(request_body))

except ClientError: response = bedrock.invoke_model(modelId="amazon.nova-lite-v1:0")
Amazon Bedrock入門

Passons à la pratique !

Amazon Bedrock入門

Preparing Video For Download...