~/tools / Tool Definition Checker
Tool Definition Checker — Kiểm tra định nghĩa tool và hàm cho OpenAI, Anthropic, Gemini
Kiểm tra các định nghĩa tool (hàm) bạn gửi cho OpenAI, Anthropic hoặc Gemini theo định dạng mà tài liệu của từng API nêu: tên, mô tả, schema tham số, strict mode và các ví dụ đầu vào. Tìm lỗi trước khi yêu cầu bị thất bại. Không có gì rời khỏi trình duyệt của bạn.
Các quy tắc được kiểm tra theo tài liệu vào ngày 2026-10-23.
Tài liệu: OpenAI / Anthropic / Tài liệu tham chiếu Gemini API
Không kiểm tra: việc một mô hình có hỗ trợ tool hay không, các chi tiết về strict tool use của Anthropic, các tool do chính Anthropic cung cấp, và những quy tắc tài liệu không nêu.
Mọi thứ chạy trong trình duyệt của bạn. Các định nghĩa không được tải lên.
Tool use (dùng công cụ), còn gọi là function calling (gọi hàm), cho phép mô hình yêu cầu mã của bạn chạy một hàm. Bạn mô tả từng hàm trong một định nghĩa JSON, và ba API lớn mong đợi các cấu trúc khác nhau: OpenAI Chat Completions đặt hàm lồng trong một đối tượng function, OpenAI Responses giữ các trường ở cùng một cấp, Anthropic dùng name và input_schema, còn Gemini dùng function declarations. Quy tắc đặt tên cũng khác nhau. Công cụ này đọc định nghĩa bạn dán vào, xác định nó được viết cho API nào, rồi kiểm tra theo những gì tài liệu của nhà cung cấp đó nêu: tên, mô tả, schema tham số, strict mode và, với Anthropic, việc từng ví dụ đầu vào có khớp với schema hay không. Công cụ cũng chỉ ra khi một tên dùng được với API này nhưng sẽ bị API khác từ chối. Các quy tắc được kiểm tra theo tài liệu vào ngày hiển thị bên dưới công cụ.
Trường hợp dùng
- Kiểm tra định nghĩa tool trước khi thêm vào yêu cầu, để tên sai hoặc cấu trúc sai không làm lệnh gọi thất bại
- Tìm hiểu vì sao strict mode từ chối schema của một hàm
- Chuyển một tool từ nhà cung cấp này sang nhà cung cấp khác và xem cần thay đổi những gì
Cách dùng
- Dán một định nghĩa tool, một mảng tools hoặc một nội dung yêu cầu có mảng tools, hoặc tải ví dụ.
- Xem từng tool được nhận diện là của API nào, rồi đến danh sách các phát hiện. Sửa nghĩa là tài liệu cho biết định nghĩa sẽ bị từ chối hoặc không hợp lệ, Kiểm tra nghĩa là đáng xem lại, và Ghi chú chỉ để cung cấp thông tin.
- Chỉnh lại các định nghĩa rồi dán lại. Với các vấn đề về strict mode, Structured Output Schema Checker hiển thị chi tiết từng vấn đề.
Cùng một công cụ trong mỗi API
Cả ba API đều mô tả một công cụ bằng tên, phần mô tả và một JSON Schema cho các đối số, nhưng các trường nằm ở những vị trí khác nhau.
| API | Các trường nằm ở đâu | Trường schema | Quy tắc đặt tên |
|---|---|---|---|
| OpenAI Chat Completions | type là function, và một đối tượng function chứa name, description, parameters và strict | parameters | Chữ cái, chữ số, dấu gạch dưới và dấu gạch ngang, tối đa 64 ký tự |
| OpenAI Responses | type, name, description, parameters và strict nằm cùng một cấp | parameters | Giống Chat Completions |
| Anthropic | name, description và input_schema trong mảng tools | input_schema | Chữ cái, chữ số, dấu gạch dưới và dấu gạch ngang, từ 1 đến 128 ký tự |
| Gemini | các khai báo nằm trong danh sách functionDeclarations bên trong một công cụ | parameters hoặc parametersJsonSchema | Chữ cái, chữ số, dấu gạch dưới, dấu hai chấm, dấu chấm và dấu gạch ngang, tối đa 128 ký tự |
Tên có dấu chấm hoặc dấu hai chấm chỉ hợp lệ với Gemini. Trong tài liệu tham chiếu của OpenAI, nếu bỏ parameters thì hàm được định nghĩa với danh sách tham số rỗng, và một yêu cầu Chat Completions hỗ trợ tối đa 128 hàm trong tools.
Chế độ strict của OpenAI
- Các yêu cầu Chat Completions mặc định không ở chế độ strict. Các yêu cầu Responses sẽ cố chuyển schema của bạn sang chế độ strict khi có thể, và tài liệu tham chiếu Responses mô tả strict có giá trị mặc định là true.
- Ở chế độ strict, additionalProperties phải là false cho mọi đối tượng trong parameters, và mọi trường trong properties phải nằm trong required.
- Để một trường là tùy chọn ở chế độ strict, hãy thêm null vào các kiểu được phép, ví dụ type là ["string", "null"].
- Một schema vi phạm các quy tắc này sẽ bị từ chối, kèm chi tiết về các ràng buộc còn thiếu.
- Khi strict là true, chỉ một tập con của JSON Schema được hỗ trợ. Tài liệu Structured Outputs liệt kê tập con đó.
Các thuộc tính tùy chọn của công cụ Anthropic
| Thuộc tính | Tác dụng |
|---|---|
| cache_control | Đặt một điểm ngắt prompt cache tại định nghĩa công cụ này. |
| strict | Đảm bảo việc kiểm tra schema đối với tên công cụ và đầu vào. |
| defer_loading | Không đưa công cụ vào system prompt ban đầu, mà tải theo yêu cầu khi tool search trả về nó. |
| allowed_callers | Giới hạn những bên nào được phép gọi công cụ. |
| input_examples | Đưa ra các đối tượng đầu vào mẫu để chỉ cho Claude cách gọi công cụ. |
| eager_input_streaming | Bật streaming đầu vào chi tiết cho một công cụ do người dùng định nghĩa. |
- Mỗi ví dụ đầu vào phải hợp lệ theo input_schema của công cụ. Một ví dụ không hợp lệ sẽ trả về lỗi 400.
- Các ví dụ làm tăng số token của prompt: khoảng 20 đến 50 token cho một ví dụ đơn giản và khoảng 100 đến 200 cho một đối tượng lồng nhau phức tạp.
- input_examples không dùng được trên các công cụ phía máy chủ như web search hay code execution.
Các khai báo của Gemini
- Danh sách functionDeclarations của một công cụ chứa các khai báo hàm. Mô hình không chạy chúng. Nó có thể trả về một lệnh gọi hàm để mã của bạn thực thi.
- Một khai báo cần có name và description. Phần description được đánh dấu là bắt buộc.
- parameters, theo lược đồ OpenAPI, và parametersJsonSchema, nhận JSON Schema, loại trừ lẫn nhau. response và responseJsonSchema cũng loại trừ lẫn nhau theo cách tương tự.
- parametersJsonSchema phải mô tả một đối tượng mà các properties của nó là các tham số của hàm.
- Chế độ gọi hàm mặc định là AUTO. ANY luôn dự đoán một lệnh gọi hàm, NONE không dự đoán lệnh nào, còn VALIDATED để mô hình tự chọn nhưng kiểm tra lệnh gọi hàm bằng constrained decoding.
- allowedFunctionNames chỉ nên được đặt khi chế độ là ANY hoặc VALIDATED, và các tên phải khớp với tên của các khai báo.
Viết định nghĩa để mô hình dùng tốt
- Anthropic gọi phần mô tả chi tiết là yếu tố quan trọng nhất cho đến nay, và khuyên dùng ít nhất 3 đến 4 câu cho mỗi công cụ: nó làm gì, khi nào nên và không nên dùng, mỗi tham số có nghĩa gì, và những lưu ý nếu có.
- Anthropic khuyên gom các thao tác liên quan vào ít công cụ hơn bằng một tham số action, và thêm tiền tố tên dịch vụ vào tên, ví dụ github_list_prs.
- Anthropic cảnh báo rằng một tham số yêu cầu mô hình đưa ra lập luận của nó có thể dẫn đến việc từ chối, và gợi ý nên yêu cầu một lời giải thích ngắn thay thế.
- OpenAI khuyên nên mô tả rõ ràng mục đích của hàm và của từng tham số, dùng enum, và nhắm tới dưới 20 hàm ở đầu một lượt, điều mà OpenAI gọi là một gợi ý mềm.
- OpenAI lưu ý rằng các định nghĩa hàm có thể gọi được tính vào giới hạn ngữ cảnh và được tính phí như token đầu vào.
Nguồn (đã kiểm tra 2026-10-23): OpenAI: Function calling / OpenAI: API specification / Anthropic: Define tools / Anthropic: Tool reference / Gemini API: reference (discovery document)
Hỏi đáp
Làm sao công cụ biết một định nghĩa dành cho API nào?
Dựa vào cấu trúc của nó. Định nghĩa có input_schema được đọc là của Anthropic. Định nghĩa có type là function và một đối tượng function lồng bên trong được đọc là OpenAI Chat Completions, còn định nghĩa có type là function và các trường nằm ở cấp trên cùng được đọc là OpenAI Responses. Một đối tượng có functionDeclarations, hoặc có name, description và parameters, được đọc là Gemini. Kết quả cho biết từng tool được nhận diện là gì.
Quy tắc đặt tên là gì?
OpenAI nêu chữ cái, chữ số, dấu gạch dưới và dấu gạch ngang, tối đa 64 ký tự. Anthropic nêu chữ cái, chữ số, dấu gạch dưới và dấu gạch ngang, tối đa 128 ký tự. Gemini nêu chữ cái, chữ số, dấu gạch dưới, dấu hai chấm, dấu chấm và dấu gạch ngang, tối đa 128 ký tự. Một tên hợp lệ với API này có thể bị API khác từ chối, và công cụ sẽ cho bạn biết khi điều đó xảy ra.
Vì sao công cụ kiểm tra lại schema khi strict là true?
OpenAI cho biết strict mode cần additionalProperties được đặt là false trên mọi đối tượng và mọi thuộc tính đều được liệt kê trong required, còn các giá trị tùy chọn được viết dưới dạng một kiểu cho phép cả null. Schema vi phạm các quy tắc này sẽ bị từ chối. Công cụ đếm số vấn đề và cho biết vấn đề đầu tiên nằm ở đâu.
Công cụ kiểm tra gì trong input_examples?
Anthropic cho biết mỗi ví dụ phải hợp lệ theo input_schema của tool và một ví dụ không hợp lệ sẽ trả về lỗi 400. Công cụ kiểm tra từng ví dụ theo schema và cho bạn biết ví dụ nào không đạt.
Công cụ không kiểm tra những gì?
Việc một mô hình cụ thể có hỗ trợ tool hay không, các chi tiết về strict tool use của Anthropic, các tool do chính Anthropic cung cấp, và bất cứ điều gì tài liệu không nêu. Công cụ không gọi API nào, nên một định nghĩa vượt qua kiểm tra vẫn có thể thất bại trong một yêu cầu thực tế.
Định nghĩa của tôi có được gửi đến máy chủ không?
Không. Việc kiểm tra chạy trong trình duyệt của bạn.