Implementarea gestionării limitelor de rată
TrailBlaze, o platformă de rezervări pentru turism de aventură bazată pe inteligență artificială, a dezvoltat recent un asistent de chat care primește un aflux de întrebări despre itinerarii ori de câte ori apar oferte noi de zbor. Vei construi o funcție ajutătoare care gestionează limitarea de rată (throttling) din Bedrock prin adăugarea unui backoff exponențial.
Bibliotecile json, time și boto3 sunt preîncărcate. Clientul bedrock și model_id sunt, de asemenea, preîncărcate.
Acest exercițiu face parte din cursul
Introducere în Amazon Bedrock
Instrucțiuni pentru exercițiu
- Completează șirul de caractere al cererii API cu promptul.
- Implementează backoff-ul exponențial.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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."))