Что произошло
Разработчики обнаружили, что LLM гораздо надёжнее работают с предметно-ориентированными языками (DSL), чем с естественным языком или сложными языками программирования. Суть в том, что ограниченный синтаксис DSL позволяет:
- Чётко определить границы допустимых конструкций
- Автоматически отлавливать ошибки через валидацию
- Уменьшить «галлюцинации» за счёт предсказуемой структуры
«DSL работают как статическая типизация для ИИ — отсекают целые классы ошибок до выполнения» (комментарий из обсуждения)
Детали
-
Как это работает на практике:
- Пользователь описывает задачу на естественном языке
- LLM переводит её в строгий DSL (например, конфиг в JSON)
- Внешний валидатор проверяет корректность
- При ошибке — цикл повторяется до получения валидного результата
-
Популярные форматы:
- JSON/YAML (простая структура, встроенная поддержка в большинстве языков)
- PlantUML (для диаграмм)
- KDL (альтернатива JSON с улучшенной читаемостью)
-
Цифры:
- В тестах использование DSL снижает количество ошибок исполнения на 40-60%
- Среднее число итераций для получения валидного кода: 2-3 против 5-7 без DSL
DSL не должны быть сложными — их сила в ограниченности. Идеальный вариант: 10-15 ключевых конструкций с жёсткими правилами комбинации.
Почему это важно
-
Практическая польза:
- Реальные проекты уже используют этот подход для генерации:
- Конфигураций инфраструктуры (Terraform, Ansible)
- Тестовых данных
- SQL-запросов
- Реальные проекты уже используют этот подход для генерации:
-
Снижение когнитивной нагрузки:
- Разработчику не нужно править «сырой» вывод LLM
- Ошибки обнаруживаются до попадания в продакшен
-
Компромисс между гибкостью и надёжностью:
- DSL — это «песочница», где ИИ может творить без катастрофических последствий
Что дальше
-
Интеграция с инструментами:
- Браузерные расширения для валидации DSL на лету
- Генераторы DSL по описанию на естественном языке
-
Эволюция подходов:
- Грамматики для контроля вывода (как в llama.cpp)
- DSL-ориентированные тонкие настройки моделей
Метод не панацея — сложные логические ошибки всё равно требуют человеческого контроля. Но для рутинных задач это серьёзный шаг вперёд.
Источники
- Оригинал: news.ycombinator.com — © news.ycombinator.com