Как Snyk превратила внутренний агент поддержки в клиентскую функцию

Источник: LangChain•

Как Snyk превратила внутренний агент поддержки в клиентскую функцию

Узнайте, как Snyk превратила внутренний агент поддержки в Snyk Assist — ИИ-функцию для клиентов, работающую на базе LangChain, LangGraph и LangSmith.

Snyk — это платформа безопасности на базе ИИ. Она находит и устраняет уязвимости в коде, зависимостях с открытым исходным кодом, контейнерах и конфигурациях облачных сред, интегрируясь в рабочие процессы разработчиков: IDE, пул-реквесты и конвейеры CI/CD.

Мы создаем продукты безопасности для разработчиков, а это значит, что наши клиенты задают сложные и специфические вопросы. Им нужны ответы об уязвимостях, контексте учетной записи, проблемах с поддержкой и работе продукта, причем часто прямо во время выполнения реальных задач. До появления Snyk Assist эта информация была разбросана по документации, статьям поддержки, примечаниям к выпускам, обучающим материалам и данным учетных записей. Поиск нужного ответа обычно означал чтение нескольких страниц или создание тикета и ожидание ответа.

Snyk Assist — это разговорный агент, построенный на базе LangChain и LangGraph, с управлением наблюдаемостью через LangSmith. Он помогает клиентам находить ответы на простом языке и может выполнять действия от их имени. Агент может искать открытые проблемы, проверять пакет на наличие известных уязвимостей, открывать обращение в службу поддержки прямо из чата или регистрировать запрос на новую функцию, если мы еще не поддерживаем нужный пользователю рабочий процесс.

Все началось как внутренний инструмент для нашей собственной команды поддержки. В сентябре 2026 года мы перенесли его в основной продукт Snyk, где он стал доступен каждому платному клиенту.

В этой статье мы расскажем, как создавали Snyk Assist: от первоначального сценария внутренней поддержки до клиентского продукта. Мы также рассмотрим архитектуру системы, включая то, как мы управляли правами доступа, состоянием, защитными барьерами и оценкой качества по мере масштабирования.

Задача: поддержка, которая не масштабировалась, и высокая планка для внедрения ИИ

Наша команда поддержки обрабатывает тысячи обращений каждые пару недель. Каждое из них нужно было прочитать, классифицировать по продукту, степени серьезности и ответственному, а затем направить в нужный отдел. Это создало проблему масштабирования по мере роста числа запросов клиентов. Агент был очевидным решением, но поскольку мы создаем программное обеспечение для безопасности, все, что мы предоставляем клиентам, должно соответствовать тем же стандартам, что и остальная часть нашего продукта. Нам нужно было доказать три вещи: что агент отвечает правильно, отказывается от того, что должен отклонять, и никогда не возвращает ничего, что пользователю не разрешено видеть.

«Сложность создания агентов заключается не в том, что может сделать модель, а в доказательстве того, что агент действительно работает. Мы пропускаем каждое изменение через тесты в LangSmith, и если оно не проходит проверку, оно не попадает в релиз».

— Бейли Миллнс, AI-инженер, Snyk

Вместо того чтобы запускать продукт сразу, мы начали с внутреннего тестирования в нашей команде. Такой подход гарантировал, что любые первоначальные ошибки останутся внутри Snyk, а не затронут платных клиентов. Это также позволило нам безопасно тестировать более рискованные функции и наблюдать за поведением агента перед более широким развертыванием.

Этот внутренний этап позволил нам выстроить операционную модель с использованием LangSmith до внедрения функций для клиентов. Каждый след (trace) из этих ранних сессий напрямую попадал в наши наборы для оценки, что дало нам четкое понимание того, как агент будет работать к моменту запуска в портале поддержки.

Этап 1: внутренние инструменты

Примерно год Snyk Assist работал как внутренний инструмент для команды поддержки клиентов, выполняя функции как сортировщика обращений, так и виртуального агента, причем единственными пользователями были сотрудники Snyk. Внутреннее тестирование агента позволило нам выявить граничные случаи, которые не проявлялись при автономном тестировании, а цикл обратной связи измерялся часами, а не циклами выпуска.

Этап 2: портал поддержки

В апреле 2026 года мы запустили Snyk Assist для клиентов в нашем портале поддержки. На этом этапе он мог приветствовать пользователей по имени, понимать контекст учетной записи, проводить проверку работоспособности при входе в систему и создавать тикет в любое время суток, не дожидаясь участия человека.

Этап 3: основной продукт

1 сентября 2026 года Snyk Assist был интегрирован в основной продукт Snyk вместе с нашей новой навигацией в виде панели в верхней части каждой страницы для каждого платного клиента.

Мы сохранили одну и ту же среду выполнения агента на каждом этапе. Единственное, что изменилось — это интерфейс перед ним.

Одна среда выполнения, много точек входа

Snyk Assist — это единый агент LangGraph, работающий через несколько интерфейсов: приложение Slack, веб-приложение и прямой доступ через API, — все они проходят через один и тот же защищенный фреймворк.

Мы выбрали LangChain из-за его обширного сообщества, надежной экосистемы и статуса отраслевого стандарта для создания агентов.

«У LangChain было самое большое сообщество и экосистема, и он быстро становился де-факто стандартом для создания агентов».

— Джада Росс, AI-инженер, Snyk

Работая небольшой командой, мы хотели иметь единую среду выполнения, чтобы исправлять ошибки, выпускать функции и реагировать на инциденты из одного места. Эта простота позволила нам быстро масштабироваться, не фрагментируя архитектуру.

Кроме того, использование промежуточного ПО (middleware) LangChain вместо создания собственного решения обеспечило четкие точки интеграции для контекста, защитных барьеров и резервных моделей. Такая настройка позволяет нам обновлять или переупорядочивать функциональность с помощью простых правок в одну строку, а не путем масштабного переписывания кода.

Вот четыре проектных решения, которые сделали систему пригодной для работы в продакшене:

  • Инструменты как типизированные функции, регистрируемые для каждого пользователя. Мы подключаем инструменты во время запроса на основе прав доступа, которыми реально обладает вошедший в систему пользователь. Это означает, что агент может получить доступ только к тем данным, которые пользователь и так мог видеть. Большинство инструментов — это отдельные микросервисы, что позволяет нам масштабировать их независимо и добавлять возможности, не меняя цикл работы агента.
  • Промежуточное ПО вместо сложной связки. Управление контекстом, защитные барьеры и резервные модели подключаются к определенным точкам жизненного цикла агента, а не прописываются вручную в цикле. Добавление или изменение поведения требует лишь изменения одной строки в списке, а не полной переработки.
  • Состояние, управляемое через checkpointer. История разговоров сохраняется в PostgreSQL и индексируется по сессии, поэтому многоходовая память, масштабирование между подами и возобновление разговора работают без дополнительной настройки.
  • Цикл как внутренняя платформа. Поскольку агент — это просто модель, инструменты, промпт, промежуточное ПО и checkpointer, общая фабрика возвращает скомпилированный граф, а каждая команда предоставляет свою конфигурацию. Большинство новых рабочих процессов — это изменение конфигурации, а не новая архитектура.

«С точки зрения разработки, LangChain предоставил нам готовую абстракцию агента, чтобы мы могли сосредоточиться на влиянии и возможностях нашего агента, а не изобретать заново оркестрацию, вызов инструментов, потоковую передачу и управление состоянием».

— Мэтт Джарвис, директор по AI-инженерии, Snyk

Как мы оцениваем каждое изменение

Каждый вызов модели, вызов инструмента и точка принятия решения отслеживались в LangSmith с первого дня разработки. Этот след стал основой того, как мы выпускаем обновления.

Мы используем два уровня оценки.

Автономная оценка (offline evaluation) запускает наборы тестовых вопросов в LangSmith. Первый уровень — это реальные вопросы с известными правильными ответами, которые оцениваются второй моделью, чтобы мы могли быстро понять, ухудшило ли изменение промпта или модели качество ответа. Второй уровень — это автоматизированное red-teaming упражнение, где люди пытаются обмануть агента, заставив его игнорировать инструкции или выдать секретные данные.

CI в качестве шлюза означает, что каждый pull request запускает реальный агент для этих наборов тестов и блокируется при недостижении согласованных пороговых значений, зафиксированных в репозитории.

Онлайн-оценка выставляет баллы каждому производственному запуску с помощью запланированного задания. Мы проверяем две вещи: касалось ли это Snyk и был ли получен ответ на вопрос? Эти оценки дают нам измеренный коэффициент отклонения вместо приблизительной оценки. Мы также классифицируем каждый вопрос по области продукта, теме, языковой экосистеме и типу ошибки, предоставляя менеджерам по продукту актуальную карту того, с чем сталкиваются клиенты.

Замыкание цикла происходит внутри наших агентов кодирования через сервер LangSmith MCP. Когда мы находим неудачную трассировку, мы можем исследовать ее и превратить в набор данных, не покидая IDE.

Поскольку каждый шаг отслеживается в LangSmith, мы можем тестировать изменения на реальных вопросах, обнаруживать регрессии до их выпуска и быстро превращать неудачные трассировки в новые наборы данных. Это дает нам более быстрый цикл обратной связи и значительно упрощает уверенный выпуск обновлений.

Результат: меньше тикетов, более быстрые ответы

С момента запуска Snyk Assist для клиентов в апреле 2026 года:

  • Обработано более 60 000 запросов
  • Более 500 клиентских аккаунтов
  • Более 85% сессий разрешены без создания тикета в службу поддержки, что сэкономило команде поддержки сотни часов
  • Более 250 случаев автоматически обнаружены агентом и переданы непосредственно нужной команде

Каждый диалог оценивается и классифицируется, поэтому мы видим, какие части продукта вызывают наибольшее замешательство. Это помогает нам улучшать документацию.

Основные выводы и что дальше

Snyk Assist начинался как инструмент для собственной службы поддержки Snyk. Сегодня он обработал более 60 000 запросов клиентов и разрешает более 85% сессий без создания тикета в службу поддержки. С сентября Snyk Assist стал частью самого продукта, доступной на каждой странице параллельно с работой, которую уже выполняют клиенты. Мы хотим, чтобы он стал полезной частью опыта Snyk для каждого клиента.

Ссылка: https://docs.snyk.io/navigate-the-snyk-web-ui#snyk-assist

О чём эта статья

Ещё в разделе «AI и машинное обучение»

Все →

Ещё от LangChain