Triển khai xử lý giới hạn tốc độ (rate limit)
TrailBlaze, một nền tảng đặt dịch vụ du lịch mạo hiểm dùng AI, gần đây đã phát triển một trợ lý chat và đang nhận làn sóng câu hỏi về lịch trình mỗi khi có ưu đãi vé máy bay mới. Bạn sẽ xây dựng một hàm trợ giúp để xử lý việc Bedrock bị giới hạn thông lượng bằng cách thêm cơ chế exponential backoff.
Các thư viện json, time và boto3 đã được nạp sẵn. bedrock client và model_id cũng đã được nạp sẵn.
Bài tập này là một phần của khóa học
Giới thiệu về Amazon Bedrock
Hướng dẫn bài tập
- Hoàn thiện chuỗi yêu cầu API với prompt.
- Triển khai exponential backoff.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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."))