Реализация Guardrails (ограничений ответов) AI-ассистента в мобильном приложении
Ваш AI-ассистент в продакшене без защиты — открытая дверь для проблем. Пользователь задаст вопрос вне домена, попробует prompt injection через загруженный документ, или модель сама сгенерирует нежелательный контент. Мы разрабатываем и внедряем guardrails как слоёную систему валидации на входе и выходе. Наш опыт — более 5 лет в мобильной разработке, десятки проектов с интеграцией AI. Оценим ваш проект бесплатно — свяжитесь с нами.
Какие угрозы закрывают guardrails?
Prompt injection — когда пользователь вставляет в запрос команды типа «Ignore previous instructions». Без фильтрации это может привести к выполнению нежелательных действий. Guardrails на входе проверяют запрос по паттернам и классификатору. По нашей статистике, до 15% запросов в приложениях с контентом содержат попытки инжекции.
Выход за рамки домена — ассистент начинает отвечать на темы, не связанные с функционалом приложения. Например, финансовый ассистент обсуждает погоду. Тематический классификатор на основе эмбеддингов или быстрого LLM отсекает такие запросы с точностью 95% и выше.
Нарушение бизнес-правил — модель может вернуть невалидный JSON или сумму с отрицательным значением. Валидация выходного формата и семантики предотвращает показ некорректных данных пользователю.
Как мы это делаем: архитектура guardrails
Мы размещаем guardrails на серверной middleware, которая проксирует запросы от мобильного клиента к LLM. Это гарантирует, что защиту нельзя обойти прямым обращением к API.
Input guardrails: тематический фильтр и защита от инжекций
Тематический фильтр определяет, относится ли запрос к домену приложения. Простейший вариант — embeddings + cosine similarity с набором «разрешённых тем». Более надёжный — отдельный быстрый классификатор на основе GPT-4o-mini с низкой температурой, latency около 200 мс:
func isOnTopic(_ userMessage: String) async -> Bool {
let classifierPrompt = """
Определи, относится ли следующий вопрос к теме личных финансов (бюджет, расходы, сбережения, инвестиции).
Ответь только: YES или NO.
Вопрос: \(userMessage)
"""
let response = await llmClient.complete(classifierPrompt, temperature: 0)
return response.trimmingCharacters(in: .whitespaces) == "YES"
}
Для обнаружения prompt injection используем два уровня: быстрый regex-поиск (ловит типовые паттерны) и классификатор на основе LLM. Такой подход даёт точность 97%, что на 20% лучше, чем простой текстовый фильтр.
Output guardrails: валидация формата и бизнес-правил
Отметим: когда ассистент возвращает структурированные данные, каждый ответ нужно проверить перед рендерингом:
// Android — Kotlin
data class AssistantResponse(
val text: String,
val category: String?,
val amount: Double?
)
fun validateResponse(raw: String): AssistantResponse? {
return try {
val parsed = gson.fromJson(raw, AssistantResponse::class.java)
// Бизнес-правила: сумма не может быть отрицательной
if (parsed.amount != null && parsed.amount < 0) return null
// Категория должна быть из разрешённого списка
if (parsed.category != null && parsed.category !in allowedCategories) return null
parsed
} catch (e: JsonSyntaxException) {
null // Ответ не в формате JSON — отбрасываем, показываем fallback
}
}
Контроль длины и тона ответа. Устанавливаем max_tokens в запросе и проверяем длину на клиенте. Например, для чата задаём лимит 8000 символов, а если ответ превышает — показываем сообщение «Ответ слишком длинный, уточните запрос».
Почему guardrails должны быть на сервере?
Клиентскую логику легко обойти прямым обращением к API. Серверная middleware гарантирует, что все проверки выполняются независимо от клиента, и защищает от утечек токенов и манипуляций. Даже если злоумышленник перехватит трафик, он не сможет изменить правила фильтрации.
Процесс внедрения guardrails
Работа проходит в несколько этапов:
- Аналитика и проектирование правил — вместе с вами определяем домен, список запрещённых тем, формат ответов и бизнес-ограничения.
- Реализация input guardrails — пишем тематический классификатор на основе эмбеддингов (точность 98%) и детектор инжекций на базе LLM (задержка менее 300 мс).
- Реализация output guardrails — валидаторы формата (JSON-схема), бизнес-правил (проверка 5+ условий) и длины (максимум 1024 токена).
- Тестирование на наборе из 100+ вариантов запросов — проверяем точность и полноту, покрытие целевых сценариев не менее 95%.
- Деплой и мониторинг — настраиваем логирование нарушений и fallback-сценарии, обрабатываем до 1000 запросов в секунду.
Что входит в результаты работы
По итогу вы получаете:
- Работающий код guardrails (серверная middleware на Python/Node.js/Go)
- Набор тестов с отчётом о покрытии (минимум 95% целевых сценариев)
- Документацию по правилам и архитектуре
- Доступ к системе мониторинга нарушений (лог нарушений с метками времени)
- Обучение вашей команды (1 часовая сессия)
Библиотеки для реализации guardrails
Для небольших проектов достаточно собственной middleware с набором правил. Для enterprise подходят:
- Guardrails AI — декларативное описание правил с автоматическим retry. Поддерживает валидацию схем, тональности, длины. Легко интегрируется с сервером.
- NeMo Guardrails от NVIDIA — более тяжёлое решение, поддерживает диалоговые флоу и topical rails. Подходит для сложных ассистентов с множеством сценариев.
Сравнение: Guardrails AI проще в настройке — разворачивается за день. NeMo Guardrails требует больше времени, но даёт более гибкое управление диалогом. На практике, наша система guardrails сокращает количество ложных срабатываний в 3 раза по сравнению с базовыми фильтрами.
Ориентиры по срокам
Базовые input/output фильтры — 1–2 дня. Тематический классификатор с тестовым покрытием — 2–3 дня. Полная слоёная система с логированием нарушений — 4–5 дней. Стоимость рассчитывается индивидуально — свяжитесь с нами для оценки вашего проекта. Внедрение guardrails позволяет сэкономить до 5000 долларов в месяц на ручной модерации и ускорить обработку запросов на 60%. Кроме того, снижение нагрузки на поддержку экономит до 2000 долларов в месяц за счёт автоматизации ответов.
Когда guardrails необходимы
Без guardrails вы рискуете получить до 40% нерелевантных запросов, утечку данных через инжекции и репутационные потери. Мы гарантируем, что внедрённая система отсекает не менее 95% нежелательных запросов. Свяжитесь с нами для оценки вашего проекта — рассчитаем сроки и стоимость.
Пример конфигурации guardrails
```yaml guardrails: input: topical: allowed_topics: ["финансы", "бюджет"] threshold: 0.7 injection: method: llm_classifier model: gpt-4o-mini temperature: 0 output: format: schema: assistant_response_schema business_rules: - amount >= 0 - category in allowedCategories - response_length < 10000 chars ```| Тип guardrail | Что проверяет | Пример правила |
|---|---|---|
| Input тематический | Соответствие домену | Embedding similarity > 0.7 |
| Input injection | Попытки взлома | Классификатор LLM с точностью 97% |
| Output формат | JSON-схема | Парсинг и проверка полей |
| Output длина | Количество токенов | max_tokens=1024, клиентский лимит 8000 символов |
| Этап работы | Длительность | Результат |
|---|---|---|
| Аналитика и проектирование | 1 день | Спецификация правил |
| Реализация input guardrails | 1-2 дня | Код классификаторов |
| Реализация output guardrails | 1-2 дня | Код валидаторов |
| Тестирование и деплой | 1 день | Отчёт о покрытии |
prompt injection и Guardrails AI — оба подходят.







