COMRAD404 / HOWTO

Как мониторить производительность LLM в продакшене

Пошаговый план для продакшена: включить tracing, логировать request ID и safety_identifier, сравнивать когорты по latency/error/cost, считать faithfulness и hallucination и ловить регрессии через evals.

Понадобится

Зависит от стека и текущей интеграции; точная оценка не указана в источниках
  • Приложение, которое уже отправляет LLM-запросы в продакшене или staging
  • Доступ к OpenAI API и возможность изменять код клиентской интеграции
  • Выбранный backend наблюдаемости: LangSmith или Arize Phoenix
  • Возможность логировать request IDs, metadata и safety_identifier
  • Если используете openai-python в актуальной линии — Python 3.10+; для Python 3.9 проверяйте совместимость с v2.48.0

После выполнения инструкции у вас будет минимальный рабочий контур мониторинга LLM в продакшене: сквозной tracing запросов, логирование x-request-id и safety_identifier, сравнение когорт по latency/error/cost, проверки на hallucination и faithfulness, а также регрессионные evals перед сменой модели, промпта или параметров.

Практический вердикт: если в продакшене вы смотрите только на среднюю задержку и процент ошибок, вы не мониторите LLM-приложение полноценно. Для реальной эксплуатации нужен минимум из пяти элементов: tracing, request ID, cohort metadata, quality evals и safety-контроль.

  • ⏱️ Время: зависит от текущей интеграции и выбранного стека; точная оценка не указана в источниках.
  • 🎯 Сложность: средний.
  • 💰 Стоимость: зависит от LangSmith, Phoenix и OpenAI; точные тарифы и лимиты в предоставленных источниках не подтверждены, проверьте официальные страницы перед внедрением.
  • 🛠️ Что потребуется: приложение, уже отправляющее LLM-запросы; доступ к OpenAI API; выбранная платформа наблюдаемости — LangSmith или Phoenix; среда выполнения, совместимая с вашим SDK.
  • 📌 Актуальная версия: проверено по официальным документам на 2026-08-15; в источниках подтверждены LangSmith SDK v0.11.0 и политика OpenAI Python SDK: текущая линия поддерживает Python 3.10–3.14, а v2.48.0 — последний релиз для Python 3.9.

Редакционное ограничение: в предоставленном source pack подтверждены обязательные шаги, метрики, ограничения и пути проверки, но не полный copy-paste код для каждого языка и SDK. Поэтому ниже — воспроизводимый продакшен-план и контрольные точки, а не универсальный листинг для всех стеков.

Что именно нужно мониторить

Слой Что фиксировать Чем подтверждено в источниках Зачем это нужно
Трассировка Полную цепочку вызова: retrieval, embedding, model invocation, response generation Phoenix LLM Traces; LangSmith observability tutorial Чтобы видеть, где именно растёт задержка и где ломается цепочка
Продакшен-метрики Trace count, latency, error rate, feedback scores, costs LangSmith Monitoring page Чтобы отслеживать деградацию по времени и по когортам
Отладка x-request-id, X-Client-Request-Id OpenAI debugging requests Чтобы связать инцидент в вашем логе с данными провайдера
Качество Faithfulness и hallucination Phoenix pre-built metrics; OpenAI Evals Чтобы ловить неподтверждённые и противоречивые ответы
Безопасность safety_identifier и moderation-результаты OpenAI latest model guidance; text-moderation-latest Чтобы отслеживать policy-риск и пользовательские инциденты без прямых персональных данных

Пошаговая настройка

  1. Выберите один основной контур наблюдаемости.

    Если вам нужен централизованный hosted-путь с готовыми продакшен-дашбордами и drilldown, используйте LangSmith. Если нужен open-source и vendor-neutral вариант с OTLP/OpenTelemetry и возможностью локального, контейнерного или cloud-развёртывания, используйте Arize Phoenix и репозиторий Phoenix. На старте не дублируйте продакшен-поток сразу в несколько систем без необходимости: сначала зафиксируйте один источник истины для инцидентов и регрессий.

    Ожидаемый результат: у команды есть один выбранный backend наблюдаемости и понятное правило, где искать причину деградации.

  2. Включите tracing всех LLM-вызовов.

    Для LangSmith официальный tutorial рекомендует обернуть OpenAI-клиент через wrap_openai или wrapOpenAI, чтобы трассировать вызовы модели. Для Phoenix отправляйте OTLP traces: документация указывает, что трассировка охватывает retrieval, embedding, model invocation и response generation, а также поддерживает интеграции для OpenAI, LangChain, LlamaIndex, DSPy, Bedrock, Mistral, Vertex, Python и TypeScript.

    Ожидаемый результат: после одного живого запроса в вашей системе появляется trace, а не только сырая строка лога.

  3. Добавьте в каждый продакшен-запрос идентификаторы для корреляции и безопасности.

    По официальной рекомендации OpenAI логируйте request IDs в продакшене: клиентские библиотеки отдают x-request-id, а для поддерживаемых endpoint можно задавать X-Client-Request-Id, чтобы он также попадал во внутренние логи. Для конечного пользователя используйте стабильный privacy-preserving safety_identifier, как рекомендует model guidance.

    {
      "request_id": "x-request-id from provider",
      "client_request_id": "your correlation id",
      "safety_identifier": "stable pseudonymous end-user id"
    }

    Ожидаемый результат: по каждому спорному ответу вы можете найти запись в приложении, сопоставить её с данными провайдера и понять, к какому пользователю или сессии относится инцидент без хранения прямого персонального идентификатора.

  4. Добавьте metadata для когорт и смотрите продакшен-метрики по группам, а не только в среднем.

    В LangSmith Monitoring отслеживайте trace count, latency, error rate, feedback scores и costs. Официальный tutorial прямо указывает, что графики можно группировать по metadata, чтобы сравнивать производительность моделей во времени. Практически это означает, что к каждому запросу нужно прикреплять признаки когорты, например модель, ревизию промпта, вариант rollout или экспериментальную группу.

    Ожидаемый результат: вы видите, какая именно когорта просела по времени ответа, цене или ошибкам, вместо одного усреднённого графика по всем запросам.

  5. Включите evaluator-based контроль качества на traced data.

    В Phoenix pre-built metrics используйте faithfulness для проверки, насколько ответ grounded in the provided context, и hallucination-метрики для поиска unsupported или contradictory claims. Документация указывает, что эти evaluators нужно запускать по traced data или experiments, чтобы оценивать quality regressions.

    Ожидаемый результат: у ответов или экспериментов появляются численные quality-сигналы, которые можно сравнивать до и после изменения модели, retrieval или промпта.

  6. Зафиксируйте один и тот же набор evals и прогоняйте его при каждом изменении модели, промпта или reasoning-настроек.

    OpenAI model guidance рекомендует повторно запускать один и тот же набор evals на representative tasks при изменении моделей или промптов. Для миграции также рекомендуется сравнивать текущее reasoning setting и вариант на один уровень ниже. OpenAI Evals API подтверждает, что evals предназначены для создания, управления и запуска оценок качества с разными моделями и параметрами.

    Ожидаемый результат: перед rollout у вас есть сопоставимые оценки «было/стало», а не субъективное впечатление по нескольким примерам.

  7. Добавьте safety-monitoring через moderation и храните его рядом с trace.

    Для отдельного policy-контура используйте text-moderation-latest. Официальная документация также отмечает, что snapshots фиксируют конкретную версию поведения, что полезно, если вам нужна более стабильная интерпретация safety-правил во времени. Сохраняйте moderation-результат рядом с trace, metadata и request IDs, чтобы разбирать инциденты в одном контексте.

    Ожидаемый результат: вы можете сопоставить деградацию качества, жалобу пользователя и moderation-событие в рамках одной продакшен-цепочки.

Как проверить, что всё работает

  1. Отправьте из приложения один контролируемый запрос, максимально похожий на реальный продакшен-сценарий.
  2. Убедитесь, что после запроса появился trace в выбранной системе наблюдаемости.
  3. Если вы используете LangSmith, откройте страницу Monitoring и проверьте, что для проекта появились ненулевые значения по trace count, latency, error rate, feedback scores или costs.
  4. Сгруппируйте график по metadata и убедитесь, что хотя бы две когорты различимы и сравнимы между собой.
  5. Проверьте drilldown: в LangSmith откройте точку данных, затем нажмите на имя метрики и убедитесь, что открывается filtered runs table для расследования конкретных запусков.
  6. Проверьте логи приложения: в записи о запросе должны присутствовать x-request-id и ваш X-Client-Request-Id, если endpoint его поддерживает.
  7. Запустите faithfulness или hallucination evaluator по traced data или experiment и убедитесь, что система возвращает quality score, а не только техническую метрику.
  8. Сделайте небольшое изменение промпта или модели и повторно прогоните тот же eval suite. Если оценка изменилась, значит регрессионный контур работает.

Частые ошибки и исправления

  • Ошибка: вы видите только среднюю latency по всему трафику и не понимаете, какая версия деградировала. ✅ Решение: добавьте metadata для когорт и сравнивайте графики по группам, как рекомендует LangSmith.
  • Ошибка: инцидент нельзя сопоставить с данными провайдера. ✅ Решение: логируйте x-request-id и задавайте X-Client-Request-Id на поддерживаемых endpoint, чтобы связать ваш лог и отладочные данные OpenAI.
  • Ошибка: качество просело после смены модели, но команда замечает это только по жалобам пользователей. ✅ Решение: запускайте один и тот же набор evals на representative tasks до каждого rollout и сравнивайте результаты до/после.
  • Ошибка: hallucination-проверка шумная и не даёт полезного сигнала. ✅ Решение: используйте faithfulness там, где ответ должен опираться на предоставленный контекст, и прогоняйте evaluators по traced data или experiments, а не по случайным ручным примерам.
  • Ошибка: агент мониторинга или API-клиент ломается после обновления Python-окружения. ✅ Решение: сверяйтесь с политикой версий openai-python: для текущей линии нужен Python 3.10+, а v2.48.0 — финальный релиз для Python 3.9.

Безопасность и ограничения

  • Используйте privacy-preserving safety_identifier, а не прямой персональный идентификатор пользователя.
  • По документации OpenAI, tracing для /v1/realtime сейчас не соответствует EU data residency. Если у вас европейские требования по резидентности данных, это нельзя игнорировать.
  • Некоторые настройки background processing в /v1/responses зависят от региона. Перед запуском в нескольких регионах перепроверьте актуальную страницу data controls.
  • Точные тарифы, trial limits и матрица региональной доступности для LangSmith и Phoenix Cloud не подтверждены в предоставленных источниках. Это нужно проверить отдельно на актуальных официальных страницах.
  • LangSmith в этом наборе источников представлен как hosted-путь для наблюдаемости, а Phoenix — как open-source платформа, которую можно запускать локально, в контейнерах или в cloud-развёртываниях. Выбор зависит от ваших требований к контролю данных и вендор-нейтральности.
  • Документация и release pages динамические. Всё выше зафиксировано по состоянию на 2026-08-15; перед продакшен-изменением перепроверьте текущие страницы.

Что делать дальше

  • Если приложение ещё не отправляет запросы в OpenAI из вашего кода, начните с инструкции Как интегрировать OpenAI API в приложение (Python/JS).
  • Если вам нужен отдельный слой защиты для пользовательских вводов и внешних документов, добавьте план из инструкции Как защититься от промпт-инъекций: практический план для LLM-приложений.
  • Соберите свой representative task set по ключевым сценариям: поиск по базе знаний, агентные действия, суммаризация, extraction, support-ответы.
  • Зафиксируйте политику rollout: ни одна смена модели, промпта или reasoning-настроек не уходит в прод без повторного eval-run и сравнения по cohort-метрикам.

Источники

Вопросы и ответы

Можно ли мониторить LLM только по latency и error rate?

Нет. По официальным источникам вам нужны не только технические метрики, но и quality-сигналы: faithfulness, hallucination, feedback scores и повторяемые evals. Иначе вы увидите, что «стало хуже», но не поймёте, где именно и почему.

Что выбрать: LangSmith или Phoenix?

Если вам нужен готовый hosted-мониторинг с Monitoring page, cohort grouping и drilldown по runs, удобнее LangSmith. Если нужен open-source, self-hosted или OTLP/OpenTelemetry-подход, Phoenix подходит лучше. Точные тарифы и ограничения hosted-вариантов в предоставленных источниках не подтверждены.

Нужен ли safety_identifier, если у меня уже есть внутренний user ID?

Да, если ваш текущий идентификатор не privacy-preserving. OpenAI рекомендует использовать стабильный и безопасный идентификатор конечного пользователя, который помогает расследовать инциденты, не раскрывая лишние персональные данные.

Что делать при смене модели или промпта?

Повторно прогоняйте тот же набор evals на representative tasks и сравнивайте результаты до и после. Для миграции reasoning-настроек OpenAI дополнительно рекомендует сравнить текущий уровень и вариант на один уровень ниже.

Можно ли использовать realtime tracing в сценариях с требованиями EU data residency?

С осторожностью: по документации OpenAI tracing для /v1/realtime сейчас не соответствует EU data residency. Перед внедрением в европейском контуре проверьте актуальную страницу data controls и региональные ограничения.

Шаги

HOW-TO
  1. Выберите единый контур наблюдаемости

    | Зафиксируйте один основной backend: LangSmith для hosted-наблюдаемости с Monitoring page и drilldown либо Phoenix для open-source/OTLP/self-hosted сценария.

  2. Включите tracing всех LLM-вызовов

    | Для LangSmith оберните OpenAI-клиент через wrap_openai или wrapOpenAI; для Phoenix отправляйте OTLP traces, чтобы видеть retrieval, embedding, model invocation и response generation.

  3. Добавьте request IDs и safety_identifier

    | Логируйте x-request-id, задавайте X-Client-Request-Id на поддерживаемых endpoint и используйте стабильный privacy-preserving safety_identifier для конечного пользователя.

  4. Размечайте трафик metadata и сравнивайте когорты

    | Прикрепляйте к запросам metadata для модели, ревизии промпта и rollout-группы, затем отслеживайте trace count, latency, error rate, feedback scores и costs по когортам.

  5. Подключите quality evaluators

    | Запускайте Phoenix faithfulness и hallucination metrics по traced data или experiments, чтобы замечать quality regressions, а не только технические сбои.

  6. Зафиксируйте регрессионный eval suite

    | При каждом изменении модели, промпта или reasoning-настроек повторно прогоняйте один и тот же набор evals на representative tasks через OpenAI Evals или эквивалентный контур.

  7. Добавьте moderation и safety-monitoring

    | Используйте text-moderation-latest и храните результат рядом с trace, request IDs и metadata; при необходимости выбирайте snapshot для более стабильного поведения.

Источники

SOURCES

Вопросы и ответы

FAQ
Можно ли мониторить LLM только по latency и error rate?

Нет. Нужны и технические метрики, и quality-сигналы: faithfulness, hallucination, feedback scores и повторяемые evals. Иначе вы увидите деградацию, но не поймёте её причину.

Что выбрать: LangSmith или Phoenix?

LangSmith удобен для hosted-мониторинга с Monitoring page, cohort grouping и drilldown по runs. Phoenix лучше, если нужен open-source, self-hosted или OTLP/OpenTelemetry-подход. Точные тарифы и лимиты hosted-вариантов нужно проверить отдельно.

Нужен ли safety_identifier, если уже есть внутренний user ID?

Да, если текущий идентификатор не privacy-preserving. OpenAI рекомендует использовать стабильный безопасный идентификатор конечного пользователя для расследования инцидентов без раскрытия лишних персональных данных.

Что делать при смене модели или промпта?

Повторно прогоняйте тот же набор evals на representative tasks и сравнивайте результаты до и после. Для reasoning-настроек OpenAI рекомендует дополнительно сравнить текущий уровень и вариант на один уровень ниже.

Можно ли использовать realtime tracing в сценариях с требованиями EU data residency?

С осторожностью: по документации OpenAI tracing для /v1/realtime сейчас не соответствует EU data residency. Перед внедрением в европейском контуре перепроверьте актуальные ограничения.

Читайте также

LINKS