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

Sending tool results

📖 Nội dung bài học

Tóm tắt

Sau khi Claude yêu cầu một lượt gọi tool (tool call), bạn cần thực thi hàm đó và gửi kết quả ngược lại. Việc này hoàn tất quy trình tool use bằng cách cung cấp cho Claude thông tin mà nó đã yêu cầu.

Chạy hàm của Tool

Khi Claude phản hồi bằng một khối tool use (tool use block), bạn sẽ trích xuất các tham số đầu vào (input parameters) và gọi hàm của mình. Đây là cách truy cập các tham số của tool:


tool_use_block = response.content[1]

input_params = tool_use_block.input

result = get_current_datetime(**input_params)

Dấu sao kép (**) dùng để giải nén dictionary thành các đối số từ khóa (keyword arguments) mà hàm của bạn mong đợi.

Khối Tool Result

Sau khi chạy tool, bạn gửi kết quả lại cho Claude bằng một khối tool result (tool result block). Khối này có một số thuộc tính quan trọng:

  • tool_use_id - Phải khớp với ID từ khối tool use gốc.
  • content - Đầu ra từ hàm tool của bạn, được chuyển đổi thành chuỗi (string).
  • is_error - Đặt thành true nếu có lỗi xảy ra trong quá trình thực thi.

Xử lý nhiều lượt gọi Tool

Claude có thể yêu cầu nhiều lượt gọi tool trong một phản hồi duy nhất. Ví dụ, nếu người dùng hỏi "10 + 10 bằng bao nhiêu và 30 + 30 bằng bao nhiêu?", Claude có thể gửi hai khối tool use riêng biệt:

Mỗi khối tool use nhận được một ID duy nhất, và bạn phải khớp các ID này khi gửi lại kết quả:

Hệ thống ID này đảm bảo Claude có thể khớp chính xác từng kết quả với yêu cầu tương ứng, ngay cả khi các kết quả trả về không theo thứ tự.

Gửi yêu cầu tiếp nối (Follow-up Request)

Yêu cầu tiếp nối của bạn gửi tới Claude phải bao gồm toàn bộ lịch sử hội thoại cộng với kết quả tool mới:

messages.append({
    "role": "user",
    "content": [{
        "type": "tool_result",
        "tool_use_id": response.content[1].id,
        "content": result,
        "is_error": False
    }]
})

Luồng hội thoại sẽ trông như thế này:

Hãy nhớ bao gồm cả tool schema trong yêu cầu tiếp nối, ngay cả khi Claude có thể không cần gọi tool lần nữa. Claude cần schema để hiểu các tham chiếu tool trong lịch sử hội thoại.

Quy trình hoàn chỉnh

Dưới đây là toàn bộ quy trình:

  1. Người dùng đặt câu hỏi yêu cầu tool use.
  2. Claude phản hồi bằng một khối tool use.
  3. Bạn thực thi hàm tool được yêu cầu.
  4. Bạn gửi một yêu cầu tiếp nối kèm theo kết quả tool.
  5. Claude đưa ra câu trả lời cuối cùng bằng cách sử dụng đầu ra của tool.

Yêu cầu cuối cùng bao gồm đầy đủ lịch sử tin nhắn, khối tool result và tool schema. Sau đó, Claude sẽ phản hồi bằng một tin nhắn văn bản thông thường có kết hợp thông tin từ việc thực thi tool của bạn.

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