Anthropic Claude 모델의 툴 호출 스키마 회귀

Anthropic Claude 모델의 툴 호출 스키마 회귀

최신 SOTA 모델이 툴 스키마 준수에서 회귀하고 있음

Anthropic의 최신 최첨단(SOTA) 모델, 특히 Opus 4.8Sonnet 5는 중첩 배열에 존재하지 않는 필드를 만들어 내는 형태의 잘못된 툴 호출을 점점 더 많이 발생시킵니다. 이전 모델들은 제공된 스키마를 준수했지만, 이러한 최신 버전은 툴 인자에 "슬롭"(즉, 만들어낸 키)을 자주 추가하여 기본 페이로드가 올바르더라도 외부 하네스가 호출을 거부하게 만듭니다.

이 현상은 모델이 일반적인 추론 능력은 향상되면서, 사후 학습 단계에서 마주치는 특정하고 문서화되지 않은 툴 형태에 대해 덜 유연하거나 더 편향될 수 있음을 시사합니다.

툴 호출 실패 메커니즘

LLM 툴 호출은 네이티브 함수가 아니라 인밴드 신호를 사용해 텍스트로 생성됩니다. 모델은 직렬화된 문자열(종종 XML이나 JSON 형태)을 생성하고, 클라이언트 API가 이를 함수 호출로 해석합니다. 예를 들어 파일 편집 툴의 경우, 모델은 다음과 같은 JSON 배열을 생성해야 할 수 있습니다:

{
 "path": "some/file.py",
 "edits": [
 {
 "oldText": "text to replace",
 "newText": "replacement text"
 }
 ]
}

Opus 4.8과 Sonnet 5에서 실패하는 경우, 모델은 올바른 oldTextnewText를 생성하지만 requireUnique, type, id, kind, matchCase, in_file과 같은 만들어낸 키를 추가합니다. 이러한 환각은 일반적으로 생성 과정에서 가장 엔트로피가 높은 시점, 즉 긴 이스케이프 문자열을 닫은 직후에 발생합니다. 모델은 객체를 닫을지(}) 아니면 다른 필드를 추가할지(, "...") 결정해야 합니다.

근본 원인: "슬롭 하네스" 가설

이 회귀는 관대하게 동작하는 환경, 예를 들어 폐쇄형 Claude Code 하네스와 같은 곳에서 수행된 강화 학습(RL)으로 인한 훈련 아티팩트일 가능성이 높습니다.

관대한 클라이언트의 역할

Claude Code의 내부 클라이언트는 매우 탄력적으로 설계되었습니다. 다음과 같은 전략을 사용해 잘못된 출력을 처리합니다:

  • 파라미터 별칭: 동일 파라미터에 대해 여러 이름을 허용합니다(예: old_strold_string).
  • 무음 필터링: 스키마에 없는 예상치 못한 키를 자동으로 제거합니다.
  • 유니코드 복구: 깨진 \uXXXX 시퀀스와 고립된 서러게이트를 수정합니다.
  • 재시도 루프: 누출된 마크업을 잡아내는 상태 머신을 사용해 모델에게 다시 시도하도록 프롬프트합니다.

RL 유도 편향

관대하게 오류를 복구해 주는 하네스에서 RL로 훈련된 모델은 툴 호출이 스키마에 완벽히 맞지 않더라도 작업을 완료한 것에 대해 보상을 받습니다. 따라서 모델이 별칭을 만들거나 불필요한 필드를 추가하는 것을 피하도록 하는 그래디언트가 없습니다. 시간이 지나면서 모델은 Claude Code가 사용한 특정하고 평면적인 스키마에 강한 사전 확률을 형성하고, Pi 하네스와 같이 중첩된 스키마는 "분포 외"로 인식하게 됩니다.

완화 전략

스키마 회귀를 완화할 수 있는 몇 가지 기술적 접근법이 있습니다:

1. Strict 모드와 제한된 디코딩

Anthropic API에서 strict 모드를 활성화하면 이러한 실패가 사라지는 것으로 보입니다. 이는 서버 측 추론 스택이 문법 제한 디코딩을 사용해 JSON 스키마를 위반하는 토큰을 마스킹하기 때문일 가능성이 높습니다. 다만, 이는 툴 정의에 복잡도 제한을 두어 API 요청이 실패할 수 있는 단점이 있습니다.

2. 오류 기반 교정

일부 개발자는 모델에게 상세한 오류 메시지를 제공함으로써 성공을 거두었습니다. 툴 호출이 왜 실패했는지, 구문을 어떻게 고쳐야 하는지를 정확히 설명하면, 에이전트는 다음 턴에서 보통 실수를 수정하고 이후 컨텍스트 윈도우 전체에 걸쳐 올바른 출력을 유지합니다.

3. 클라이언트 측 "셀프 힐링"

Claude Code 접근법과 유사하게, 일부 사용자는 편집 툴을 패치하는 확장을 만들어 만들어낸 필드를 무시하거나 별칭을 올바른 스키마로 매핑하도록 하여 라운드 트립 재시도의 횟수를 줄였습니다.

AI 에이전트 개발에 미치는 영향

이 현상은 툴 스키마가 중립적인 추상 계약이 아니라 모델의 사후 학습 분포에 의해 영향을 받는다는 것을 보여줍니다.

  • 하네스 의존성: 에이전트의 "지능"은 점점 모델과 하네스의 합으로 정의됩니다. 관대한 폐쇄형 생태계에서 훈련된 모델은 엄격하고 오픈소스 환경에서 어려움을 겪을 수 있습니다.
  • 폐쇄형 하네스의 해자: 폐쇄형 하네스와 고객 프롬프트에 대한 RL 파인튜닝은 기술적 해자를 형성합니다. 최첨단 모델이 자체 폐쇄형 하네스에서만 최상의 성능을 보인다면, 서드파티 개발자는 그 특성을 모방하거나 자체 제한된 디코딩을 사용해야 하며, 이는 품질 트레이드오프를 동반합니다.

요약:

Opus 4.8 및 Sonnet 5를 포함한 최신 Claude 모델들은 툴 호출 시 존재하지 않는 필드를 만들어 내는 회귀 현상을 보이며, 이는 관대한 폐쇄형 하네스(예: Claude Code)에서의 강화 학습 때문일 가능성이 높습니다.

제목:

Anthropic Claude 모델의 툴 호출 스키마 회귀

Sources