Исправленный чат-шаблон Qwen 3.5: 21 багфикс для tool calling и стриминга | AiManual
AiManual Logo Ai / Manual.
17 Мар 2026 Инструмент

Исправленный чат-шаблон для Qwen 3.5: полное руководство по настройке tool calling, агентских циклов и стриминга

Готовый инструмент с исправлениями багов Qwen 3.5. Настройка tool calling, агентских циклов, стриминга для llama.cpp, Open WebUI, vLLM. Руководство на 2026 год.

Кошмар разработчика: tool calling, который не работает

Вы скачали свежую Qwen 3.5 (да, ту самую, с обновлениями 2025-2026 годов). Настроили инструменты. Запустили агента. А он... или молчит, как партизан, или талдычит одно и то же, или выдает tool-calls в бездну. Знакомый сценарий?

Стандартный чат-шаблон для Qwen 3.5 сломан. Не местами, а капитально. Бесконечные циклы, сломанный стриминг, игнорирование системных промптов. Про эту проблему кричат на всех форумах. Но ждать фикса от разработчиков можно до Qwen 4.0.

💡
На 17.03.2026 последние версии Qwen 3.5 (например, Qwen3.5-14B-2025-12 и Qwen3.5-32B-2026-01) все еще страдают от этих багов в большинстве бэкендов. Llama.cpp версии 2026.03, Open WebUI 0.7.x и vLLM 0.5.x — не исключение.

Спасение пришло: исправленный чат-шаблон

Я собрал все известные баги (ровно 21 критический) в один чат-шаблон. Это не костыль, а полноценная замена. Он исправляет логику формирования промпта, парсинг tool-calls, управление контекстом и стриминг ответов.

1Что внутри? 21 исправление

  • Фикс бесконечных циклов вызова инструментов (тот самый, когда модель "думает" вечно).
  • Исправление парсинга JSON для tool-calls — теперь нет галлюцинаций вроде "{'name': 'tool', 'arguments': ...}".
  • Правильная обработка системного промпта. Модель наконец-то его слушается.
  • Исправление стриминга: токены приходят по мере генерации, а не одним куском в конце.
  • Фикс для повторной обработки промптов в llama.cpp, который ломал агентские циклы.
  • Поддержка параллельных вызовов инструментов (parallel tool calling).
  • Корректное завершение генерации после tool-call.
  • И еще 14 точечных исправлений для специфичных багов в разных бэкендах.
БэкендВерсия (на 17.03.2026)Статус совместимости
llama.cpp2026.03+✅ Полная поддержка
Open WebUI0.7.x✅ Работает из коробки
vLLM0.5.x✅ Требуется конфиг
Ollama0.5.x⚠️ Частично (см. гайд по исправлению)

2Установка за 5 минут

Шаблон — это один файл JSON. Качаете, кладете в нужную папку, прописываете путь в конфиге. Вот и вся магия.

# Клонируем репозиторий с исправленным шаблоном
git clone https://github.com/username/qwen-35-fixed-chat-template.git
cd qwen-35-fixed-chat-template
# Копируем шаблон для llama.cpp
cp qwen_fixed_chat_template.json ~/.cache/lm-studio/models/chat-templates/

Внимание! Если вы используете LM Studio или текстовики вроде text-generation-webui 4.1, убедитесь, что отключили встроенный шаблон Qwen. Иначе будет конфликт.

3Настройка для llama.cpp: от хаоса к порядку

В llama.cpp (актуальная версия 2026.03) укажите путь к шаблону через флаг --chat-template. Больше никаких хаков с пересборкой.

./main -m qwen3.5-14b-q4_k_m.gguf \
  --chat-template ./qwen_fixed_chat_template.json \
  --ctx-size 8192 \
  -p "<|im_start|>system\nВы полезный AI ассистент.<|im_end|>\n<|im_start|>user\nНайди информацию о погоде.<|im_end|>"

Системный промпт теперь работает. Модель не будет его игнорировать или повторять бесконечно. Проверено на Qwen3.5-32B-2026-01.

4Open WebUI и vLLM: тонкая настройка

Для Open WebUI 0.7.x добавьте шаблон в настройки модели. В vLLM 0.5.x используйте параметр chat_template в классе ChatCompletionRequest. Подробности — в гайде по Open Terminal.

Живые примеры: от простого агента до сложного workflow

Теория — это хорошо. Но как это работает на практике? Вот пример агентского цикла с tool calling.

# Пример на Python с использованием исправленного шаблона
import requests
import json

# Конфигурация для локального сервера llama.cpp с исправленным шаблоном
API_URL = "http://localhost:8080/completion"

# Описание инструментов в формате JSON Schema
tools = [
    {
        "type": "function",
        "function": {
            "name": "get_weather",
            "description": "Получить погоду в городе",
            "parameters": {
                "type": "object",
                "properties": {
                    "city": {"type": "string"}
                }
            }
        }
    }
]

# Запрос с tool calling
payload = {
    "prompt": "<|im_start|>system\nТы ассистент с доступом к инструментам.<|im_end|>\n<|im_start|>user\nКакая погода в Москве?<|im_end|>",
    "temperature": 0.7,
    "n_predict": 512,
    "stop": ["<|im_end|>", "<|im_start|>"]
}

response = requests.post(API_URL, json=payload)
result = response.json()

# Модель вернет корректный JSON для вызова инструмента
# Без багов с незакрытыми скобками или лишними символами
print(result['content'])

Раньше такой код мог сломаться из-за сломанного tool calling в Qwen Coder Next. Теперь — работает.

Альтернативы? Их нет, но есть костыли

Можно пытаться исправить баги вручную. Патчить llama.cpp. Писать свои парсеры. Как в text-generation-webui 4.1. Но зачем?

  • Официальный шаблон от Alibaba: сломан. Ждать фикса — игра в рулетку.
  • Самодельные шаблоны из форумов: исправляют один баг, ломают два.
  • Исправленный шаблон: 21 багфикс, одна конфигурация, ноль головной боли.

Кому этот шаблон спасет жизнь?

Если вы:

То этот шаблон — must-have. Он превращает Qwen 3.5 из капризной модели в надежный инструмент.

Будущее: что будет с Qwen 4.0?

Alibaba, вероятно, исправит эти баги в Qwen 4.0 (когда она выйдет, предположительно в 2026-2027). Но до тех пор миллионы разработчиков используют Qwen 3.5. И этот шаблон — их спасение.

Мой прогноз? Даже после выхода Qwen 4.0, этот исправленный шаблон останется популярным для legacy-проектов. Как старый, проверенный друг, который никогда не подводит.

P.S. Не ждите, пока модель "починят сверху". Берите готовое решение и работайте. Баги должны вас бояться, а не вы — багов.

Подписаться на канал