Архитектура промышленной системы с генеративной моделью
Production-система — это не только endpoint модели. Она включает данные, retrieval, prompt assembly, инструменты, policy, валидацию, наблюдаемость, evals и fallback.
Краткий ответ
Production-система — это не только endpoint модели. Она включает данные, retrieval, prompt assembly, инструменты, policy, валидацию, наблюдаемость, evals и fallback.
Production-система — это не только endpoint модели. Она включает данные, retrieval, prompt assembly, инструменты, policy, валидацию, наблюдаемость, evals и fallback. Модель следует считать вероятностным компонентом внутри обычной инженерной системы с явными контрактами.
Начните с пользовательской задачи
Сформулируйте, кто принимает результат и какое действие последует. «Добавить ИИ» не является требованием. Измеримая цель звучит так: «Сократить время поиска ответа по утверждённым инструкциям, сохранив ссылку на актуальный пункт и не раскрывая документы другого отдела».
Определите out-of-scope: юридическая интерпретация, кадровое решение, изменение исходного документа. Эти границы попадают в интерфейс, policy и тесты.
Слои системы
Типичный путь запроса:
1. Gateway аутентифицирует пользователя, назначает tenant и rate limit. 2. Policy определяет доступные документы и инструменты. 3. Retrieval получает разрешённые фрагменты и их версии. 4. Prompt builder отделяет доверенные инструкции от пользовательских данных. 5. Model gateway фиксирует модель, параметры, тайм-аут и бюджет. 6. Валидатор проверяет схему, ссылки и бизнес-инварианты. 7. Ответ, метрики и trace сохраняются с безопасной редакцией данных.
Каждый слой можно тестировать отдельно. Если модель недоступна, система выбирает понятный fallback: обычный поиск, очередь на человека или сообщение об ошибке, но не бесконечный spinner.
Контракты и доверительные границы
Вход и выход инструмента описываются схемой. Retrieval возвращает идентификатор источника, версию и ACL. Генератор не придумывает разрешения. Детерминированный код решает, разрешено ли действие и существует ли цитата.
Недоверенными считаются prompt пользователя, загруженный файл, веб-страница и результат внешнего API. Даже если этот текст находится внутри контекста, он не получает права изменить policy. Секреты не включаются в prompt.
Наблюдаемость без утечки
Собирайте идентификатор запроса, версию prompt, модель, число токенов, latency этапов, найденные идентификаторы источников, вызовы инструментов, код отказа и feedback. Полные тексты могут содержать персональные данные, поэтому логирование требует минимизации, срока хранения и доступа.
Метрика «ответ получен» недостаточна. Нужны доля решённых задач, groundedness, корректный отказ, p95 latency, стоимость, частота эскалации и safety-инциденты. Dashboard должен позволять перейти от ухудшения к конкретному этапу.
Релиз и rollback
Версионируйте модель, tokenizer, system prompt, retrieval index, chunking, schemas и policy. Новый релиз проходит offline eval, shadow traffic или ограниченный canary. Сравнение ведётся на одинаковом распределении.
Rollback должен возвращать согласованный набор компонентов. Откат только prompt при уже изменённом индексе может не восстановить поведение. Для мутаций инструментов применяйте idempotency и журнал исполнения.
Упражнение: дизайн-ревью
Спроектируйте ассистента по документации университета. Нарисуйте путь запроса и отметьте, где проверяются роль студента, актуальность документа, корректность ссылки и запрет на изменение данных.
Добавьте сценарии: индекс недоступен; найден старый приказ; модель вернула несуществующий идентификатор источника; пользователь загрузил файл с prompt injection. Для каждого задайте безопасный fallback и метрику.
Частые вопросы
Можно ли начать с прямого вызова модели из frontend?
Для прототипа это кажется быстро, но раскрывает ключи и лишает сервер контроля доступа, логики и лимитов. Production-вызов должен проходить доверенный backend или gateway.
Нужно хранить все prompts и ответы?
Не обязательно и часто опасно. Храните минимально необходимую телеметрию по определённой цели, сроку и доступу; чувствительный payload можно редактировать, агрегировать или не сохранять.
Guardrails — отдельная модель?
Иногда используется классификатор, но guardrails шире: ACL, schemas, allowlists, human confirmation, filters, sandbox, monitoring и response procedure.
Что важно запомнить
- Модель — один вероятностный компонент, а не вся production-система.
- Доверенный код обеспечивает доступ, инварианты и выполнение действий.
- Наблюдаемость должна локализовать ошибку и одновременно минимизировать данные.
- Версионирование, canary, fallback и rollback обязательны для управляемого релиза.
https://yadro-code.ru/lessons/without-university/generative-ai-foundations/generative-ai-17