vLLM의 도구 호출 정확도 문제 해결하기

1 hour ago 3

도구 호출이 스키마를 어기면 오류 메시지와 재시도가 쌓여 에이전트의 품질과 비용에 영향을 줌. Ubicloud의 Kimi K2.6 테스트에서는 vLLM 0.28의 스키마 정확도가 92% 에 그쳤음 제약 디코딩(constrained decoding) 은 생성 단계마다 스키마에 맞지 않는 토큰을 차단해, 생성 후 검증에 의존하지 않고 도구 호출의 구조적 유효성을 강제함 vLLM은 XGrammar의 구조 태그로 도구 호출 형식과 JSON 스키마를 정의하며, 미리 계산한 토큰 마스크를 GPU에 적용해 성능 부담을 거의 늘리지 않고 제약을 적용함 제약 디코딩은 모든 모델에서 안전한 기본값은 아님. 모델별 출력 특성과 구현 버그 때문에 vLLM은 기본 비활성화를 선택했고, 0.31에서 서버 측 설정 플래그를 제공함 관측되는 모델 품질은 모델 자체뿐 아니라 추론 엔진과 설정에도 좌우됨. 스키마 준수를 강제할 수 있어도 모델별 동작과 다른 추론 기능과의 상호작용을 고려해야 함 도구 스키마와 호출 처리 과정 LLM이 외부 도구를 호출하려면 사용 가능한 도구 목록과 구조화된 호출 출력 방법을 전달해야 함 OpenCode가 Kimi에 연결될 때는 도구를 설명하는 JSON 배열을 전송함 예시 도구인 webfetch는 웹페이지를 가져오며, 필수 문자열 url, 선택적 format, 초 단위 timeout을 받음 format은 text, markdown, html 중 하나이며 기본값은 markdown, timeout의 최댓값은 120초임 도구 스키마는 매개변수 이름, 자료형, 필수 여부 등을 정의하며, 에이전트 하네스가 호출을 실행하려면 모델 출력이 이 규칙을 따라야 함 추론 엔진은 도구 설명 JSON을 모델별 특수 토큰으로 감싸 학습 당시의 도구 선언 형식에 맞춰 전달함 Kimi에서는 <|im_system|>tool_declare<|im_middle|>...<|im_end|> 형태를 사용함 모델이 도구 이름과 인수를 특수 토큰 사이에 출력하면 추론 서버의 파서가 이를 일반 응답과 tool_calls가 포함된 JSON으로 변환함 OpenCode 같은 하네스는 이 응답을 받아 webfetch를 실행하고 결과를 모델에 다시 전달함 스키마 정확도가 에이전트 품질에 미치는 영향 모델이 자유롭게 도구 호출을 생성하도록 두는 방식은 학습만으로 올바른 구조를 출력할 것이라고 신뢰함 최신 모델은 구조적 패턴을 대체로 ...

Read Entire Article




피플앤툴즈 네트워크
🛍 샵