Implementare la gestione dei rate limit
TrailBlaze, una piattaforma di prenotazioni di viaggi avventura basata sull'AI, ha appena lanciato un assistente chat che riceve un picco di domande sugli itinerari ogni volta che escono nuove offerte sui voli. Costruirai una funzione helper che gestisce il throttling di Bedrock aggiungendo un backoff esponenziale.
Le librerie json, time e boto3 sono già caricate. Anche il client bedrock e model_id sono già disponibili.
Questo esercizio fa parte del corso
Introduzione ad Amazon Bedrock
Istruzioni dell'esercizio
- Completa la stringa della richiesta API con il prompt.
- Implementa il backoff esponenziale.
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
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."))