JSON Schema → Tool Use 변환
JSON Schema 또는 수작업으로 작성한 파라미터 정의에서 Anthropic Claude의 tool_use, OpenAI의 function calling, Google Gemini의 function declaration 형식을 자동으로 생성합니다. 폼 UI로 처음부터 구축하거나, 기존 스키마를 붙여넣어 3가지 형식을 모두 동시에 변환할 수 있습니다.
사용법: SDK의 tools 배열에 추가
📖 자주 걸리는 지점
JSON Schema 나 손으로 쓴 파라미터 정의에서 Claude 의 tools, OpenAI 의 function calling, Gemini 의 function declarations 각 형식으로 변환합니다. 처리는 브라우저 안에서 끝납니다. 형식을 맞춘 것만으로 모델이 그 도구를 올바르게 불러 준다고는 할 수 없습니다 — 부를지 말지를 정하는 것은 JSON 의 구조가 아니라 description 에 무엇이 쓰여 있는가입니다.
| 사례 | 무슨 일이 일어나는가 | 어떻게 하면 되는가 |
|---|---|---|
| 모델이 도구를 불러 주지 않는다 | description 이 너무 짧거나 무엇을 하는지만 쓰여 있는 것이 원인입니다. "날씨를 가져온다" 만으로는 모델이 언제 불러야 할지 판단할 수 없습니다. 비슷한 기능의 도구가 여럿일 때 구별이 되지 않아 한쪽으로 치우치거나 둘 다 부르지 않는 동작이 됩니다. 파라미터 쪽 description 이 비어 있는 것도 같은 영향을 줍니다. |
description 에는 언제 쓰는지와 언제 쓰지 않는지를 쓰세요. 사용자가 특정 도시의 현재 날씨를 물었을 때 쓴다. 과거 기상 데이터나 일기 예보에는 쓰지 않는다(그것에는 get_forecast 를 쓴다) 처럼 경계를 명시하는 것이 가장 효과적입니다. 각 파라미터에도 단위 · 서식 · 예를 쓰세요 — "date" 가 아니라 "날짜. YYYY-MM-DD 형식. 예: 2026-07-26" 입니다. |
| 인수의 타입이 지켜지지 않는다 | "type": "integer" 라고 써도 문자열 "3" 이 돌아오는 경우가 있습니다. 숫자와 문자열의 경계, null 의 취급, 날짜의 서식은 스키마만으로는 완전히 강제되지 않습니다. 중첩이 깊은 객체나 oneOf / anyOf 같은 분기를 포함한 스키마에서는 정확도가 더 떨어집니다. |
받은 인수는 반드시 애플리케이션 쪽에서 검증하세요 — zod 나 pydantic 같은 검증기를 통과시키고 실패하면 오류를 도구의 결과로서 모델에 돌려주는 것이 정석입니다. date 는 YYYY-MM-DD 형식이어야 합니다. 받은 값: 2026/07/26 이라고 돌려주면 모델은 정정해 다시 부릅니다. 아울러 스키마는 얕게 유지하세요 — 중첩을 2단까지로 억제하고 복잡한 분기는 여러 도구로 나누는 편이 결과적으로 정확도가 나옵니다. |
| 도구를 늘릴수록 정확도가 떨어진다 | 도구 정의는 모두 매 요청의 입력에 포함됩니다. 20개나 정의하면 그것만으로 수천 토큰이 고정비로 얹히고, 게다가 비슷한 설명이 나열될수록 모델의 선택은 불안정해집니다. get_user / fetch_user / load_user_data 가 함께 있으면 사람도 고를 수 없습니다. |
1 요청에 넘기는 도구는 그 장면에서 필요한 것만으로 좁히세요. 대화의 상태나 화면별로 도구 세트를 전환하는 것이 실용적입니다. 이름이 비슷한 것은 통합하거나 이름으로 용도가 유일하게 드러나도록 개명하세요 — search_users_by_email 처럼 무엇을 어떻게 찾는지까지 이름에 넣으면 충돌하지 않게 됩니다. 토큰 양은 토큰 카운터로 잴 수 있습니다. |
3사의 형식은 비슷하지만 중첩의 위치가 다릅니다. Claude 는 input_schema 에 스키마를 직접 두고, OpenAI 는 function.parameters 아래에, Gemini 는 functionDeclarations[].parameters 아래에 둡니다. 더해서 Gemini 는 JSON Schema 의 일부 키워드만 지원합니다 — $ref 나 additionalProperties 처럼 타사에서는 통하는 것이 떨어질 수 있습니다. 이식했다면 반드시 실제로 한 번 호출해 인수가 기대대로 도착하는지 확인하세요. 형식이 수리되는 것과 의도대로 동작하는 것은 다릅니다.
📖 사용법
-
1
폼 / JSON폼 또는 JSON 붙여넣기
-
2
프로바이더 선택Anthropic / OpenAI / Gemini
-
3
SDK에 붙여넣기tools[]에 추가
❓ 자주 묻는 질문
3가지 차이?
strict?
여러 도구?
🐛 이 도구에서 문제가 발생했나요?
무료 · 가입 불필요. 재현 절차만이라도 도움이 됩니다. 보고는 운영자에게 직접 전달되어 개선에 사용됩니다.
보고 감사합니다!
운영자에게 전달되었습니다. 개선에 사용됩니다.