📖 Nội dung bài học
Tóm tắt
Sau khi Claude yêu cầu một lời gọi tool, bạn cần thực thi hàm và gửi kết quả trở lại. Điều này hoàn thành 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 Tool
Khi Claude phản hồi bằng một khối tool use, bạn trích xuất các tham số đầu vào và gọi hàm của mình. Đây là cách truy cập các tham số của tool:
response.content[1].input
Điều này cung cấp cho bạn một dictionary chứa các đối số mà Claude muốn truyền vào hàm của bạn. Vì hàm của bạn mong đợi các tham số keyword thay vì một dictionary, bạn sử dụng cú pháp unpacking của Python:
get_current_datetime(**response.content[1].input)
Hình ảnh: Trích xuất tham số đầu vào từ phản hồi của Claude.
Khối Tool Result
Sau khi chạy hàm tool, bạn cần gửi kết quả trở lại Claude bằng cách sử dụng một khối tool result. Khối này nằm trong một tin nhắn người dùng và cho Claude biết điều gì đã xảy ra khi bạn thực thi tool.
Hình ảnh: Gửi kết quả tool trở lại Claude.
Khối tool result có một số thuộc tính quan trọng:
- tool_use_id - Phải khớp với id của khối ToolUse mà ToolResult này tương ứng
- content - Đầu ra từ việc chạy tool của bạn, được serialize thành chuỗi
- is_error - True nếu có lỗi xảy ra
Xử lý nhiều lời gọi Tool
Claude có thể yêu cầu nhiều lời 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 mấy và 30 + 30 bằng mấy?", Claude có thể phản hồi bằng hai khối ToolUse riêng biệt.
Hình ảnh: Claude yêu cầu nhiều lời gọi tool.
Mỗi lời gọi tool nhận 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ả. Điều này đảm bảo Claude biết kết quả nào tương ứng với yêu cầu nào, ngay cả khi các kết quả đến theo thứ tự khác nhau.
Hình ảnh: Gửi lại nhiều kết quả tool.
Xây dựng yêu cầu tiếp theo
Yêu cầu tiếp theo của bạn gửi đến 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. Đây là cấu trúc:
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": response.content[1].id,
"content": "15:04:22",
"is_error": False
}]
})
Lịch sử tin nhắn hoàn chỉnh hiện chứa:
- Tin nhắn người dùng ban đầu
- Tin nhắn trợ lý với khối tool use
- Tin nhắn người dùng với khối tool result
Thực hiện yêu cầu cuối cùng
Khi gửi yêu cầu tiếp theo, bạn vẫn phải bao gồm schema của tool mặc dù bạn không mong đợi Claude thực hiện một lời gọi tool khác. Claude cần schema để hiểu các tham chiếu tool trong lịch sử hội thoại của bạn.
client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema]
)
Hình ảnh: Gửi yêu cầu cuối cùng với schema của tool.
Sau đó, Claude sẽ phản hồi bằng một tin nhắn cuối cùng tích hợp các kết quả tool vào một phản hồi tự nhiên cho người dùng. Quy trình tool use hiện đã hoàn tất - bạn đã thành công giúp Claude truy cập thông tin thời gian thực thông qua hàm tùy chỉnh của mình.
🔁 Bài học liên quan
- Bài tiếp: Multi-turn conversations with tools
- Bài trước: Handling message blocks
- Cùng section: Making a request · Multi-Turn conversations · Chat exercise
- Thuộc lộ trình: Path C
- Docs tham khảo: Glossary · Skills atlas · By use-case
📚 Nguồn & ghi nhận
- Bài học gốc Anthropic Academy: https://anthropic.skilljar.com/claude-with-the-anthropic-api/287752
- © 2025 Anthropic. Chỉ dùng cho mục đích giáo dục, fair-use.
- Crawl: 2026-04-23 · Chuẩn hoá: 2026-05-01