📖 Nội dung bài học
[
chi tiết
2
tải về
Tóm tắt
Trước đó trong khóa học này, chúng ta đã tìm hiểu cách lấy đầu ra có cấu trúc (structured output) từ Claude bằng message pre-fill và stop sequence. Mặc dù cách tiếp cận đó hoạt động tốt và dễ thiết lập, chúng ta có thể nhận được kết quả đáng tin cậy hơn bằng cách sử dụng tool. Phương pháp này phức tạp hơn để triển khai, nhưng nó mang lại tính nhất quán tốt hơn khi trích xuất dữ liệu có cấu trúc như JSON.
Tại sao nên học cả hai cách tiếp cận?
Bạn có thể thắc mắc tại sao chúng ta không bắt đầu luôn với tool nếu chúng đáng tin cậy hơn. Câu trả lời rất đơn giản: tool yêu cầu thiết lập và độ phức tạp cao hơn đáng kể. Việc nắm vững cả hai kỹ thuật giúp bạn linh hoạt hơn - đôi khi bạn sẽ muốn cách tiếp cận dựa trên prompt nhanh chóng, lúc khác bạn lại cần độ tin cậy mà tool cung cấp.
Cách hoạt động của đầu ra có cấu trúc dựa trên Tool
Khái niệm cốt lõi rất đơn giản: thay vì yêu cầu Claude định dạng phản hồi dưới dạng JSON, bạn tạo một tool có các tham số đầu vào (input parameters) khớp chính xác với cấu trúc dữ liệu bạn muốn trích xuất. Sau đó, Claude sẽ "gọi" tool này với dữ liệu đã trích xuất làm đối số.

Quy trình như sau:
- Viết một JSON schema mô tả cấu trúc dữ liệu bạn muốn.
- Tạo một tool với schema đó làm đặc tả đầu vào (input specification).
- Gửi dữ liệu và schema của tool cho Claude.
- Ép buộc Claude sử dụng tool bằng tham số
toolChoice. - Trích xuất dữ liệu có cấu trúc từ các đối số của lệnh gọi tool (tool call arguments).

Luồng xử lý sẽ như thế này: server của bạn gửi một prompt yêu cầu Claude phân tích dữ liệu và gọi một tool cụ thể. Claude phản hồi bằng một tin nhắn tool use chứa dữ liệu JSON đã trích xuất. Tại thời điểm đó, bạn chỉ cần lấy dữ liệu và kết thúc hội thoại - không cần thực hiện thêm bước tiếp theo nào.
Kiểm soát việc sử dụng Tool
Khi sử dụng tool để lấy đầu ra có cấu trúc, bạn muốn đảm bảo rằng Claude chắc chắn sẽ sử dụng tool trích xuất của bạn. Tham số toolChoice cung cấp cho bạn ba tùy chọn:

{"toolChoice": {"auto": {}}}- Model tự quyết định xem có cần sử dụng tool hay không (mặc định).{"toolChoice": {"any": {}}}- Model bắt buộc phải sử dụng một tool, nhưng có thể chọn tool nào.{"toolChoice": {"tool": {"name": "tool-name"}}}- Model bắt buộc phải sử dụng tool được chỉ định.
Đối với đầu ra có cấu trúc, bạn hầu như luôn muốn chọn tùy chọn thứ ba để đảm bảo Claude sử dụng đúng tool trích xuất của bạn.
Ví dụ thực tế
Giả sử bạn muốn trích xuất tiêu đề, tác giả và các chủ đề chính từ một bài báo. Đầu tiên, bạn sẽ tạo một tool schema:
article_details_schema = {
"toolSpec": {
"name": "article_details",
"description": "Trích xuất thông tin chính từ một bài báo",
"inputSchema": {
"json": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Tiêu đề của bài báo"
},
"author": {
"type": "string",
"description": "Tên tác giả"
},
"topics": {
"type": "array",
"items": {"type": "string"},
"description": "Danh sách các chủ đề chính được đề cập"
}
},
"required": ["title", "author", "topics"]
}
}
}
}
Sau đó, bạn gọi Claude với dữ liệu của mình và ép buộc nó sử dụng tool:
messages = []
add_user_message(messages, f"""
Hãy phân tích bài báo dưới đây và trích xuất các dữ liệu chính. Sau đó gọi tool article_details.
<article_text>
{article_text}
</article_text>
""")
result = chat(messages, tools=[article_details_schema], tool_choice="article_details")
Claude sẽ phản hồi bằng một tin nhắn tool use chứa dữ liệu đã trích xuất theo đúng định dạng bạn đã chỉ định. Các đối số của lệnh gọi tool sẽ chứa dữ liệu JSON có cấu trúc, sẵn sàng để sử dụng trong ứng dụng của bạn.
Lợi ích chính
- Đáng tin cậy hơn so với việc trích xuất dựa trên prompt.
- Cấu trúc được đảm bảo khớp với schema của bạn.
- Không cần dùng message pre-fill hay stop sequence.
- Xác thực tích hợp sẵn thông qua tool schema.
Sự đánh đổi chính là độ phức tạp - bạn cần viết schema chi tiết và xử lý các phản hồi của tool. Nhưng khi bạn cần đầu ra có cấu trúc nhất quán và đáng tin cậy, tool use là lựa chọn tối ưu.
Tải về
🔁 Bài học liên quan
- Bài tiếp: Flexible tool extraction
- Bài trước: Batch tool use
- Cùng section: Overview of Claude Models · Accessing the API · Making a request
- 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-in-amazon-bedrock/276765
- © 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