Mettre en place la gestion de la limitation du débit
TrailBlaze, une plateforme de réservation de voyages d'aventure propulsée par l'IA, a récemment lancé un assistant de clavardage qui reçoit une vague de questions d'itinéraires dès que de nouvelles offres de vols sont publiées. Vous allez créer une fonction utilitaire qui gère l'étranglement de Bedrock en ajoutant un repli exponentiel.
Les bibliothèques json, time et boto3 sont déjà chargées. Le client bedrock et model_id sont également préchargés.
Cette activité fait partie du cours
Introduction à Amazon Bedrock
Instructions de l’exercice
- Complétez la chaîne de la requête API avec le prompt.
- Mettez en œuvre le repli exponentiel.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
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."))