Thiết Kế Giao Diện Tool
Những điều bạn cần biết
Mô tả tool là cơ chế CHÍNH mà các LLM dùng để lựa chọn tool. Đây không phải là metadata phụ trợ. Đây không phải là một thứ nghĩ thêm sau. Đây LÀ cơ chế. Khi một model nhận được một tập hợp các tool, nó đọc các mô tả để quyết định gọi tool nào. Nếu các mô tả đó tối giản — kiểu như "Truy xuất thông tin khách hàng" — model thiếu ngữ cảnh để phân biệt giữa các tool có mục đích chồng chéo nhau.
Điều Gì Tạo Nên Một Mô Tả Tool Tốt
Một mô tả tool đạt chuẩn production bao gồm năm yếu tố:
- Tool làm gì — mục đích chính của nó, được nêu rõ ràng không mập mờ
- Tool kỳ vọng đầu vào gì — kiểu dữ liệu, định dạng, ràng buộc, và trường bắt buộc so với trường tùy chọn
- Các truy vấn ví dụ mà tool xử lý tốt — các trường hợp sử dụng cụ thể giúp neo giữ sự hiểu biết của model
- Trường hợp biên và giới hạn — những gì tool KHÔNG làm, và điều gì xảy ra khi đầu vào nằm ngoài phạm vi kỳ vọng
- Ranh giới rõ ràng — khi nào dùng tool NÀY so với các tool tương tự trong cùng bộ công cụ
Đây là sự khác biệt giữa một mô tả tối giản và một mô tả đạt chuẩn production:
Tối giản (gây định tuyến sai):
get_customer: "Truy xuất thông tin khách hàng" lookup_order: "Truy xuất chi tiết đơn hàng"
Đạt chuẩn production (lựa chọn đáng tin cậy):
get_customer: "Tra cứu tài khoản khách hàng theo địa chỉ email, số điện thoại, hoặc customer ID. Trả về hồ sơ khách hàng (tên, chi tiết liên hệ, trạng thái tài khoản, hạng thành viên). Dùng cái này khi bạn cần xác minh khách hàng là ai. KHÔNG dùng cho các truy vấn liên quan đến đơn hàng cụ thể — hãy dùng lookup_order cho việc đó."
lookup_order: "Truy xuất chi tiết đơn hàng theo số đơn hàng (định dạng: #NNNNN) hoặc mã theo dõi. Trả về trạng thái đơn hàng, mặt hàng, chi tiết giao hàng, và điều kiện hoàn tiền. Dùng cái này khi khách hàng hỏi về một đơn hàng cụ thể. KHÔNG dùng để xác minh danh tính khách hàng — hãy dùng get_customer cho việc đó."
Phiên bản thứ hai cho model sự phân biệt rõ ràng. Nó biết mỗi tool chấp nhận định danh nào, mỗi tool trả về gì, và quan trọng nhất, khi nào KHÔNG nên dùng mỗi tool.
Vấn Đề Định Tuyến Sai
Hai tool có mô tả chồng chéo hoặc gần giống hệt nhau gây ra sự nhầm lẫn trong lựa chọn. Câu Q2 của kỳ thi trình bày chính xác kịch bản này: get_customer và lookup_order với mô tả tối giản, khiến agent định tuyến "kiểm tra đơn hàng #12345 của tôi" đến sai tool.
Kỳ thi kiểm tra khả năng của bạn trong việc xác định cách khắc phục đúng. Có bốn lựa chọn khả thi, và ba trong số đó là sai:
- Mở rộng mô tả — đúng. Nỗ lực thấp, hiệu quả cao, giải quyết trực tiếp nguyên nhân gốc rễ.
- Ví dụ few-shot — sai. Thêm chi phí token mà không khắc phục lý do model bị nhầm lẫn. Bạn đang điều trị triệu chứng, không phải căn bệnh.
- Bộ phân loại định tuyến (routing classifier) — sai. Bị over-engineer khi làm bước đầu tiên. Bỏ qua khả năng hiểu ngôn ngữ tự nhiên của LLM và thêm độ phức tạp hạ tầng.
- Hợp nhất tool — sai khi là bước đầu tiên. Đây là một lựa chọn kiến trúc hợp lệ về lâu dài, nhưng đòi hỏi nỗ lực đáng kể hơn nhiều so với việc mở rộng mô tả.
Kỳ thi luôn ưu tiên các cách khắc phục nỗ lực thấp, hiệu quả cao. Mô tả tốt hơn trước khi dùng bộ phân loại định tuyến. Quyền truy cập có phạm vi trước khi cấp toàn quyền truy cập. Server cộng đồng trước khi tự xây dựng.
Tách Tool
Các tool đa năng với trách nhiệm rộng tạo ra sự mập mờ. Cách khắc phục là tách chúng thành các tool chuyên biệt theo mục đích, với hợp đồng đầu vào/đầu ra rõ ràng.
Trước khi tách:
analyze_document: "Phân tích một tài liệu và trả về kết quả"
Sau khi tách:
extract_data_points: "Trích xuất các trường dữ liệu có cấu trúc (ngày tháng, số tiền, tên) từ một tài liệu"
summarize_content: "Tạo ra một bản tóm tắt ngắn gọn về các luận điểm và kết luận chính của tài liệu"
verify_claim_against_source: "Kiểm tra xem một tuyên bố cụ thể có được hỗ trợ bởi tài liệu nguồn hay không, trả về bằng chứng ủng hộ/mâu thuẫn"
Mỗi tool kết quả có một mục đích hẹp, được mô tả rõ ràng. Model có thể chọn đúng tool dựa trên nhu cầu thực sự của người dùng.
Đổi Tên Tool Để Rõ Ràng Hơn
Khi hai tool có tên gây nhầm lẫn tương tự nhau, việc đổi tên loại bỏ sự chồng chéo về chức năng ở cấp độ giao diện. Ví dụ, đổi tên analyze_content thành extract_web_results với một mô tả chuyên biệt cho web làm cho mục đích của tool trở nên rõ ràng mà không cần thay đổi cách triển khai của nó.
Tương Tác Với System Prompt
Các chỉ thị nhạy cảm với từ khóa trong system prompt có thể tạo ra các liên kết tool ngoài ý muốn, ghi đè lên các mô tả được viết tốt. Nếu system prompt của bạn nói "luôn kiểm tra thông tin khách hàng trước khi tiếp tục", model có thể liên kết bất kỳ truy vấn nào liên quan đến khách hàng với get_customer bất kể mô tả tool nói gì.
Luôn xem lại system prompt để phát hiện xung đột sau khi cập nhật mô tả tool. Đây là một mẫu lỗi tinh vi mà kỳ thi kiểm tra.
Khái niệm chính
Mô tả tool là cơ chế chính mà các LLM dùng để lựa chọn tool. Khi xảy ra định tuyến sai, cách khắc phục đầu tiên luôn là cải thiện mô tả — không phải thêm ví dụ few-shot, bộ phân loại định tuyến, hay hợp nhất tool.
Bẫy thi
Bẫy thi: Choosing few-shot examples to fix tool misrouting caused by minimal descriptions
Ví dụ few-shot thêm chi phí token mà không giải quyết nguyên nhân gốc rễ. Model bị nhầm lẫn vì các mô tả không phân biệt các tool — hãy khắc phục mô tả trước.
Bẫy thi: Implementing a routing classifier as the first step to fix tool selection
Một bộ phân loại định tuyến bị over-engineer khi làm phản ứng đầu tiên. Nó bỏ qua khả năng hiểu ngôn ngữ tự nhiên của LLM và thêm hạ tầng mà kỳ thi không coi là tương xứng.
Bẫy thi: Consolidating similar tools into one as the first step
Hợp nhất tool là một lựa chọn kiến trúc hợp lệ về lâu dài, nhưng nó đòi hỏi nhiều nỗ lực hơn so với việc mở rộng mô tả. Kỳ thi ưu tiên các bước đầu tiên có nỗ lực thấp, hiệu quả cao.
Bẫy thi: Ignoring system prompt wording after updating tool descriptions
Các chỉ thị nhạy cảm với từ khóa trong system prompt có thể âm thầm ghi đè lên các mô tả tool được viết tốt, tạo ra các liên kết tool ngoài ý muốn.
Tình huống luyện tập
Không tìm thấy câu hỏi luyện tập "q-2-1-001".
Bài tập thực hành
Thiết Kế Mô Tả Tool Để Loại Bỏ Định Tuyến Sai
Bạn sẽ học được gì
- Hiểu rằng mô tả tool là cơ chế chính mà các LLM dùng để lựa chọn tool
- Viết các mô tả đạt chuẩn production với mục đích, đầu vào, ví dụ, trường hợp biên, và ranh giới
- Chẩn đoán định tuyến sai gây ra bởi các mô tả mập mờ hoặc chồng chéo
- Xác định các xung đột trong system prompt ghi đè lên các mô tả tool được viết tốt
Các bước
Vì sao: Tái tạo một kịch bản định tuyến sai trực tiếp giúp xây dựng trực giác về lý do các mô tả tối giản thất bại. Kỳ thi kiểm tra khả năng của bạn trong việc xác định các mô tả mập mờ là nguyên nhân gốc rễ của lỗi lựa chọn tool.
Bạn sẽ thấy: Hai định nghĩa tool được đăng ký với MCP server của bạn, mỗi cái có một mô tả một câu không đề cập đến định dạng đầu vào, truy vấn ví dụ, hay ranh giới.
Vì sao: Định lượng độ chính xác lựa chọn trước và sau khi thay đổi mô tả cho bạn bằng chứng cụ thể về tác động. Kỳ thi kỳ vọng bạn biết rằng chất lượng mô tả ảnh hưởng trực tiếp đến độ tin cậy của việc lựa chọn.
Bạn sẽ thấy: Một bản ghi cho thấy ít nhất 2-3 truy vấn bị định tuyến sai, trong đó model chọn get_customer cho các truy vấn liên quan đến đơn hàng hoặc ngược lại, minh họa vấn đề mập mờ.
Vì sao: Đây là kỹ năng cốt lõi của kỳ thi — cách khắc phục có nỗ lực thấp nhất, hiệu quả cao nhất cho định tuyến sai. Các mô tả đạt chuẩn production bao gồm cả năm yếu tố: mục đích, đầu vào, ví dụ, trường hợp biên, và ranh giới.
Bạn sẽ thấy: Mỗi mô tả tool dài 3-5 câu, nêu rõ ràng các định dạng định danh được chấp nhận, đưa ra các truy vấn ví dụ, và bao gồm một tuyên bố ranh giới như "Do NOT use for order-specific queries — use lookup_order for those."
Vì sao: Đo lường sự cải thiện xác nhận rằng chất lượng mô tả là nguyên nhân gốc rễ. Kỳ thi kỳ vọng bạn hiểu rằng các mô tả tốt hơn tạo ra sự lựa chọn tốt hơn có thể đo lường được mà không cần bất kỳ thay đổi kiến trúc nào.
Bạn sẽ thấy: Độ chính xác lựa chọn cải thiện lên 9/10 hoặc 10/10 chính xác, với các truy vấn từng bị định tuyến sai giờ đây đến đúng tool. Một so sánh trước/sau rõ ràng cho thấy sự cải thiện.
Vì sao: Xung đột system prompt là một mẫu lỗi tinh vi mà kỳ thi kiểm tra. Các từ khóa như "always check customer details" có thể tạo ra các liên kết tool ngoài ý muốn, ghi đè lên ngay cả các mô tả được viết tốt.
Bạn sẽ thấy: Một danh sách các cụm từ nhạy cảm với từ khóa trong system prompt của bạn có thể kích hoạt các liên kết tool sai, cùng với các phiên bản viết lại tránh xung đột đó.
Nguồn tham khảo
- Claude Certified Architect Foundations Exam Guide — Domain 2, Task Statement 2.1 — Anthropic
- Tool use — Anthropic API Documentation — Anthropic
- Model Context Protocol Specification — Tools — Model Context Protocol