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

Tools for structured data

📖 Nội dung bài học

Tóm tắt

Khi bạn cần dữ liệu có cấu trúc (structured data) từ Claude, bạn có hai cách tiếp cận chính: các kỹ thuật dựa trên prompt sử dụng message prefill và stop sequences, hoặc một phương pháp mạnh mẽ hơn là sử dụng tool. Mặc dù cách tiếp cận dựa trên prompt dễ thiết lập hơn, nhưng tool cung cấp kết quả đầu ra đáng tin cậy hơn dù có thêm một chút phức tạp.

Tool cho dữ liệu có cấu trúc

Cách tiếp cận dựa trên tool hoạt động bằng cách tạo một JSON schema định nghĩa chính xác cấu trúc dữ liệu bạn muốn trích xuất. Thay vì hy vọng Claude định dạng phản hồi chính xác, về cơ bản bạn đang cung cấp cho Claude một hàm để gọi với các tham số cụ thể khớp với cấu trúc đầu ra mong muốn của bạn.

Quy trình hoạt động như sau:

  • Viết một schema mô tả cấu trúc dữ liệu bạn đang tìm kiếm.
  • Ép Claude sử dụng một tool bằng tham số tool_choice.
  • Trích xuất dữ liệu có cấu trúc từ phản hồi tool use.
  • Không cần cung cấp phản hồi tiếp theo - bạn đã hoàn tất sau khi nhận được dữ liệu.

Ví dụ: nếu bạn muốn trích xuất số dư tài chính và các thông tin chính (key insights) từ một bản sao kê, schema của bạn sẽ định nghĩa chúng lần lượt là một số nguyên (integer) và một mảng các chuỗi (array of strings).

Kiểm soát Tool Use

Một phần quan trọng của kỹ thuật này là đảm bảo Claude thực sự gọi tool của bạn. Bạn có thể kiểm soát hành vi này bằng tham số tool_choice:

  • {"type": "auto"} - Model tự quyết định xem có cần sử dụng tool hay không (mặc định).
  • {"type": "any"} - Model bắt buộc phải sử dụng một tool, nhưng có thể chọn tool nào.
  • {"type": "tool", "name": "TOOL_NAME"} - Model bắt buộc phải sử dụng tool được chỉ định.

Để trích xuất dữ liệu có cấu trúc, bạn thường sẽ muốn tùy chọn thứ ba để đảm bảo Claude gọi đúng tool schema cụ thể của bạn.

Ví dụ triển khai

Giả sử bạn muốn trích xuất tiêu đề, tác giả và các thông tin chính từ một bài báo. Đầu tiên, bạn sẽ tạo một tool schema:

article_summary_schema = {
    "name": "article_summary",
    "description": "Extracts structured data from articles",
    "input_schema": {
        "type": "object",
        "properties": {
            "title": {"type": "string"},
            "author": {"type": "string"},
            "key_insights": {
                "type": "array",
                "items": {"type": "string"}
            }
        }
    }
}

Sau đó, bạn gọi Claude với tool này và ép nó sử dụng:

response = chat(
    messages,
    tools=[article_summary_schema],
    tool_choice={"type": "tool", "name": "article_summary"}
)

Phản hồi sẽ chứa một khối tool use với dữ liệu có cấu trúc của bạn trong trường input. Bạn có thể truy cập trực tiếp:

structured_data = response.content[0].input

Khi nào nên sử dụng mỗi cách tiếp cận

Chọn đầu ra có cấu trúc dựa trên prompt khi bạn cần thứ gì đó nhanh chóng và đơn giản. Sử dụng tool khi bạn cần đảm bảo độ tin cậy và có thể xử lý được sự phức tạp khi thiết lập. Cả hai kỹ thuật đều có giá trị tùy thuộc vào trường hợp sử dụng và yêu cầu cụ thể của bạn.

Tải xuống

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