TL;DR
LLM 도구 호출 오류를 재현하기 위해 매번 요청 일부를 수동으로 지우고 모델을 다시 호출하던 작업을 toolcall-doctor가 자동화합니다. 사용자가 지정한 실패 조건과 보존 조건을 계약으로 입력하면, 도구는 요청의 일부를 제거하고 OpenAI 호환 서버에 재요청한 뒤 두 조건이 모두 유지되는 후보만 남기는 DDMin 루프를 반복합니다. Ollama 0.4.6과 llama3.2:3b에서 검증한 결과 tool_choice 사례는 583 B에서 185 B로 68.27%, 인자 구조 사례는 468 B에서 234 B로 50.00% 줄었으며, 최종 후보도 기본 3회 재검증합니다. 다만 지원 검증은 단일 Ollama 버전과 모델에 한정되고, 이 도구는 근본 원인을 진단하거나 계약에 적지 않은 의미를 보존하지 않습니다.
섹션별 상세
pip install -e .
toolcall-doctor demo모델 호출 없이 기록된 실행 결과를 재생하는 데모를 설치하고 실행합니다.
toolcall-doctor minimize request.json --contract contract.json -o out입력 요청과 실패·보존 조건 계약을 받아 라이브 모델 호출로 최소 재현 요청을 생성합니다.
{
"failure": { "condition": "has_tool_call" },
"preserve": [
{"type": "request_equals", "key": "tool_choice", "value": "none"},
{"type": "tool_name", "value": "get_weather"},
{"type": "contains", "value": "weather"},
{"type": "contains", "value": "Paris"}
]
}모델이 도구 호출을 계속 생성하고 tool_choice, 도구 이름, 사용자 텍스트의 핵심 단어를 보존하도록 지정하는 계약입니다.
{"failure": {"condition": "http_status_is", "value": 400}}
{"failure": {"condition": "missing_tool_call"}HTTP 상태 코드나 도구 호출 부재를 실패 조건으로 지정하는 대체 계약 형식입니다.
용어 해설
- 델타 디버깅(Delta Debugging)
- — 실패를 재현하는 입력을 여러 부분으로 나누고 일부를 제거한 뒤 같은 실패가 유지되는지 반복 확인해 원인을 포함할 가능성이 있는 더 작은 입력을 찾는 축소 기법입니다. toolcall-doctor는 이 과정을 문자 단위 DDMin으로 수행하지만, 결과가 유일한 근본 원인이라는 뜻은 아닙니다.
- DDMin
- — 입력 집합을 부분 집합으로 나눠 제거하고, 지정한 실패 조건과 보존 조건이 계속 성립하는 후보만 다음 단계로 넘기는 최소화 알고리즘입니다. 이 도구에서는 LLM 요청을 여러 차례 호출해 더 작은 재현 입력을 찾는 엔진으로 사용됩니다.
- 도구 호출(Tool Calling)
- — LLM이 메시지와 도구 스키마를 바탕으로 외부 함수를 호출할지를 결정하고 인자 구조를 생성하는 방식입니다. 이 글의 도구는 도구 호출 실패가 유지되는 동안 요청의 도구, 스키마 필드, 텍스트 일부를 제거해 재현 가능한 축소본을 만듭니다.
- OpenAI 호환 API(OpenAI-compatible API)
- — OpenAI API와 호환되는 요청 형식과 엔드포인트를 제공하는 서버 인터페이스입니다. toolcall-doctor는 이 인터페이스의 POST /v1/chat/completions를 통해 후보 요청을 모델에 보내고 응답에서 실패 조건과 보존 조건을 검사합니다.
- 모델 비결정성(Model Nondeterminism)
- — 같은 요청을 반복해도 모델 응답이 항상 동일하지 않을 수 있는 특성입니다. 이 도구는 기본적으로 각 후보를 3회 호출하고 마지막 후보도 반복 검증하며, 검색 중 통과한 후보가 최종 검증에서 실패하면 성공한 축소 결과로 보고하지 않습니다.
기술
- toolcall-doctor
- Ollama 0.4.6
- llama3.2:3b
- Python 3.10+
- OpenAI-compatible POST /v1/chat/completions
- DDMin
활용 사례
- LLM 도구 호출 오류의 최소 재현 요청 생성
- tool_choice 제약 오류의 재현 입력 축소
- 도구 인자 구조와 enum 제약 오류의 반복 검증
- HTTP 상태 코드나 응답 문자열을 기준으로 하는 API 실패 축소
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.