Ошибки парсера LM Studio нарушают вызов инструментов и логику Qwen3.5.

Проблемы парсера LM Studio, влияющие на модели с рассуждениями
Парсер сервера LM Studio содержит несколько ошибок, которые мешают вызову инструментов и рассуждениям в таких моделях, как Qwen3.5 и DeepSeek-R1. Эти проблемы могут создавать впечатление, что модели сломаны, хотя проблема на самом деле в парсере.
Ошибки
1. Парсер сканирует внутри блоков <think> в поисках паттернов вызова инструментов
Когда модели с рассуждениями размышляют о синтаксисе вызова инструментов внутри своих блоков <think>, парсер LM Studio воспринимает эти упоминания в тексте как реальные попытки вызова. Это создает рекурсивную ловушку: модель рассуждает о вызовах инструментов, парсер находит похожие на вызов токены в размышлениях, разбор завершается ошибкой, ошибка передаётся обратно модели, и цикл повторяется.
Модель буквально не может отладить проблему с вызовом инструментов, потому что описание проблемы воспроизводит её. Одна модель прямо сказала: «Я попадаю в цикл, где мои мысли о синтаксисе вызова инструментов интерпретируются как реальные маркеры вызова» — и само это предложение запустило парсер.
Об этом впервые сообщили в задаче #453 в феврале 2025 года, и она остаётся открытой более года спустя.
Обходное решение: Отключите рассуждения с помощью {%- set enable_thinking = false %}. Это мгновенно исправляет проблему, позволяя успешно выполнить 20+ последовательных вызовов инструментов.
2. Регистрация второго сервера MCP ломает разбор вызовов инструментов для первого
Эта ошибка чистая и детерминированная. Тестирование с lfm2-24b-a2b при temperature=0.0 показывает:
- Активен только сервер KG: Модель правильно вызывает
search_nodes, парсер распознаёт токены<|tool_call_start|>, инструмент выполняется, результаты возвращаются. Работает идеально. - Добавьте сервер webfetch (даже не вызывая его): Модель выводит
<|tool_call_start|>[web_search(...)]<|tool_call_end|>как обычный текст в чате. Специальные токены больше не распознаются. Инструмент никогда не выполняется.
Одна лишь регистрация второго сервера MCP — без его вызова — меняет то, как парсер обрабатывает вызовы инструментов первого сервера. Та же модель, тот же промпт, тот же целевой сервер. Изменилась одна переменная.
Обходное решение: Регистрируйте только тот сервер MCP, который вам нужен для каждой задачи. Это непрактично для агентских рабочих процессов.
3. Разделение reasoning_content/content на стороне сервера приводит к пустым ответам, которые сообщают об успехе
Это затрагивает всех, кто использует модели с рассуждениями через API, независимо от использования вызова инструментов. При отправке простого промпта Qwen3.5-35b-a3b через /v1/chat/completions с просьбой перечислить XML-теги, используемые для рассуждений, сервер вернул:
{
"content": "",
"reasoning_content": "[3099 токенов детальных размышлений]",
"finish_reason": "stop"
}
Модель проделала обширную работу — 3099 токенов рассуждений — но попала в цикл обдумывания внутри <think> и так и не сгенерировала вывод в поле content. Сервер вернул finish_reason: "stop" с пустым content, сообщая об успехе.
Это означает:
- Каждый набор тестов, проверяющий
finish_reason == "stop", молча принимает пустые ответы - Каждая агентская платформа передаёт пустые строки дальше по цепочке
- Каждый пользователь видит пустой ответ и делает вывод, что модель сломана
- Настоящие рассуждения заперты в
reasoning_content— модель проделала реальную работу, которую никто не видит, если явно не проверит это поле
Это проблема на стороне сервера, а не ошибка интерфейса, что подтверждается проверкой сырого ответа API и лога сервера LM Studio. Разделение reasoning_content/content происходит до того, как ответ достигнет любого клиента.
Взаимодействие ошибок
Это не независимые проблемы. Они взаимодействуют, создавая системные проблемы с вызовом инструментов и рассуждениями в LM Studio.
📖 Прочитать полный источник: r/LocalLLaMA
👀 Смотрите также

PeaDB: Совместимая с Redis база данных, написанная на C++20 с помощью ИИ-ассистентов
Разработчик создал PeaDB — замену Redis 7.2.5, написанную на C++20 с использованием Codex, Copilot и Claude, реализующую около 147 команд с поддержкой сохранения данных, репликации и кластеризации. Бенчмарки показывают производительность, близкую к Redis.

Переписанные навыки программирования Карпати для бесплатного плана открывают дисциплину кодирования Claude без Pro
Пользователь Reddit адаптировал руководство по дисциплине кодирования Карпати для бесплатного плана Claude, удалив зависимости от терминала и подагентов. Системный промпт автоматически срабатывает на запросы кода и стимулирует мышление, ориентированное на проверку.

Loom: Локальный исполнительный механизм для сложных задач искусственного интеллекта
Loom — это открытый локальный исполнительный фреймворк, предназначенный для управления сложными задачами. Он предоставляет структурированный процесс с примерно 50 инструментами, системой плагинов пользовательских пакетов для повторяющихся рабочих процессов, а также интерфейсы CLI и MCP-сервера.

LumaBrowser: Браузер на Electron передает парсинг DOM локальным LLM для AI-агентов
LumaBrowser — это браузер на основе Electron, который перекладывает парсинг DOM на локальные LLM через совместимые с OpenAI конечные точки, помогая автономным агентам избежать обработки сырого HTML. Он использует такие модели, как варианты Qwen 2.5, для идентификации элементов интерфейса и возвращает CSS-селекторы.