инструменты 1 мин

Как заставить локальные LLM не ломать JSON: грамматический подход через llama.cpp

Разработчик решил проблему невалидного JSON от локальных моделей через GBNF-грамматики в llama.cpp. Система компилирует схемы инструментов в правила грамматики, которые запрещают модели генерировать невалидный вывод на уровне токенов. Применил в проекте Eris — локальном AI-агенте на Rust с памятью в Markdown.

Если вы строите AI-агентов на локальных моделях или хотите избавиться от зависимости от OpenAI — это конкретное техническое решение, а не очередной концепт. Для остальных — сигнал, что оффлайн AI становится реальностью.

Что произошло

Разработчик под ником paulqq опубликовал техническое решение старой боли локальных LLM: ненадёжный структурированный вывод. В отличие от OpenAI API, которые гарантируют валидный JSON на сервере, локальные модели регулярно ломают формат — теряют закрывающие скобки, придумывают несуществующие названия инструментов, дописывают текст после JSON.

Подход основан на GBNF-грамматиках llama.cpp — механизме, который ограничивает возможные токены на каждом шаге генерации. Автор написал компилятор, превращающий JSON-схемы инструментов в грамматические правила. Модель физически не может сгенерировать невалидный символ.

Дополнительная оптимизация: грамматика сужается под каждый контекст — вместо всех 50 инструментов модель видит только 3-5 релевантных. Это ускоряет генерацию и снижает вероятность галлюцинаций.

Решение встроено в Eris — локального AI-агента на Rust, который использует Markdown-заметки как память и работает полностью оффлайн. Код открыт под Apache 2.0, детальный разбор с примерами на сайте проекта.

Автор: Павел Заславский · Источник: reddit.com

Разработчикам. Готовое решение для constrained generation в llama.cpp: компилятор схем в GBNF-грамматики, динамическое сужение контекста инструментов, референсная реализация на Rust. Применимо для любых агентов и пайплайнов с локальными моделями, где критична валидность JSON.

Бизнесу. Позволяет надёжно запускать AI-агентов на собственном железе без зависимости от API: гарантированный структурированный вывод, полный контроль данных, нулевые затраты на токены при масштабировании. Актуально для корпоративных систем с требованиями к приватности.

Инвесторам. Растёт спрос на оффлайн AI-решения из-за приватности и стоимости API. Инструменты для надёжной работы локальных моделей (констрейнты, агенты, RAG) — растущая ниша. Проекты вроде llama.cpp набирают тягу, экосистема инструментов вокруг них недоразвита.

Хайп25
Реальная польза55
Заработать50
  • SaaS для разработчиков: конструктор GBNF-грамматик с UI — загрузил схему, получил готовые правила для llama.cpp
  • Managed-хостинг локальных агентов с гарантией структурированного вывода: альтернатива OpenAI Assistants для компаний с требованиями к приватности
  • Библиотека constrained generation для популярных фреймворков (LangChain, Haystack) — интеграция GBNF как drop-in решение
  • Платный курс/воркшоп по построению надёжных локальных AI-агентов: спрос есть, качественных гайдов мало
  • Форк Eris под конкретные вертикали: персональный ассистент для врачей/юристов/исследователей с оффлайн-гарантиями
  • Грамматики замедляют генерацию — для быстрых сценариев может быть неприемлемо
  • Ограничено экосистемой llama.cpp — решения для других движков (vLLM, TGI) требуют переписывания
  • Локальные модели всё ещё проигрывают в качестве: constrained generation не компенсирует слабость базовой модели
  • Узкая аудитория: большинство разработчиков предпочтут заплатить OpenAI, чем возиться с локальными агентами

Это редкий случай, когда разработчик не просто пожаловался на проблему, а выкатил рабочее решение с кодом и документацией. GBNF-грамматики в llama.cpp — не новость, но мало кто использует их системно для агентов. Paulqq показал, как превратить это в production-ready инструмент: компилятор схем, динамическое сужение контекста, интеграция в полноценного агента.

Реальная польза пока для узкого круга: тех, кто по идеологическим (приватность) или экономическим (скейл) причинам не может или не хочет платить OpenAI. Для большинства это интересно как референс, но не как решение на завтра. Однако тренд на локальные модели крепнет, и через год такие инструменты могут стать мейнстримом. Следить за проектом стоит.

Ещё по теме

Комментарии