Qwen 3.5 도구 호출 에이전트 사용 개선: 서버 상태 및 클라이언트 측 해결 방법

Qwen 3.5 에이전트 환경에서의 도구 호출 버그
코딩 에이전트나 함수 호출 루프와 같은 에이전트 환경에서 Qwen 3.5 모델을 실행할 때, 네 가지 특정 버그로 인해 도구 호출이 완전히 실패할 수 있습니다.
네 가지 핵심 버그
- XML 도구 호출이 일반 텍스트로 유출됨: Qwen 3.5는 도구 호출을 XML 형식(예: <function=bash><parameter=command>ls</parameter></function>)으로 출력합니다. 서버가 이를 파싱하지 못할 때—특히 텍스트가 XML 앞에 있거나 사고 기능이 활성화된 경우—도구 호출이 finish_reason: stop과 함께 원시 텍스트로 도착하여 에이전트가 실행하지 못합니다.
- <think> 태그가 텍스트로 유출되어 컨텍스트를 오염시킴: llama.cpp는 enable_thinking: false 설정과 관계없이 내부적으로 thinking=1을 강제 적용하여, 태그가 여러 턴에 걸쳐 누적되고 다중 턴 세션을 파괴합니다.
- 잘못된 finish_reason: 서버가 도구 호출이 존재할 때 "stop"을 전송하여 에이전트가 이를 최종 응답으로 처리하게 합니다.
- 비표준 finish_reason: 일부 서버는 "eos_token", "", 또는 null을 반환하여, 대부분의 프레임워크가 도구 호출 존재 여부를 확인하기 전에 알 수 없는 값으로 인해 충돌합니다.
서버 상태 (2026년 4월)
원본은 주요 추론 서버에 대한 상세 상태 표를 제공합니다:
- LM Studio 0.4.9: XML 파싱을 위한 최고의 로컬 옵션(v0.4.7에서 수정됨), 사고 유출 처리 개선, 일반적으로 정확한 finish_reason.
- vLLM 0.19.0: --tool-call-parser qwen3_coder 플래그와 함께 작동, 스트리밍 버그 존재, 사고 유출 수정됨, 일반적으로 정확한 finish_reason.
- Ollama 0.20.2: 닫히지 않은 </think> 버그 수정 이후 개선됨, XML 파싱에서 여전히 불안정, 때때로 잘못된 finish_reason.
- llama.cpp b8664: 파서가 존재하지만 사고 기능이 활성화된 경우 실패, 사고 유출 고장, 파서 실패 시 잘못된 finish_reason.
권장 솔루션
도구 인수에서 |items 필터 실패와 같은 알려진 문제가 있는 기본 Qwen 3.5 Jinja 템플릿 대신 Unsloth GGUFs를 사용하세요. Unsloth는 21개의 템플릿 수정 사항을 포함합니다.
서버가 놓친 부분을 포착하는 세 가지 작은 함수로 클라이언트 측 안전망을 추가하세요. 원본은 첫 번째 함수를 제공합니다:
import re, json, uuid
1. 텍스트 콘텐츠에서 Qwen XML 도구 호출 파싱
def parse_qwen_xml_tools(text):
results = []
for m in re.finditer(r'<function=([\w.-]+)>([\s\S]?)</function>', text):
args = {}
for p in re.finditer(r'<parameter=([\w.-]+)>([\s\S]?)</parameter>', m.group(2)):
k, v = p.group(1).strip(), p.group(2).strip()
try:
v = json.loads(v)
except:
pass
args[k] = v
이 함수는 서버가 XML을 제대로 파싱하지 못할 때 텍스트 콘텐츠에서 도구 호출을 추출하여, 에이전트 워크플로우를 위한 대체 메커니즘을 제공합니다.
📖 전체 원본 읽기: r/LocalLLaMA
👀 See Also

OpenClaw의 게이트웨이와 스킬: 채팅을 넘어 자동화된 실행으로 나아가기
OpenClaw의 게이트웨이는 Telegram과 WhatsApp과 같은 채널을 실제 세계의 작업을 실행하는 스킬에 연결합니다. 이러한 작업에는 테스트 실행, API 호출, 파일 관리 등이 포함되며, cron 작업을 통해 예약된 백그라운드 자동화가 가능합니다.

OpenClaw 5.28: 업그레이드 후 Codex 플러그인 손상 — 심볼릭 링크 심(Symlink Shim)으로 해결
OpenClaw 5.28 업그레이드 후 Codex 플러그인이 바이너리 경로 불일치로 작동하지 않는 문제를 심볼릭 링크로 해결합니다.

AI를 활용해 더 느리게 더 나은 코드 작성하기: 버그 발견 워크플로우
Nolan Lawson이 여러 AI 에이전트(Claude, Codex, Cursor Bugbot)를 사용하여 PR의 버그를 찾고 우선순위를 지정함으로써 단순한 속도보다 코드 품질을 향상시키는 워크플로우를 설명합니다.

Anthropic, Claude AI 무료 공식 학습 플랫폼 출시
Anthropic은 Claude 기초, API 통합, 에이전트 기술 및 다양한 사용자 그룹을 위한 전문 트랙을 다루는 구조화된 과정을 포함한 무료 학습 플랫폼을 출시했습니다.