Mettre en place la gestion de la limitation de débit
TrailBlaze, une plateforme de réservation de voyages d’aventure dopée à l’IA, vient de lancer un assistant de chat qui reçoit un afflux de questions d’itinéraires à chaque nouvelle promo sur les vols. Vous allez créer une fonction utilitaire qui gère la limitation Bedrock en ajoutant un backoff exponentiel.
Les bibliothèques json, time et boto3 sont déjà chargées. Le client bedrock et le model_id sont également préchargés.
Cet exercice fait partie du cours
Introduction à Amazon Bedrock
Instructions
- Complétez la chaîne de requête API avec le prompt.
- Implémentez un backoff 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."))