Implementera hantering av hastighetsbegränsning
TrailBlaze, en AI-driven bokningsplattform för äventyrsresor, har nyligen utvecklat en chattassistent som får en ström av frågor om reseplaner varje gång nya flygerbjudanden dyker upp. Du ska bygga en hjälpfunktion som hanterar Bedrocks hastighetsbegränsning genom att lägga till exponentiell backoff.
Biblioteken json, time och boto3 är förinstallerade. Klienten bedrock och model_id är också förinstallerade.
Den här övningen är en del av kursen
Introduktion till Amazon Bedrock
Övningsinstruktioner
- Komplettera API-anropssträngen med prompten.
- Implementera exponentiell backoff.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
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."))