Bỏ qua đến nội dung chính

Making a request

📖 Nội dung bài học

Summary

Để thực hiện API request đầu tiên tới AWS Bedrock, bạn cần ba thành phần thiết yếu: Bedrock Runtime Client để kết nối với service, Model ID để chỉ định model bạn muốn chạy, và User Message chứa văn bản bạn muốn đưa vào model.

Thiết lập Bedrock Client

Bắt đầu bằng việc tạo một client dùng boto3 để kết nối tới Bedrock runtime service:

import boto3

client = boto3.client("bedrock-runtime", region_name="us-west-2")

Hiểu về Model ID và Tính khả dụng theo khu vực

Đây là điểm có thể gây khó khăn. Không phải model nào cũng có sẵn ở mọi AWS region. Nếu bạn cố chạy một model không tồn tại ở region đã chọn, bạn sẽ nhận được thông báo lỗi khó hiểu rằng model không tồn tại.

Ví dụ, nếu Claude Sonnet có sẵn ở us-west-2 nhưng bạn thực hiện request từ us-east-1, request của bạn sẽ thất bại.

Sử dụng Inference Profiles

Inference profiles giải quyết vấn đề tính khả dụng theo khu vực bằng cách tự động định tuyến request của bạn đến một region nơi model đã chọn thực sự được host.

Thay vì theo dõi model nào ở region nào, bạn có thể dùng inference profile, vốn biết model có sẵn ở nhiều region như us-west-2us-east-2.

Khi bạn thực hiện request bằng inference profile, AWS sẽ tự động định tuyến nó đến đúng region nơi model của bạn tồn tại, ngay cả khi bạn kết nối từ một region khác.

Để tìm inference profile IDs, hãy truy cập AWS Bedrock console và xem mục "Cross-region inference" thay vì sử dụng model ID từ trang model catalog chính.

Copy inference profile ID cho model bạn chọn.

Tạo User Messages

User messages có cấu trúc cụ thể, thoạt nhìn có vẻ phức tạp, nhưng có lý do chính đáng cho việc đó:

user_message = {
    "role": "user",
    "content": [
        {"text": "What's 1+1?"}
    ]
}

content là một list vì một message có thể chứa các loại nội dung khác nhau - văn bản, hình ảnh, hoặc các loại media khác. Cấu trúc này cho phép bạn gửi multimodal requests.

Thực hiện Request

Bây giờ bạn có thể thực hiện API call bằng phương thức converse:

response = client.converse(
    modelId=model_id,
    messages=[user_message]
)

Response chứa nhiều metadata, nhưng để lấy chỉ văn bản được tạo ra, bạn cần điều hướng qua cấu trúc response:

response["output"]["message"]["content"][0]["text"]

Hiểu về Message Types

Có hai loại message chính bạn sẽ làm việc:

  • User messages - Nội dung bạn muốn đưa vào model (role: "user")
  • Assistant messages - Nội dung model đã tạo ra (role: "assistant")

Cả hai loại message đều tuân theo cấu trúc giống nhau với một rolecontent list. Sự nhất quán này giúp dễ dàng xây dựng các cuộc hội thoại bằng cách xen kẽ giữa user và assistant messages.

Assistant message bạn nhận lại từ Bedrock tuân theo định dạng giống hệt user message của bạn, chỉ khác ở role. Cấu trúc chuẩn hóa này giúp việc nối chuỗi nhiều request lại với nhau cho các cuộc hội thoại dài trở nên đơn giản.

Downloads

🔁 Bài học liên quan

📚 Nguồn & ghi nhận

Bài học có hữu ích không?

Góp ý / Báo lỗiPhát hiện sai sót hoặc có ý tưởng cải thiện?