LangChain LangSmith -- Наблюдаемость
LangSmith — официальная платформа наблюдаемости LangChain, которая помогает трассировать процессы выполнения агента, отслеживать производительность и отлаживать проблемы.
Что такое LangSmith
Когда агент работает в фоновом режиме, вы не видите, что происходит внутри него — какие модели были вызваны, какие инструменты выполнены и сколько токенов потребил каждый шаг. LangSmith решает эту проблему «чёрного ящика».
| Особенности | Описание |
|---|---|
| Трассировка выполнения | Записывает траекторию выполнения каждого шага агента |
| Мониторинг производительности | Отслеживает затраты времени и использование токенов для каждого вызова |
| Отладочный повтор | Просмотр подробной информации об исторических выполнениях |
| Тестирование оценки | Создание тестовых наборов для оценки производительности агента |
Быстрый старт
Регистрация и установка
$ pip install langsmith
Вsmith.langchain.comЗарегистрируйте аккаунт, получите API-ключ, затем настройте его в .env:
Пример
LANGCHAIN_TRACING_V2=true
LANGCHAIN_API_KEY=lsv2_pt_your_key_here
LANGCHAIN_PROJECT=my-agent-project
Автоматическая трассировка
Пример
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 вы можете увидеть полную траекторию выполнения каждого агента:
- Хронология выполнения: Полная хронология от вызова модели → вызова инструмента → повторного вызова модели
- Ввод/Вывод: Входные сообщения и результаты, возвращаемые моделью, для каждого шага
- Использование токенов: потребление токенов и оценка стоимости для каждого вызова модели
- Анализ задержек: распределение времени по каждому шагу
- Сообщения об ошибках: если в каком-либо шаге возникает ошибка, вы можете увидеть полную трассировку стека ошибки
Создание трассировок вручную
Пример
# Используйте декоратор @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_KEY | API-ключ LangSmith | lsv2_pt_xxx |
| LANGCHAIN_PROJECT | Имя проекта (используется для группировки трассировок) | my-agent |
| LANGCHAIN_ENDPOINT | Конечная точка API (значение по умолчанию подходит) | https://api.smith.langchain.com |
Другие расширенияВ производственной среде рекомендуется задавать меньшую частоту семплирования трассировок LangSmith (чтобы избежать высоких затрат на запись всех запросов) и включать полную трассировку только при необходимости отладки.