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

Handling message blocks

📖 Nội dung bài học

Gia đình phông chữ

Tóm tắt

Khi làm việc với chức năng tool của Claude, bạn sẽ gặp một cấu trúc phản hồi mới, khác với các phản hồi văn bản đơn giản bạn đã thấy trước đây. Thay vì chỉ nhận lại một khối văn bản duy nhất, Claude giờ đây có thể trả về các tin nhắn đa khối, chứa cả thông tin văn bản và tool use.

Thực hiện các cuộc gọi API hỗ trợ Tool

Để cho phép Claude dùng tools, bạn cần đưa tham số tools vào cuộc gọi API của bạn. Đây là cách cấu trúc request:

messages = []
messages.append({
    "role": "user",
    "content": "What is the exact time, formatted as HH:MM:SS?"
})

response = client.messages.create(
    model=model,
    max_tokens=1000,
    messages=messages,
    tools=[get_current_datetime_schema],
)

Tham số tools nhận một danh sách các lược đồ JSON mô tả các hàm có sẵn mà Claude có thể gọi.

Hiểu các tin nhắn đa khối

Khi Claude quyết định dùng một tool, nó trả về một tin nhắn assistant với nhiều khối trong danh sách content. Đây là một thay đổi đáng kể so với các phản hồi chỉ có văn bản đơn giản mà bạn đã làm việc trước đây.

Một tin nhắn đa khối thường chứa:

  • Khối văn bản - Văn bản dễ đọc giải thích những gì Claude đang làm (ví dụ: "Tôi có thể giúp bạn tìm ra thời gian hiện tại. Để tôi tìm thông tin đó cho bạn")
  • Khối ToolUse - Hướng dẫn cho code của bạn về tool nào để gọi và các tham số nào để dùng

Khối ToolUse bao gồm:

  • ID để theo dõi tool call
  • Tên của hàm để gọi (ví dụ: "get_current_datetime")
  • Tham số đầu vào được định dạng theo lược đồ JSON của bạn
  • Ký hiệu loại "tool_use"

Xử lý lịch sử tin nhắn với nội dung đa khối

Đây là phần quan trọng: Claude không lưu trữ lịch sử hội thoại, vì vậy bạn phải quản lý nó thủ công. Khi làm việc với các phản hồi tool, bạn cần giữ nguyên toàn bộ cấu trúc nội dung, bao gồm tất cả các khối.

Thay vì chỉ trích xuất văn bản, bạn cần thêm toàn bộ nội dung phản hồi:

messages.append({
    "role": "assistant",
    "content": response.content
})

Điều này giữ lại cả khối văn bản và khối tool use, duy trì ngữ cảnh hội thoại đầy đủ cho các cuộc gọi API trong tương lai.

Quy trình hoàn chỉnh

Quá trình dùng tool tuân theo mẫu sau:

  1. Gửi tin nhắn người dùng với lược đồ tool đến Claude
  2. Nhận tin nhắn assistant đa khối (văn bản + tool use)
  3. Trích xuất thông tin tool call và thực thi hàm
  4. Gửi kết quả tool trở lại Claude với lịch sử tin nhắn đầy đủ
  5. Nhận phản hồi cuối cùng từ Claude

Mỗi bước yêu cầu xử lý cẩn thận cấu trúc tin nhắn để duy trì tính liên tục của hội thoại. Điểm mấu chốt là các cuộc hội thoại hỗ trợ tool liên quan đến các định dạng tin nhắn phức tạp hơn, nhưng nguyên tắc cơ bản về việc duy trì lịch sử tin nhắn đầy đủ vẫn không thay đổi.

1. User message + tool schema

2. Assistant: text block + tool_use block

3. Trích xuất tool info — chạy hàm

4. Gửi tool result + full history

5. Phản hồi cuối từ Vertex Claude

Cập nhật các hàm helper

Nếu bạn đã dùng các hàm helper như add_user_messageadd_assistant_message, bạn sẽ cần cập nhật chúng để xử lý nội dung đa khối. Các phiên bản hiện tại có thể chỉ hỗ trợ các khối văn bản đơn lẻ, nhưng giờ đây chúng cần chứa các cấu trúc nội dung phức tạp hơn, bao gồm cả tool use.

🔁 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?