LangChain LangSmith -- Наблюдаемость

LangSmith — официальная платформа наблюдаемости LangChain, которая помогает трассировать процессы выполнения агента, отслеживать производительность и отлаживать проблемы.


Что такое LangSmith

Когда агент работает в фоновом режиме, вы не видите, что происходит внутри него — какие модели были вызваны, какие инструменты выполнены и сколько токенов потребил каждый шаг. LangSmith решает эту проблему «чёрного ящика».

ОсобенностиОписание
Трассировка выполненияЗаписывает траекторию выполнения каждого шага агента
Мониторинг производительностиОтслеживает затраты времени и использование токенов для каждого вызова
Отладочный повторПросмотр подробной информации об исторических выполнениях
Тестирование оценкиСоздание тестовых наборов для оценки производительности агента

Быстрый старт

Регистрация и установка

$ pip install langsmith

Вsmith.langchain.comЗарегистрируйте аккаунт, получите API-ключ, затем настройте его в .env:

Пример

# файл .env
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=lsv2_pt_your_key_here
LANGCHAIN_PROJECT=my-agent-project

Автоматическая трассировка

Пример

from dotenv import load_dotenv
load_dotenv()  # Конфигурация LangSmith будет загружена автоматически

from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from langchain.messages import HumanMessage
from langchain.tools import tool

# После настройки переменных окружения все выполнения агента будут автоматически трассироваться
# Дополнительный код не требуется!

@tool
def search_course(keyword: str) -> str:
    """Поиск курсов"""
    return f"Результаты поиска: курсы, связанные с {keyword}"

model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0)
agent = create_agent(
    model=model,
    tools=[search_course],
    system_prompt="Вы — ассистент учебного руководства Example.",
)

# Это выполнение будет автоматически записано в LangSmith
result = agent.invoke({
    "messages": [HumanMessage(content="Поиск курсов Python")]
})

# Откройте https://smith.langchain.com, чтобы просмотреть записи трассировки
print("Готово. Перейдите в консоль LangSmith, чтобы просмотреть детали трассировки")

Просмотр записей трассировки

В консоли LangSmith вы можете увидеть полную траекторию выполнения каждого агента:

  • Хронология выполнения: Полная хронология от вызова модели → вызова инструмента → повторного вызова модели
  • Ввод/Вывод: Входные сообщения и результаты, возвращаемые моделью, для каждого шага
  • Использование токенов: потребление токенов и оценка стоимости для каждого вызова модели
  • Анализ задержек: распределение времени по каждому шагу
  • Сообщения об ошибках: если в каком-либо шаге возникает ошибка, вы можете увидеть полную трассировку стека ошибки

Создание трассировок вручную

Пример

from langsmith import traceable

# Используйте декоратор @traceable, чтобы помечать функции, которые нужно трассировать
@traceable
def process_user_query(query: str) -> dict:
    """Обработать пользовательский запрос (эта функция будет трассироваться отдельно)"""
    # Предобработка
    cleaned = query.strip().lower()
    # Вызвать агента
    result = agent.invoke({"messages": [HumanMessage(content=cleaned)]})
    return {
        "query": очищено,
        "answer": result["messages"][-1].content,
    }

# В LangSmith вы увидите process_user_query как независимый шаг
result = process_user_query("рекомендации по курсам Python")
print(result["answer"])

Общая конфигурация

Переменные окруженияОписаниеПример
LANGCHAIN_TRACING_V2Включите трассировку (должно быть установлено значение true)истина
LANGCHAIN_API_KEYAPI-ключ LangSmithlsv2_pt_xxx
LANGCHAIN_PROJECTИмя проекта (используется для группировки трассировок)my-agent
LANGCHAIN_ENDPOINTКонечная точка API (значение по умолчанию подходит)https://api.smith.langchain.com

В производственной среде рекомендуется задавать меньшую частоту семплирования трассировок LangSmith (чтобы избежать высоких затрат на запись всех запросов) и включать полную трассировку только при необходимости отладки.

Другие расширения