COMRAD404 / HOWTO

Как настроить observability для AI-агентов с LangSmith

Пошаговая инструкция по настройке observability для AI-агентов с LangSmith: переменные окружения, региональный endpoint, LangChain/LangGraph, OpenTelemetry, проверка traces и ограничения.

Понадобится

20–40 минут
  • Аккаунт LangSmith и действующий LANGSMITH_API_KEY
  • Работающий AI-агент или приложение на LangChain, LangGraph либо другом стеке
  • Доступ к переменным окружения процесса
  • OPENAI_API_KEY для проверки по quickstart-сценарию
  • Для OpenTelemetry: langsmith>=0.3.18, рекомендуется langsmith>=0.4.25
  • Для аккаунтов вне default US region: корректный региональный LANGSMITH_ENDPOINT

После выполнения этой инструкции вы настроите observability для AI-агентов с LangSmith и сможете видеть traces запуска, вложенные вызовы LLM, инструменты и retriever-шаги в одном проекте. Самый быстрый путь для агента на LangChain или LangGraph: включить LANGSMITH_TRACING=true, задать LANGSMITH_API_KEY, при необходимости указать региональный LANGSMITH_ENDPOINT и заново запустить приложение.

Сводка

  • ⏱️ Время: 20–40 минут, если у вас уже есть работающий агент.
  • 🎯 Сложность: средний.
  • 💰 Стоимость: по странице pricing у LangSmith есть Developer — $0/seat/month, Plus — $39/seat/month, Enterprise — custom pricing. Self-hosted — Enterprise add-on. Актуальные usage-начисления и налоги проверяйте на официальной странице.
  • 🛠️ Что потребуется: аккаунт LangSmith, LANGSMITH_API_KEY, рабочий AI-агент, доступ к переменным окружения, а для теста quickstart — также OPENAI_API_KEY.
  • 📌 Актуальность: условия и документы LangSmith проверены по состоянию на 2026-08-15; для OpenTelemetry документация требует langsmith>=0.3.18 и рекомендует langsmith>=0.4.25.

Практический вердикт: если ваш агент уже собран на LangChain или LangGraph, не начинайте с OpenTelemetry и не пытайтесь сразу self-hosted. Для большинства команд достаточно SaaS-интеграции через environment variables, а кастомные функции потом точечно размечаются через @traceable, context manager или RunTree API.

Редакционное ограничение: в проверенном source pack нет пошагово зафиксированных UI-действий для выпуска API key и нет точных региональных API URL в явном виде. Поэтому ниже — воспроизводимый путь через environment variables и проверку в интерфейсе LangSmith, а точное значение регионального endpoint берите из официальной документации по регионам и tracing.

Оглавление

  • Какой путь настройки выбрать
  • Пошагово: как настроить observability в LangSmith
  • Как проверить, что всё работает
  • Частые ошибки и исправления
  • Безопасность и ограничения
  • Что делать дальше
  • Источники
  • Вопросы и ответы

Какой путь настройки выбрать

Путь Когда выбирать Что даёт Ограничение
LangChain integration У вас агент на LangChain и нужен самый быстрый старт Базовый tracing включается через environment variables; для basic tracing дополнительный код не нужен Для аккаунтов вне default US region нужно задать региональный LANGSMITH_ENDPOINT; в LangChain.js поведение background callbacks зависит от serverless/non-serverless
LangGraph integration У вас агент на LangGraph или многосоставной workflow Работает тот же поток с environment variables при использовании модулей LangChain Кастомные SDK и внутренние функции всё равно нужно явно оборачивать, иначе вложенность trace может быть неполной
Custom instrumentation У вас собственные tools, функции, retriever и внутренняя логика Тонкая разметка через @traceable, Python trace context manager и RunTree API Нужна аккуратная настройка run_type, иначе UI покажет меньше полезных деталей
OpenTelemetry У вас polyglot stack или уже есть OTel Можно отправлять телеметрию в LangSmith без привязки к одному фреймворку Есть требования к версии langsmith; нужно включить и tracing, и OTel, и корректный региональный endpoint
Self-hosted LangSmith У вас regulated/private deployment Полный контроль над размещением Это Enterprise add-on; для production официально ориентируются на Kubernetes + Helm, а Docker Compose подходит для development/testing

Пошагово: как настроить observability в LangSmith

  1. Выберите один путь интеграции для текущего агента.

    Если агент работает на LangChain, начните с LangChain integration. Если это LangGraph workflow, используйте LangGraph integration. Если код в основном кастомный или у вас несколько языков и уже есть OpenTelemetry, выбирайте manual instrumentation или OTel.

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

  2. Подготовьте SDK и зависимости для выбранного пути.

    В официальном quickstart для tracing используются пакеты langsmith и openai. Для OpenTelemetry документация отдельно указывает минимальную версию langsmith>=0.3.18 и рекомендует langsmith>=0.4.25.

    Если вы не запускаете quickstart-пример, а подключаете observability к уже готовому агенту, достаточно убедиться, что в окружении есть нужный LangSmith SDK и зависимости вашего приложения.

    Ожидаемый результат: ваше приложение может стартовать с LangSmith SDK без конфликтов по версии.

  3. Задайте базовые переменные окружения для tracing.

    Это обязательный минимум из официального quickstart:

    export LANGSMITH_TRACING=true
    export LANGSMITH_API_KEY="your_langsmith_api_key"
    export OPENAI_API_KEY="your_openai_api_key"
    export LANGSMITH_PROJECT="your_project_name"

    LANGSMITH_PROJECT опционален. Если вы его не зададите, LangSmith использует автоматически созданный tracing project.

    Ожидаемый результат: tracing включён на уровне окружения, а данные будут отправляться в указанный проект или в auto-created project.

  4. Укажите региональный endpoint, если ваш аккаунт не в default US region.

    Для аккаунтов вне default US region аутентификация без LANGSMITH_ENDPOINT может завершаться ошибкой. Документация перечисляет поддержанные SaaS endpoints для GCP US, GCP EU, GCP APAC и AWS US, но точное значение URL берите из официальной страницы tracing или Regions FAQ для вашего региона.

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

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

  5. Перезапустите приложение с авто-трейсингом LangChain или LangGraph.

    Для LangChain apps базовый tracing после настройки integration работает без дополнительного кода. Для LangGraph действует тот же поток, если вы используете модули LangChain.

    Если у вас LangChain.js, задайте режим background callbacks в зависимости от деплоя:

    Сценарий Рекомендация
    Не serverless LANGCHAIN_CALLBACKS_BACKGROUND=true для снижения latency
    Serverless LANGCHAIN_CALLBACKS_BACKGROUND=false, чтобы tracing успел завершиться до выхода функции

    Ожидаемый результат: при следующем запуске агент начнёт автоматически отправлять traces в LangSmith.

  6. Разметьте кастомные функции, tools и SDK-вызовы, которые не покрывает авто-интеграция.

    Если внутри LangGraph или другого оркестратора у вас есть собственные функции, retriever, обращения к внешним SDK или внутренние service-layer вызовы, используйте один из официально поддержанных механизмов manual instrumentation:

    • @traceable
    • Python trace context manager
    • RunTree API

    Для custom SDKs или функций внутри LangGraph документация отдельно советует оборачивать их через @traceable/traceable или wrap_openai, чтобы traces правильно вкладывались друг в друга.

    Если вы хотите, чтобы в Details view корректно отображались токены и latency, используйте run_type="llm". Если нужно видеть retrieved documents inline, задавайте run_type="retriever".

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

  7. Подключите OpenTelemetry, если ваш стек не ограничен LangChain.

    Для OTel-пути документация требует включить и LangSmith tracing, и OTel, и корректный региональный endpoint. Минимальная конфигурация начинается с таких переменных:

    export LANGSMITH_TRACING=true
    export LANGSMITH_OTEL_ENABLED=true

    Дальше завершите OTel-настройку по официальному гайду именно для вашего языка и текущей инфраструктуры. Этот путь оправдан, если у вас polyglot stack, существующий OTel-pipeline или observability уже унифицирована на уровне платформы.

    Ожидаемый результат: вы отправляете телеметрию в LangSmith через OpenTelemetry-маршрут, а не только через LangChain-specific integration.

  8. Сделайте один тестовый прогон агента и откройте проект в LangSmith UI.

    После запуска откройте tracing project в LangSmith UI, нажмите на строку trace и проверьте Trace details panel. По документации боковая панель организована вокруг threads, поэтому удобнее проверять не только отдельный run, но и контекст последовательности сообщений.

    Если вы правильно задали run_type, то для llm увидите token counts и latency, а для retriever — retrieved documents inline.

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

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

  1. Отправьте агенту один простой запрос, который гарантированно проходит через вашу обычную цепочку: LLM, tool или retriever.
  2. Откройте tracing project в LangSmith UI и убедитесь, что появилась новая строка trace.
  3. Нажмите на строку и проверьте, что открывается Trace details panel.
  4. Убедитесь, что вложенные шаги расположены логично: верхний run агента, внутри — LLM/tool/retriever вызовы.
  5. Если вы специально размечали типы run, проверьте результат рендеринга: run_type="llm" должен показывать token counts и latency, а run_type="retriever" — retrieved documents inline.
  6. Если у вас conversation-style агент, проверьте, что боковая панель действительно группирует данные вокруг threads, а не только вокруг одного isolated вызова.

Если все шесть проверок проходят, observability для AI-агента с LangSmith настроена корректно.

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

  • Ошибка: аутентификация не проходит, хотя LANGSMITH_API_KEY задан.
    Решение: проверьте, не находится ли ваш аккаунт вне default US region. В этом случае обязательно задайте корректный LANGSMITH_ENDPOINT из официальной региональной документации.
  • Ошибка: приложение запускается, но traces не появляются.
    Решение: убедитесь, что LANGSMITH_TRACING=true действительно выставлен в окружении процесса, а не только в локальном shell. Для quickstart-проверки также нужен валидный LANGSMITH_API_KEY.
  • Ошибка: в LangGraph часть внутренних вызовов не видна или не вложена в родительский trace.
    Решение: явно оберните custom SDKs и функции через @traceable/traceable или wrap_openai, как рекомендует документация LangGraph tracing.
  • Ошибка: в Details view нет token counts, latency или inline-списка документов.
    Решение: проверьте выбранный run_type. Для токенов и latency нужен run_type="llm"; для retrieved documents inline — run_type="retriever".
  • Ошибка: в LangChain.js вы видите лишнюю latency или, наоборот, недописанные traces при serverless-вызовах.
    Решение: вне serverless используйте LANGCHAIN_CALLBACKS_BACKGROUND=true; в serverless — false, чтобы tracing успел завершиться до выхода функции.

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

  • Retention traces: в LangSmith SaaS trace data хранится 180 дней с момента ingestion. Если вам нужно сохранить важные данные дольше, используйте datasets: по документации они сохраняются indefinitely.
  • Регионы: региональные инстансы доступны на всех планах, включая free plans. При этом pricing одинаков по поддержанным cloud regions, оплата идёт в USD, а migration между регионами не поддерживается.
  • Self-hosted: self-hosted LangSmith — это Enterprise add-on. Для development/testing официальный путь — Docker Compose; для production — Kubernetes плюс Helm. Это не тот вариант, с которого стоит начинать, если у вас просто один агент и нет требований к изоляции.
  • Версии для OTel: для OpenTelemetry соблюдайте порог langsmith>=0.3.18; документация рекомендует >=0.4.25. Если пинните версии жёстко, сверяйте релизы SDK и ваш internal dependency policy.
  • Self-hosted releases: в changelog на момент проверки есть и release candidate, и stable-релизы, включая langsmith-0.17.0-rc.6 и langsmith-0.16.2. Перед апгрейдом подтверждайте точную целевую версию, а не ориентируйтесь только на последнюю запись в changelog.
  • UI и live labels: документация фиксирует workflow просмотра traces, но конкретные UI labels и beta-элементы могут меняться. Перед подготовкой внутренних SOP или скриншотов перепроверьте текущий интерфейс в вашем регионе.

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

Источники

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

Можно ли настроить LangSmith без LangChain?

Да. Для этого у LangSmith есть manual instrumentation через @traceable, Python trace context manager и RunTree API, а также отдельный путь через OpenTelemetry для polyglot или non-LangChain stack.

Нужно ли писать дополнительный код для базового tracing?

Если приложение уже построено на LangChain и вы включили интеграцию через environment variables, для basic tracing дополнительный код не нужен. Но для кастомных SDK, tools и внутренних функций внутри LangGraph или вашего приложения явная разметка всё равно полезна.

Когда обязательно задавать LANGSMITH_ENDPOINT?

Когда ваш аккаунт не находится в default US region. Иначе аутентификация может завершаться ошибкой, даже если API key корректный.

Сколько хранятся traces?

В LangSmith SaaS traces хранятся 180 дней с момента ingestion. Если вам нужно сохранить важные примеры надолго, переносите их в datasets: по документации они сохраняются indefinitely.

Можно ли использовать self-hosted вместо SaaS?

Да, но это Enterprise add-on. Для development/testing официальный путь — Docker Compose, а для production — Kubernetes и Helm. Для одной команды или первого пилота чаще практичнее начать с SaaS и только потом оценивать self-hosted.

Шаги

HOW-TO
  1. Выберите путь интеграции

    | Определите один основной путь: LangChain integration для быстрого старта, LangGraph integration для workflows, Custom instrumentation для кастомных функций или OpenTelemetry для polyglot stack.

  2. Подготовьте SDK и зависимости

    | Для официального quickstart используются пакеты langsmith и openai. Для OpenTelemetry соблюдайте требования к версии langsmith: минимум 0.3.18, рекомендовано 0.4.25 и выше.

  3. Задайте базовые переменные окружения

    | Включите LANGSMITH_TRACING=true, задайте LANGSMITH_API_KEY и OPENAI_API_KEY, а LANGSMITH_PROJECT используйте опционально, если хотите явно отправлять traces в отдельный проект.

  4. Укажите региональный endpoint

    | Если аккаунт находится вне default US region, задайте LANGSMITH_ENDPOINT значением регионального API URL из официальной документации. Иначе аутентификация может не пройти.

  5. Перезапустите агент с авто-трейсингом

    | Для LangChain и LangGraph при использовании модулей LangChain базовый tracing начинает работать после integration setup. В LangChain.js выберите LANGCHAIN_CALLBACKS_BACKGROUND=true вне serverless и false в serverless.

  6. Разметьте кастомные функции и SDK-вызовы

    | Добавьте manual instrumentation для внутренних tools и функций через @traceable, Python trace context manager или RunTree API. В LangGraph кастомные SDK-вызовы и функции оборачивайте так, чтобы traces корректно вкладывались.

  7. Проверьте traces в LangSmith UI

    | Сделайте тестовый прогон, откройте tracing project, нажмите на строку trace и проверьте Trace details panel. Для run_type="llm" должны отображаться token counts и latency, для run_type="retriever" — retrieved documents inline.

Источники

SOURCES

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

FAQ
Можно ли настроить LangSmith без LangChain?

Да. Используйте manual instrumentation через @traceable, Python trace context manager или RunTree API, либо путь через OpenTelemetry для polyglot и non-LangChain stack.

Нужно ли писать дополнительный код для базового tracing?

Для LangChain-приложений после включения integration через environment variables базовый tracing работает без дополнительного кода. Для кастомных SDK, tools и внутренних функций явная разметка всё равно полезна.

Когда обязательно задавать LANGSMITH_ENDPOINT?

Когда ваш аккаунт находится вне default US region. Без корректного регионального endpoint аутентификация может завершаться ошибкой.

Сколько хранятся traces в LangSmith SaaS?

По документации trace data хранится 180 дней с момента ingestion. Datasets сохраняются indefinitely и подходят для более долгого хранения важных примеров.

Можно ли использовать self-hosted LangSmith вместо SaaS?

Да, но self-hosted доступен как Enterprise add-on. Для development/testing используется Docker Compose, для production — Kubernetes и Helm.

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

LINKS