Исправления вызова инструментов 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 принудительно включает thinking=1 внутренне, независимо от enable_thinking: false, что приводит к накоплению тегов между повторами и разрушает многоходовые сессии.
- Неправильный finish_reason: Серверы отправляют "stop", когда присутствуют вызовы инструментов, заставляя агентов воспринимать это как окончательный ответ.
- Нестандартный finish_reason: Некоторые серверы возвращают "eos_token", "" или null, что приводит к сбою большинства фреймворков на неизвестном значении до проверки наличия вызовов инструментов.
Статус серверов (апрель 2026)
Источник предоставляет подробную таблицу статуса для основных серверов вывода:
- 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 при сбое парсера.
Рекомендуемые решения
Используйте Unsloth GGUFs вместо стандартных шаблонов Jinja Qwen 3.5, которые имеют известные проблемы с фильтром |items, не работающим на аргументах инструментов. Unsloth поставляется с 21 исправлением шаблонов.
Добавьте клиентскую страховочную сеть с тремя небольшими функциями, которые ловят то, что пропускают серверы. Источник предоставляет первую функцию:
import re, json, uuid
1. Парсинг XML-вызовов инструментов Qwen из текстового содержимого
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
👀 Смотрите также

Практический обзор: 3 ключевых навыка для Clawhub и 3, которых стоит избегать
Разработчик тестировал навыки Clawhub несколько недель и нашёл три, которые стоит установить: web-search (Brave), daily-brief и memory-search. Три других — food-order, multi-agent orchestrators и humanizer — тратят токены и добавляют ненужную сложность.

Контрольный список для анализа производительности OpenClaw CLI
Пользователь Reddit делится шестишаговым чек-листом для диагностики медленных команд OpenClaw CLI, включая команды для измерения задержки, мониторинга системных ресурсов, проверки логов шлюза и изоляции проблем с конфигурацией.

Визуальное руководство по жизненному циклу 27 хуков Claude Code
Сообщество создало ресурс с визуальным и аудио-обзором всех 27 хуков Claude Code, показывающий, когда каждый срабатывает, их порядок и какие данные они получают. Проект был полностью создан с использованием самого Claude Code.

Шпаргалка по структуре папок Claude Code от пользователя Reddit
Пользователь Reddit создал шпаргалку по структуре папок Claude Code после столкновения с распространёнными ошибками, охватывающую структуру каталога .claude/, события хуков, settings.json, конфигурацию MCP, структуру навыков и пороги управления контекстом.