Mise en œuvre de la gestion des limites de débit
TrailBlaze, une plateforme de réservation de voyages d'aventure alimentée par l'IA, a récemment développé un assistant de chat qui reçoit un grand nombre de questions sur les itinéraires dès que de nouvelles offres de vols sont disponibles. Vous allez créer une fonction d'assistance qui gère la limitation de Bedrock en ajoutant un délai exponentiel.
Les bibliothèques json
, time
et boto3
sont préchargées. Le client bedrock
et model_id
ont également été préchargés.
Cet exercice fait partie du cours
Introduction à Amazon Bedrock
Instructions
- Veuillez compléter la chaîne de requête API avec l'invite.
- Mettre en œuvre un délai exponentiel.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
def smart_retry(prompt, max_attempts=3):
base_delay = 0.5
for attempt in range(max_attempts):
try:
# Complete the API request string with the prompt
response = bedrock.invoke_model(
modelId=model_id,
body=json.dumps({"anthropic_version": "bedrock-2023-05-31", "max_tokens": 100,
"messages": [{"role": "user", "content": [{"type": "text", "text": ____}]}]}))
return json.loads(response["body"].read().decode())["content"][0]["text"]
except Exception as e:
if "ThrottlingException" in str(e):
# Implement exponential backoff
time.sleep(____)
else: raise e
return "Max retries exceeded"
print(smart_retry("Tell me about hiking in Patagonia."))