处理 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...