Код умер. Да здравствуют трейсы
Помните 2023 год? Тогда мы думали, что AI-агенты — это просто код, который иногда вызывает LLM. Пишешь функцию, добавляешь промпт, запускаешь. Если не работает — смотришь логи, дебажишь, правишь код.
Наивные.
Сегодня, в 2026 году, каждый, кто строит серьезные агентские системы, понял одну простую вещь: код агента — это не программа. Это генератор программ. И документировать нужно не код-генератор, а то, что он генерирует.
Проблема: ваш агент на Claude 3.7 Sonnet сегодня работает идеально. Завтра, с тем же промптом, тем же кодом и теми же данными — выдает полную ерунду. Вы открываете код. Он не изменился. Что дебажить?
Недетерминированность — не баг, а фича (которая всех бесит)
Традиционная разработка построена на детерминизме. Функция f(x) всегда возвращает y. Если нет — ищи баг в коде.
AI-агенты ломают эту парадигму. У вас не функция, а вероятностный процесс. Ваш агент — это цепочка:
LLM → Думает → Решает → Действует → LLM → Думает → ...
Каждый шаг «Думает» — это sampling из распределения. Temperature, top_p, разные случайные сиды. Разные контекстные окна в зависимости от предыдущих токенов. Разная загрузка модели на сервере OpenAI.
Результат: один и тот же код дает разные трейсы выполнения.
Старая документация: «Агент делает X, потом Y»
Новая документация: «Вот 1000 трейсов. Смотри, как он реально работает».
Почему? Потому что словесное описание поведения вероятностной системы — это ложь. Вы не можете сказать «агент всегда проверяет данные перед обработкой». Можете сказать «в 97% трейсов он проверял данные».
И вот здесь начинается магия observability.
Observability — это не мониторинг
Забудьте про «CPU usage 70%» и «latency 200ms». Для агентов observability — это ответы на вопросы:
- Почему агент в 3% случаев пропускает критическую проверку?
- В каких именно промптах он «сходит с рельсов» и начинает генерировать бессмыслицу?
- Как влияет контекстное окно на качество планирования?
- Какие инструменты агент использует неэффективно?
Без трейсов вы гадаете на кофейной гуще. С трейсами — анализируете данные.
Инструменты 2026 года: что реально работает
1 LangSmith: промышленный стандарт
LangChain сделал LangSmith не просто инструментом отладки, а полноценной платформой observability. Ключевые фичи 2026 года:
- Трейсы с семантическим поиском: ищи «агент ошибся в валидации email», а не «сообщение с error»
- Сравнение версий промптов: запусти два разных промпта на одном наборе тестовых запросов
- Анализ дрифта: как меняется поведение агента со временем (да, LLM дрифтуют)
- Интеграция с eval-фреймворками: автоматическая оценка качества трейсов
Если вы используете LangChain или совместимые фреймворки — LangSmith почти обязателен. Дорого? Да. Но дешевле, чем слепые итерации.
2 OpenTelemetry для агентов
«Но я не хочу вендор-лок!» — кричите вы. И правильно делаете.
OpenTelemetry в 2026 году — это не только метрики и трейсы микросервисов. Появились семантические конвенции специально для AI-агентов:
# Пример аннотации трейса в OpenTelemetry
span.set_attribute("llm.prompt", prompt[:100]) # Первые 100 символов
span.set_attribute("llm.model", "claude-3-7-sonnet-20250120")
span.set_attribute("agent.decision.reasoning", reasoning_text)
span.set_attribute("agent.tool.call", "validate_email")
Плюсы OTLP:
- Вендор-независимость (отправляйте в Jaeger, Tempo, SigNoz)
- Стандартизация (все агенты говорят на одном языке)
- Интеграция с существующим стеком observability
Минусы: нужно собирать свою дашборду и аналитику. Не для стартапов.
3 Iris Agent: трейсы как фича архитектуры
Некоторые фреймворки строят observability в ядро. Например, Iris Agent изначально проектировался с мыслью «разработчик должен видеть каждую шестеренку».
Что это дает:
- Трейсы без дополнительного кода — просто включаете логирование
- Визуализация цепочек рассуждений
- Дебаг-режим, где можно «прошагать» выполнение агента
Если ненавидите писать instrumentation код — смотрите в сторону таких фреймворков.
4 Самописные решения (осторожно!)
Да, можно просто писать JSON-логи. Но через месяц вы поймете, что:
- Логов слишком много (миллионы строк)
- Нет структуры (каждый разработчик логирует по-своему)
- Невозможно искать по смыслу
- Нет связи между трейсами (сессия пользователя = 10 отдельных логов)
Совет: если пишете свое — сразу делайте:
{
"trace_id": "uuid",
"session_id": "user_session",
"agent_version": "1.2.3",
"steps": [
{
"type": "llm_call",
"model": "gpt-4.5",
"prompt_hash": "sha256",
"response_preview": "...",
"latency_ms": 1200
}
]
}
Практика: как внедрять observability в 2026
Не нужно сразу ставить Prometheus, Grafana, Jaeger и ELK. Начните с малого.
| Этап | Что делать | Инструменты |
|---|---|---|
| Прототип | Логировать все в JSON-файлы. Хранить примеры трейсов в git (да, в git!) | Python logging, structlog |
| Ранняя стадия | Добавить trace_id, собирать ключевые метрики (латенси, токены, стоимость) | LangSmith (если LangChain), OpenTelemetry Python |
| Продакшн | Полный стек: трейсы, метрики, логи. Семплирование (не все трейсы хранить). Alerting на аномалии | SigNoz, Grafana Tempo, специализированные AI-observability платформы |
Типичные ошибки (делайте наоборот)
Ошибка 1: Логировать только ошибки. «Агент упал — есть лог. Работал нормально — лога нет». Как вы узнаете, что «нормально» — это на 30% медленнее, чем было?
Ошибка 2: Не хранить промпты. «У нас промпт в коде, зачем его логировать?» А когда OpenAI обновит модель и производительность упадет — как вы поймете, проблема в промпте или в модели?
Ошибка 3: Смешивать логи разных версий агента. Запустили A/B тест — а трейсы всех пользователей в одной куче. Удачи анализировать.
Observability как документация: конкретные примеры
Вместо документации «агент умеет X» — делаете:
- Коллекцию репрезентативных трейсов (10-20 штук)
- Дашборду с метриками по этим трейсам (успешность, latency, стоимость)
- Примеры edge-кейсов и как агент с ними справляется
- Примеры failure и как их фиксить
Новый разработчик приходит в проект. Вместо чтения кода (который, напомню, только генератор поведения) — он:
- Смотрит дашборду — понимает, как агент работает в среднем
- Изучает трейсы — видит реальные паттерны поведения
- Запускает тестовые запросы — сравнивает с эталонными трейсами
Это в 10 раз быстрее, чем «читай код, там всё понятно».
Что будет дальше? Прогноз на 2027
Observability для агентов станет еще глубже:
- Автоматическая кластеризация трейсов: система сама найдет «похожие» выполнения и выделит паттерны
- Прогнозирование дрифта: «Через неделю агент начнет ошибаться в валидации email с вероятностью 80%»
- Observability-driven development: пишете тест -> запускаете -> смотрите трейсы -> правите промпты -> повторяете
- Стандартизация: появится OpenTelemetry Semantic Conventions for AI Agents как официальный стандарт
Уже сегодня компании вроде Tavily (про их архитектуру я писал здесь) тратят на observability столько же, сколько на разработку самих агентов. И они правы.
С чего начать сегодня?
1. Возьмите последний успешный запуск вашего агента
2. Добавьте логирование всего: промпты, ответы LLM, вызовы инструментов
3. Сохраните трейс в читаемом формате (JSON)
4. Покажите коллеге: «Вот как агент реально работает»
5. Повторите для failure-кейса
6. Сравните два трейса
Увидите больше, чем за месяц чтения кода.
Кстати, если ваши агенты слишком быстро генерируют код и вы не успеваете его проверять — у меня есть отдельный гайд про борьбу с техническим долгом. Там observability тоже спасает.
И последнее: не делайте observability «потом». Первый же продакшн-инцидент с агентом, который «вчера работал», заставит вас внедрять его в панике. Лучше сейчас, спокойно.
Код — это что агент есть. Трейсы — это что агент делает. Документируйте делание.