Implementar la gestión de límites de tasa
TrailBlaze, una plataforma de reservas de viajes de aventura con IA, ha lanzado recientemente un asistente de chat que recibe un pico de preguntas sobre itinerarios cada vez que aparecen nuevas ofertas de vuelos. Vas a crear una función auxiliar que maneje la limitación de Bedrock añadiendo un retroceso exponencial.
Las librerías json, time y boto3 están precargadas. El cliente bedrock y model_id también están precargados.
Este ejercicio forma parte del curso
Introducción a Amazon Bedrock
Instrucciones del ejercicio
- Completa la cadena de la solicitud a la API con el prompt.
- Implementa el retroceso exponencial.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
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."))