Эталонная архитектура: детерминированное ядро под управлением LLM
2026-09-17
Эталонная архитектура: детерминированное ядро под управлением LLM
Принцип одной строкой: LLM работает только на краях системы (понять запрос, изложить ответ), а вся фактура добывается, хранится и проверяется детерминированным кодом. ИИ не касается фактов — он их только запрашивает и цитирует.
1. Проблема, которую решает паттерн
LLM — вероятностный генератор: он может уверенно выдумать число, дату, цену, ссылку или источник. Инструкция «проверяй факты» не является барьером, потому что зависит от честности модели. Для систем, где враньё недопустимо (финансы, юридика, медицина, справочные данные), нужен механический барьер, не зависящий от поведения модели.
Ключевая идея: вынести всё, что касается фактов, из зоны ответственности модели в зону детерминированного кода.
2. Разделение ролей
| Слой | Кто | Может врать? | Ответственность |
|---|---|---|---|
| Интерпретатор | LLM | Да, но не критично | Понять намерение человека → привести к формальному запросу |
| Роутер | Код (или LLM под контролем) | Нет | Выбрать инструмент(ы) по формальному запросу |
| Добыча фактов | Код (инструмент с зашитым источником) | Нет | Сходить в источник, взять данные, положить в хранилище |
| Хранилище фактов | Код | Нет | Хранить факты с ярлыками (id) и метаданными источника |
| Верификатор | Код | Нет | Сверить факты в ответе с хранилищем по ярлыкам |
| Изложение | LLM (опционально) | Да → перепроверяется | Изложить проверенные факты человеческим языком |
3. Схема потока
diagram
Зелёное — детерминированный код (источник правды). Оранжевое — LLM (недоверенный край).
4. Три железных правила
- LLM не ходит в источники сама. В интернет / базу / API ходит только код инструмента с жёстко зашитым адресом. Модель не может подменить источник — она может лишь попросить «вызови инструмент X».
- LLM не наполняет хранилище фактов. В «ячейку» пишет только код инструмента. Модель физически не имеет доступа к руке, которая записывает факт. Она может только цитировать то, что код уже положил.
- Каждый факт проверяется по адресу, а не по смыслу. У факта есть ярлык (id), указывающий на конкретную ячейку с реальными данными. Верификатор сравнивает значение из ответа со значением в ячейке. Код не понимает темы — он сверяет «ключ ↔ ячейка», поэтому работает для любых фактов и любых источников.
5. Механика верификации
diagram
Защита от подмены ярлыка: если модель приклеит [t1] к выдуманному факту («нефть 70$ [t1]»), верификатор откроет ячейку t1 (там 21), не найдёт соответствия → заблокирует. Переиспользование чужого ярлыка ломается автоматически.
6. Типы сравнения (универсальный набор)
Верификатор — это один общий механизм плюс несколько «сравнивалок» по типу данных:
| Тип факта | Правило сверки |
|---|---|
| Число / цена / ставка | Числовое сравнение (с допуском на округление) |
| Дата | Привести к единому формату, сравнить |
| URL / идентификатор | Точное совпадение строки |
| Свободный текст / название | NLI-модель (подтверждается ли источником) |
Добавление нового инструмента не требует нового кода проверки, если он возвращает данные в общем формате значение + id + источник.
7. Роль LLM в этой схеме
LLM оправдана только там, где детерминированный код слаб:
- Вход: понять произвольный человеческий язык (сленг, опечатки, составные и неоднозначные запросы, контекст диалога) → привести к формальному запросу.
- Выход (опционально): изложить уже проверенные факты живым языком.
Всё между этими краями — выбор инструмента, добыча, хранение, проверка фактов — детерминированный код.
Если домен узкий и запросы шаблонны — LLM на входе можно заменить обычным интент-роутером. Чем критичнее система, тем больше и выхода отдают шаблонному коду, а не LLM.
8. Границы применимости
| Подходит | Не оправдано |
|---|---|
| Финансы, юридика, медицина, справочные данные | Творческие задачи (текст, идеи) |
| Любая система, где цена ошибки в факте высока | Задачи без проверяемых фактов |
| Агенты с доступом к инструментам и источникам | Чистая генерация без внешних данных |
9. Резюме
Недоверенный интерпретатор снаружи — детерминированное проверяемое ядро внутри.
Это применение давнего принципа надёжных систем (изолируй недоверенный компонент, критичную логику держи в проверяемом коде) к LLM-агентам. Модель никогда не является источником правды — она интерпретатор на входе и, под контролем кода, рассказчик на выходе. Факты живут в детерминированном ядре, а барьер верификации не зависит от честности модели.
