GLM 4.5 Air: решение зацикливания в tool calling | Настройка llama.cpp | AiManual
AiManual Logo Ai / Manual.
29 Дек 2025 Гайд

GLM 4.5 Air: как заставить модель работать без зацикливания в тул-коллах

Подробный гайд по устранению зацикливания GLM 4.5 Air в тул-коллах. Настройка параметров llama.cpp, выбор TUI и лучшие практики для стабильных агентных моделей.

Проблема: почему GLM 4.5 Air зацикливается в тул-коллах?

Если вы работаете с GLM 4.5 Air через llama.cpp и сталкиваетесь с бесконечными циклами при вызовах инструментов, вы не одиноки. Это классическая проблема агентных моделей, которая возникает из-за неправильного взаимодействия между:

  • Системным промптом и ожиданиями модели
  • Параметрами генерации (temperature, top_p, penalty)
  • Форматированием ответов в JSON для tool calling
  • Ограничениями контекста и управлением историей диалога

Важно: Зацикливание — это не баг модели, а следствие её попыток "угадать", что вы от неё хотите, при неоптимальных настройках. GLM 4.5 Air, как и другие модели с поддержкой tool calling, требует точной калибровки.

Эта проблема особенно актуальна для разработчиков, создающих AI-агентов как сотрудников, где стабильность выполнения инструментов критически важна.

Решение: системный подход к настройке

Вместо случайного подбора параметров нужен структурированный подход. Мы разобьём решение на три этапа: подготовка модели, настройка llama.cpp и выбор правильного интерфейса (TUI).

1 Подготовка модели и конвертация

Первое, что нужно проверить — правильно ли конвертирована модель для llama.cpp. GLM 4.5 Air использует специфичный формат tool calling, который должен сохраниться при конвертации.

# Конвертация GGUF с поддержкой tool calling
python convert.py \
  --model-path /path/to/glm-4.5-air \
  --outfile glm-4.5-air-Q4_K_M.gguf \
  --outtype q4_k_m \
  --ctx 8192  # Минимум 8K для tool calling
💡
Используйте последнюю версию llama.cpp для конвертации. Старые версии могут некорректно обрабатывать схемы инструментов GLM 4.5 Air. Проверьте репозиторий на GitHub — обновления выходят часто.

2 Критические параметры llama.cpp для tool calling

Вот параметры командной строки, которые чаще всего вызывают зацикливание, и их оптимальные значения для GLM 4.5 Air:

Параметр Проблемное значение Оптимальное значение Объяснение
--temp 0.8+ (высокая креативность) 0.3-0.5 Слишком высокая температура приводит к "фантазированию" с инструментами
--repeat-penalty 1.0 (нет штрафа) 1.1-1.2 Предотвращает повторение одних и тех же вызовов инструментов
--top-p 0.95+ (широкий выбор) 0.7-0.85 Ограничивает пространство возможных токенов для более предсказуемых JSON
--mirostat 2 (агрессивный) 0 (выключен) или 1 Mirostat 2 может конфликтовать со structured output

Пример рабочей команды запуска:

./llama-cli -m glm-4.5-air-Q4_K_M.gguf \
  --temp 0.4 \
  --top-p 0.8 \
  --repeat-penalty 1.15 \
  --repeat-last-n 64 \
  --ctx 8192 \
  --no-mmap \
  --n-gpu-layers 99  # Все слои на GPU если возможно

3 Системный промпт и форматирование

GLM 4.5 Air требует чётких инструкций по формату ответа. Вот минимальный рабочий системный промпт:

system_prompt = """Ты — полезный ассистент с доступом к инструментам.

ПРИ ВЫЗОВЕ ИНСТРУМЕНТА:
1. Используй ТОЧНО этот JSON формат:
{
  "name": "имя_инструмента",
  "arguments": {"arg1": "value1"}
}

2. Вызывай только ОДИН инструмент за раз.
3. Жди результата перед следующим действием.
4. Не добавляй пояснений до или после JSON.
"""

Предупреждение: Не смешивайте инструкции по tool calling с другими системными требованиями в одном промпте. Сначала добейтесь стабильной работы инструментов, затем добавляйте другие правила, как правильный подсчёт времени.

Выбор TUI: какой интерфейс лучше для GLM 4.5 Air?

Не все текстовые интерфейсы одинаково хорошо работают с tool calling. Вот сравнение популярных вариантов:

  • llama.cpp (стандартный CLI) — максимальный контроль, но требует ручного парсинга JSON
  • Ollama — удобная обёртка, но может добавлять лишние форматирования
  • LM Studio — хороший UI, но ограниченная кастомизация параметров
  • text-generation-webui — мощный, но тяжёлый для простых задач

Для отладки зацикливания я рекомендую начать с чистого llama.cpp CLI, чтобы исключить влияние промежуточного ПО.

Пошаговый план устранения зацикливания

  1. Проверьте конвертацию — убедитесь, что использовали последнюю версию convert.py
  2. Сбросьте параметры к базовым --temp 0.3 --top-p 0.8 --repeat-penalty 1.1
  3. Упростите системный промпт — только инструкции по tool calling
  4. Тестируйте с одним инструментом — например, простой калькулятор
  5. Включите логирование --log-disable false для анализа токенов
  6. Постепенно добавляйте сложность — больше инструментов, сложные промпты

Распространённые ошибки и их решения

Симптом Причина Решение
Модель вызывает один инструмент бесконечно Слишком низкий repeat-penalty Увеличьте --repeat-penalty до 1.2
JSON ломается (синтаксические ошибки) Высокая температура или top_k Понизьте --temp до 0.3, установите --top-k 40
Модель "забывает" вызывать инструменты Переполнение контекста Уменьшите историю или увеличьте --ctx
Инструменты вызываются в неправильном порядке Отсутствие чёткой пошаговой инструкции Добавьте "Действуй шаг за шагом" в промпт

Продвинутые техники для сложных агентов

Когда базовые настройки работают, можно переходить к сложным сценариям. Например, создание агентов, которые могут взаимодействовать друг с другом — именно такая ситуация описана в статье про хаос второго порядка в AI-ботах. Для этого:

# Пример управления несколькими инструментами с приоритетами
tool_priority = {
    "get_data": 1,    # Сначала получить данные
    "analyze": 2,     # Затем проанализировать
    "decide": 3,      # Принять решение
    "execute": 4      # Выполнить действие
}

# Добавьте в системный промпт:
"Выполняй инструменты в логическом порядке: сбор данных → анализ → решение → действие."

Аппаратные рекомендации

GLM 4.5 Air — достаточно лёгкая модель, но для стабильного tool calling нужны определённые ресурсы. Если вы выбираете железо для AI-разработки, сравните варианты в нашем обзоре GB10 vs RTX vs Mac Studio. Для GLM 4.5 Air с тул-коллингом я рекомендую:

  • Минимум 16GB ОЗУ — для контекста 8K+ инструментов
  • RTX 3060 12GB или лучше — для полной загрузки модели в VRAM
  • SSD NVMe — быстрая загрузка весов уменьшает лаг между вызовами

FAQ: частые вопросы по GLM 4.5 Air и tool calling

В: GLM 4.5 Air постоянно добавляет текст после JSON. Как убрать?

О: Добавьте в конец системного промпта: "После JSON НИЧЕГО не пиши. Только чистый JSON." Также уменьшите --temp до 0.2.

В: Модель игнорирует некоторые инструменты. Почему?

О: Возможно, описание инструмента слишком сложное. Упростите schema, используйте короткие имена и минимальное количество параметров.

В: Какой квант лучше для tool calling: Q4_K_M или Q5_K_M?

О: Q5_K_M даёт немного лучшую точность в structured output, но Q4_K_M быстрее. Начните с Q4_K_M, если будут проблемы — попробуйте Q5_K_M.

Заключение

GLM 4.5 Air — мощная модель для локального tool calling, но требует точной настройки. Ключевые моменты: низкая температура (0.3-0.5), умеренный repeat penalty (1.1-1.2), чистый системный промпт и правильная конвертация. После настройки вы получите стабильного агента, который может работать с десятками инструментов без зацикливания.

Для более сложных задач рассмотрите другие модели из нашего обзора лучших локальных LLM с тул-коллингом, но помните: GLM 4.5 Air остаётся одним из лучших вариантов по соотношению скорость/качество для большинства практических задач.