Viết công cụ hiệu quả cho các tác nhân — với các tác nhân
Giao thức Ngữ cảnh Mô hình (MCP) có thể trang bị cho các tác nhân LLM hàng trăm công cụ tiềm năng để giải quyết các tác vụ thực tế. Nhưng làm thế nào để những công cụ đó đạt hiệu quả tối đa?
Trong bài viết này, chúng tôi mô tả các kỹ thuật hiệu quả nhất để cải thiện hiệu suất trong nhiều hệ thống AI tác nhân khác nhau¹.
Chúng tôi bắt đầu bằng cách đề cập đến cách bạn có thể:
Chúng tôi kết luận với các nguyên tắc chính để viết các công cụ chất lượng cao mà chúng tôi đã xác định trong quá trình thực hiện:
Trong điện toán, các hệ thống tất định tạo ra cùng một đầu ra mỗi lần với cùng một đầu vào, trong khi các hệ thống **phi tất định**—như các tác nhân—có thể tạo ra các phản hồi khác nhau ngay cả với cùng điều kiện ban đầu.
Khi chúng ta viết phần mềm theo cách truyền thống, chúng ta đang thiết lập một hợp đồng giữa các hệ thống tất định. Ví dụ, một lệnh gọi hàm như `getWeather(“NYC”)` sẽ luôn lấy thời tiết ở Thành phố New York theo cùng một cách mỗi khi nó được gọi.
Công cụ là một loại phần mềm mới phản ánh hợp đồng giữa các hệ thống tất định và các tác nhân phi tất định. Khi người dùng hỏi "Hôm nay tôi có nên mang ô không?", một tác nhân có thể gọi công cụ thời tiết, trả lời từ kiến thức chung, hoặc thậm chí đặt câu hỏi làm rõ về vị trí trước. Đôi khi, một tác nhân có thể bị ảo giác hoặc thậm chí không hiểu cách sử dụng một công cụ.
Điều này có nghĩa là chúng ta cần suy nghĩ lại cơ bản về cách tiếp cận khi viết phần mềm cho các tác nhân: thay vì viết các công cụ và **máy chủ MCP** theo cách chúng ta viết các hàm và API cho các nhà phát triển hoặc hệ thống khác, chúng ta cần thiết kế chúng cho các tác nhân.
Mục tiêu của chúng tôi là tăng diện tích bề mặt mà trên đó các tác nhân có thể hoạt động hiệu quả trong việc giải quyết nhiều tác vụ bằng cách sử dụng các công cụ để theo đuổi nhiều chiến lược thành công. May mắn thay, theo kinh nghiệm của chúng tôi, các công cụ "công thái học" nhất cho các tác nhân cuối cùng cũng trở nên trực quan một cách đáng ngạc nhiên đối với con người.
Trong phần này, chúng tôi mô tả cách bạn có thể cộng tác với các tác nhân để viết và cải thiện các công cụ bạn cung cấp cho chúng. Bắt đầu bằng cách dựng một nguyên mẫu nhanh của các công cụ và kiểm thử chúng cục bộ. Tiếp theo, chạy một đánh giá toàn diện để đo lường các thay đổi tiếp theo. Làm việc cùng với các tác nhân, bạn có thể lặp lại quy trình đánh giá và cải thiện các công cụ cho đến khi các tác nhân của bạn đạt được hiệu suất mạnh mẽ trong các tác vụ thực tế.
Thật khó để dự đoán công cụ nào sẽ phù hợp với tác nhân và công cụ nào không nếu không tự mình trải nghiệm. Bắt đầu bằng cách dựng một nguyên mẫu nhanh của các công cụ. Nếu bạn đang sử dụng **Claude Code** để viết các công cụ (có thể trong một lần), việc cung cấp cho Claude tài liệu về bất kỳ thư viện phần mềm, API hoặc SDK nào (bao gồm cả **MCP SDK**) mà các công cụ của bạn sẽ phụ thuộc vào là rất hữu ích. Tài liệu thân thiện với LLM thường có thể được tìm thấy trong các tệp `llms.txt` phẳng trên các trang tài liệu chính thức (đây là **API của chúng tôi**).
Việc bọc các công cụ của bạn trong một **máy chủ MCP cục bộ** hoặc **tiện ích mở rộng Desktop (DXT)** sẽ cho phép bạn kết nối và kiểm thử các công cụ trong Claude Code hoặc ứng dụng Claude Desktop.
Để kết nối máy chủ MCP cục bộ của bạn với Claude Code, hãy chạy `claude mcp add <tên> <lệnh> [đối số...]`.
Để c
Kết nối máy chủ MCP cục bộ hoặc DXT của bạn với ứng dụng Claude Desktop, điều hướng đến **Cài đặt > Nhà phát triển** hoặc **Cài đặt > Tiện ích mở rộng**, tùy theo từng trường hợp.
Các công cụ cũng có thể được truyền trực tiếp vào các lệnh gọi **API Anthropic** để kiểm tra lập trình.
Hãy tự kiểm tra các công cụ để xác định bất kỳ điểm chưa hoàn thiện nào. Thu thập phản hồi từ người dùng của bạn để xây dựng trực giác về các trường hợp sử dụng và lời nhắc mà bạn mong đợi các công cụ của mình hỗ trợ.
Tiếp theo, bạn cần đo lường mức độ hiệu quả mà Claude sử dụng các công cụ của bạn bằng cách chạy một bài đánh giá. Bắt đầu bằng cách tạo ra nhiều tác vụ đánh giá, dựa trên các trường hợp sử dụng thực tế. Chúng tôi khuyên bạn nên cộng tác với một tác nhân để giúp phân tích kết quả của bạn và xác định cách cải thiện các công cụ. Xem quy trình này từ đầu đến cuối trong **sách dạy nấu ăn đánh giá công cụ** của chúng tôi.
Với nguyên mẫu ban đầu của bạn, **Claude Code** có thể nhanh chóng khám phá các công cụ của bạn và tạo ra hàng chục cặp lời nhắc và phản hồi. Các lời nhắc nên được lấy cảm hứng từ các trường hợp sử dụng thực tế và dựa trên các nguồn dữ liệu và dịch vụ thực tế (ví dụ: cơ sở kiến thức nội bộ và microservices). Chúng tôi khuyên bạn nên tránh các môi trường "hộp cát" quá đơn giản hoặc hời hợt, không kiểm tra các công cụ của bạn với đủ độ phức tạp. Các tác vụ đánh giá mạnh mẽ có thể yêu cầu nhiều lần gọi công cụ—có thể lên đến hàng chục.
Dưới đây là một số ví dụ về các tác vụ mạnh mẽ:
Và đây là một số tác vụ yếu hơn:
Mỗi lời nhắc đánh giá nên được ghép nối với một phản hồi hoặc kết quả có thể xác minh được. Trình xác minh của bạn có thể đơn giản như so sánh chuỗi chính xác giữa dữ liệu thực tế và các mẫu phản hồi, hoặc phức tạp như sử dụng Claude để đánh giá phản hồi. Tránh các trình xác minh quá nghiêm ngặt từ chối các phản hồi đúng do sự khác biệt không đáng kể như định dạng, dấu câu hoặc cách diễn đạt thay thế hợp lệ.
Đối với mỗi cặp lời nhắc-phản hồi, bạn có thể tùy chọn chỉ định các công cụ mà bạn mong đợi một tác nhân sẽ gọi để giải quyết tác vụ, nhằm đo lường xem các tác nhân có thành công trong việc nắm bắt mục đích của từng công cụ trong quá trình đánh giá hay không. Tuy nhiên, vì có thể có nhiều cách hợp lệ để giải quyết các tác vụ một cách chính xác, hãy cố gắng tránh chỉ định quá mức hoặc quá khớp với các chiến lược.
Chúng tôi khuyên bạn nên chạy đánh giá của mình theo cách lập trình với các lệnh gọi API LLM trực tiếp. Sử dụng các vòng lặp tác nhân đơn giản (vòng lặp while bao gồm các lệnh gọi API LLM và công cụ xen kẽ): một vòng lặp cho mỗi tác vụ đánh giá. Mỗi tác nhân đánh giá nên được cung cấp một lời nhắc tác vụ duy nhất và các công cụ của bạn.
Trong các lời nhắc hệ thống của tác nhân đánh giá, chúng tôi khuyên bạn nên hướng dẫn các tác nhân không chỉ xuất ra các khối phản hồi có cấu trúc (để xác minh), mà còn cả các khối lý luận và phản hồi. Hướng dẫn các tác nhân xuất ra các khối này **trước** các khối gọi công cụ và phản hồi có thể tăng cường trí thông minh hiệu quả của LLM bằng cách kích hoạt các hành vi chuỗi suy nghĩ (CoT).
Nếu bạn đang chạy đánh giá của mình với Claude, bạn có thể bật **suy nghĩ xen kẽ** để có chức năng tương tự "ngay lập tức". Điều này sẽ giúp bạn thăm dò lý do tại sao các tác nhân gọi hoặc không gọi các công cụ nhất định và làm nổi bật các lĩnh vực cụ thể cần cải thiện trong mô tả và thông số kỹ thuật của công cụ.
Cũng như độ chính xác ở cấp cao nhất, chúng tôi khuyên bạn nên thu thập các số liệu khác.
Các chỉ số như tổng thời gian chạy của các lệnh gọi công cụ và tác vụ riêng lẻ, tổng số lần gọi công cụ, tổng lượng token tiêu thụ và lỗi công cụ. Theo dõi các lệnh gọi công cụ có thể giúp tiết lộ các quy trình làm việc phổ biến mà các tác nhân (agent) theo đuổi và mang lại cơ hội hợp nhất các công cụ.
**Phân tích kết quả** Các tác nhân là những người bạn đồng hành hữu ích trong việc phát hiện vấn đề và cung cấp phản hồi về mọi thứ, từ mô tả công cụ mâu thuẫn đến triển khai công cụ không hiệu quả và lược đồ công cụ gây nhầm lẫn. Tuy nhiên, hãy nhớ rằng những gì các tác nhân bỏ qua trong phản hồi và câu trả lời của chúng thường có thể quan trọng hơn những gì chúng bao gồm. Các mô hình ngôn ngữ lớn (LLM) không phải lúc nào cũng nói đúng ý mình.
Hãy quan sát nơi các tác nhân của bạn gặp bế tắc hoặc bối rối. Đọc qua suy luận và phản hồi (hoặc chuỗi suy nghĩ - CoT) của các tác nhân đánh giá để xác định các điểm gồ ghề. Xem lại các bản ghi thô (bao gồm các lệnh gọi công cụ và phản hồi công cụ) để phát hiện bất kỳ hành vi nào không được mô tả rõ ràng trong CoT của tác nhân. Đọc giữa các dòng; hãy nhớ rằng các tác nhân đánh giá của bạn không nhất thiết biết câu trả lời và chiến lược đúng.
Phân tích các chỉ số gọi công cụ của bạn. Nhiều lệnh gọi công cụ dư thừa có thể gợi ý rằng cần điều chỉnh kích thước phân trang hoặc tham số giới hạn token; nhiều lỗi công cụ do tham số không hợp lệ có thể gợi ý rằng các công cụ cần mô tả rõ ràng hơn hoặc ví dụ tốt hơn. Khi chúng tôi ra mắt công cụ tìm kiếm web của Claude, chúng tôi phát hiện ra rằng Claude đã vô tình thêm "2025" vào tham số truy vấn của công cụ, làm sai lệch kết quả tìm kiếm và giảm hiệu suất (chúng tôi đã điều chỉnh Claude theo hướng đúng bằng cách cải thiện mô tả công cụ).
Bạn thậm chí có thể để các tác nhân phân tích kết quả và cải thiện công cụ cho bạn. Chỉ cần nối các bản ghi từ các tác nhân đánh giá của bạn và dán chúng vào Claude Code. Claude là chuyên gia trong việc phân tích các bản ghi và tái cấu trúc nhiều công cụ cùng một lúc—ví dụ, để đảm bảo các triển khai và mô tả công cụ vẫn nhất quán khi có các thay đổi mới.
Trên thực tế, hầu hết lời khuyên trong bài viết này đến từ việc tối ưu hóa lặp đi lặp lại.


