Гайд · TNWS AI

Как отладить LangChain-агента через трассировку LangSmith

LangChain 1.xPythonopenai:gpt-5.5ChatGPT#LangChain#Python#AI-агенты
5 мин—

LANGSMITH_TRACING, проект и проверка trace модели и инструментов с защитой персональных данных.

Задача и применимость

Русскоязычный запрос: «как включить LangSmith tracing для агента LangChain Python». Проверка официальной документации LangChain — 19 сентября 2026 года. LangChain Python 1.x и отдельный доступ к LangSmith; нужна настройка LANGSMITH_API_KEY и ключ провайдера модели. Это диагностика вызовов, а не внешний источник истины.

Официальное руководство включает LANGSMITH_TRACING=true и LANGSMITH_API_KEY; LANGSMITH_PROJECT задаёт проект трассировок. LangSmith группирует вызовы и позволяет просматривать шаги агента. Включение tracing может передавать содержимое inputs/outputs в сервис наблюдаемости, поэтому следует проверить политику конфиденциальности и минимизировать персональные данные.

Порядок действий

  1. Заведите отдельный тестовый проект LangSmith и настройте секрет API key в окружении, не в исходном файле.
  2. Запустите один безопасный запрос к агенту с известным входом и ожидаемым ответом.
  3. Найдите trace в выбранном проекте и сверьте вопрос, модель, этапы инструмента и конечный вывод.
  4. Для ошибки создайте негативный тест с пустым источником и выясните, выдумал ли ответ агент или источник вернул плохие данные.
  5. Отключите передачу чувствительных полей или настройте их редакцию перед включением tracing на рабочем трафике.

Пример ниже предназначен для демонстрационного окружения: установите соответствующий пакет интеграции, настройте ключ через секреты сервера и убедитесь, что модель доступна вашему аккаунту. Если доступ к указанному model ID отсутствует, выберите поддерживаемую модель со сходными возможностями и заново проверьте работу именно на ней. Ни один пример не содержит действующего API-ключа и не разрешает обход ограничений провайдера.

Готовый шаблон на Python

# Задайте в секретном окружении перед запуском:
# LANGSMITH_TRACING=true
# LANGSMITH_API_KEY=<секрет LangSmith>
# LANGSMITH_PROJECT=ru-support-test
# OPENAI_API_KEY=<секрет модели>
from langchain.agents import create_agent

agent = create_agent(model="openai:gpt-5.5", tools=[],
    system_prompt="Отвечай кратко и без выдуманных фактов.")
result = agent.invoke({"messages": [{"role": "user", "content":
    "Что такое retrieval в RAG?"}]})
print(result["messages"][-1].content)
# Проверьте trace в выбранном проекте LangSmith.

Конкретные входные и ожидаемые данные

Вход: «Что такое retrieval в RAG?» и тестовый проект ru-support-test. Ожидается trace с входным вопросом, вызовом указанной модели и конечным текстом, который объясняет извлечение релевантных источников. Если trace отсутствует, проверьте имя проекта, переменные окружения и доступ ключа. Точный интерфейс и время доставки трассы не обещаются.

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

Диагностика и границы решения

Трассировка помогает отличать ошибку контекста от ошибки генерации. Если агент ответил «14 дней», а инструмент передал устаревший документ с таким сроком, проблема находится в данных источника, даже если модель аккуратно их пересказала. Если инструмент возвратил правильное исключение, а агент его проигнорировал, изучайте prompts и порядок сообщений. Для сложного агента фиксируйте последовательность tool calls, аргументы после редактирования и наличие финального ответа; один общий журнал времени не показывает, на каком этапе произошёл сбой. Не отправляйте в тестовый проект реальные медицинские, платёжные или личные сообщения без разрешения и ограничений доступа. Проект LangSmith — не замена вашей системе аудита: сохраните отдельные ID запроса и источника, чтобы связать трассу с бизнес-событием без утечки текста. Включение tracing может влиять на приватность данных; оператор должен понимать, какие поля фактически уходят в сервис. Для производственной диагностики применяйте выборочную запись, маскировку и срок хранения. Удачный trace подтверждает исполнение шагов, но не доказывает корректность политики возврата или релевантность ответа.

Контрольный эксперимент

Создайте набор из трёх трасс: правильный ответ на известный вопрос, отсутствие ответа при пустом источнике и инструмент с запланированной ошибкой. Сопоставьте ID источников на входе агента, ToolMessage и текст пользователя. Если в отрицательном тесте агент всё равно произвёл уверенный факт, это сигнал к отказной логике и предметным тестам. Если модель или инструмент вызываются повторно, trace помогает оценить причину роста времени и числа запросов; не делайте вывод о стоимости из одного trace без учёта лимитов и фактического потребления провайдера. При сравнении версий агента держите одинаковые вопросы и документы. Пользовательский текст в trace доступен тем, кому вы дали доступ к проекту: отдельный доступ администраторов, минимизация payload и удаление лишних записей столь же важны, как удобство отладки. Не включайте секреты в system_prompt, иначе они могут оказаться в диагностике.

Дополнительный проверочный сценарий

Перед запуском теста подготовьте матрицу того, что разрешено логировать. Поле order_id может быть приемлемо в закрытом проекте, а полный адрес доставки — нет; API key и токены нельзя передавать в trace ни при каких обстоятельствах. Проверьте не только основной prompt, но и аргументы tools и исключения, где часто появляется сырой ответ внешнего сервиса. Если вы обнаружили неправильный итог, фиксируйте trace ID и указывайте, на каком шаге возникло искажение: неверный retrieval, устаревшие данные, ошибка schema или генерация. Исправление без воспроизводимого входа часто создаёт новую регрессию. Трассировка — основа диагностики, но оценку качества формируйте на размеченных вопросах и фактах, а не по числу красивых traces.

Критерии результата

  • Trace появился в назначенном проекте.
  • Этапы модели и инструмента сопоставлены с итогом.
  • Негативный тест выявляет выдуманный ответ.
  • Персональные данные и ключи не раскрываются наблюдателям проекта.

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

Типичные ошибки и что не делать

  • Публиковать LANGSMITH_API_KEY в репозитории.
  • Принимать успешный trace за доказательство фактической точности.
  • Передавать персональные данные без оценки условий хранения.
  • Смешивать тестовый и рабочий трафик в одном проекте без маркировки.

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

FAQ

Что включает трассировку?

LANGSMITH_TRACING=true и действующий ключ.

Как указать проект?

Через LANGSMITH_PROJECT до запуска приложения.

Проверяет ли LangSmith истинность ответа автоматически?

Нет, трасса показывает ход исполнения, качество проверяется отдельно.

Официальные источники

Частые вопросы

Что включает трассировку?

LANGSMITH_TRACING=true и действующий ключ.

Как указать проект?

Через LANGSMITH_PROJECT до запуска приложения.

Проверяет ли LangSmith истинность ответа автоматически?

Нет, трасса показывает ход исполнения, качество проверяется отдельно.

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

Комментарии

Пока тихо. Скажите первое слово