Как я проектировал интерфейс трейсинга для ИИ-агентов

Как я проектировал интерфейс трейсинга для ИИ-агентов

Я — продуктовый дизайнер, работаю в команде, которая разрабатывает облачные сервисы для создания ИИ-агентов. Передо мной стояла задача: спроектировать интерфейс трейсинга, который помогает быстро находить проблемные места и понимать, как агент пришёл к тому или иному результату. В этой статье — путь, который я прошёл, и что в итоге получилось.

Как работает ИИ-агент

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

Особенность агентных сценариев в том, что это уже не просто один вызов модели и один ответ. Агент может планировать шаги, пересобирать план, вызывать инструменты каскадом, возвращаться к пройденным шагам и попадать в смысловые циклы. Из-за этого путь выполнения становится непрозрачным и недетерминированным. Без трейсинга разбор ситуации превращается в догадки.

Что такое трейсинг

Трейсинг — это цепочка действий агента по шагам. Он позволяет увидеть, что происходило внутри системы, в каком порядке выполнялись задачи и где возникла проблема. Запись отражает полный путь одного запроса — от входа до результата.

Трейс состоит из последовательности шагов (span), каждый из которых фиксирует отдельную операцию: вызов модели, обращение к инструменту или внешний запрос. Каждый шаг содержит контекст: входные и выходные данные, длительность и статус. Это даёт возможность не просто видеть результат, а анализировать процесс — как агент принимал решения, какие действия выполнял и где возникли отклонения или ошибки.

Кому нужен трейсинг

Трейсинг помогает отслеживать и мониторить работу агента, чтобы быстро находить и устранять причины сбоев. В первую очередь он нужен опытным пользователям: ИИ- и ML-инженерам, бэкенд-разработчикам и платформенным разработчикам.

Основные задачи, которые решает трейсинг:

  • Быстро находить сбой — не просто «всё сломалось», а конкретно: на каком шаге, в каком вызове и с каким результатом.
  • Восстанавливать ход выполнения — какие шаги делал агент и в каком порядке.
  • Разбираться в некорректном поведении — даже если нет явной ошибки, агент может вести себя странно: повторяться, ошибочно вызывать инструменты или терять контекст.
  • Выявлять узкие места — в трейсинге хорошо видны аномально долгие шаги и повторяющиеся участки.

Какие задачи решает пользователь

Когда пользователь открывает интерфейс трейсинга, он обычно хочет:

  • Понять, на каком этапе возникла проблема. Главный вопрос: «Где именно сломалось?».
  • Увидеть, к чему обращался агент: где была языковая модель, где инструменты, MCP-серверы, и что туда передавалось.
  • Понять, почему итоговый ответ получился именно таким — какая цепочка решений и результатов привела к финалу.
  • Сравнить шаги по длительности, чтобы быстро выявить узкие места и аномалии.

Цель интерфейса — помочь опытному пользователю быстро найти причину проблемы и понять, что именно нужно улучшить: промпт, инструмент, обработку ответа, таймауты или логику агента.

Анализ решений конкурентов

Я изучил несколько существующих решений, чтобы понять, какие UX-паттерны используются в интерфейсах трейсинга.

Langfuse — задаёт ориентир для продакшен-решений: понятная иерархия шагов, визуализация графа, возможность воспроизведения с любого узла. Хорошо читается структура пайплайна и его экономика.

Phoenix — фокусируется на анализе: можно переигрывать отдельные шаги, сравнивать результаты и исследовать, почему агент пришёл к определённому выводу.

OpenLIT — связывает трейсинг с инфраструктурой: шаги агента сопоставляются с GPU-метриками, что помогает понять, где возникают задержки.

Langtrace — предлагает лёгкий и интеграционный подход: трейсы можно встраивать прямо в пользовательские интерфейсы.

LangWatch — добавляет слой аналитики: оценка качества ответов и автоматические проверки поверх трейсов.

Большинство решений используют схожие базовые паттерны: иерархия шагов (traces/spans), возможность провалиться в детали, дополнительные слои анализа — графы, метрики, оценка качества. Однако единого канонического UX пока нет.

Одни продукты работают как быстрый отладчик — помогают быстро найти сбой. Другие — как диагностические системы, дающие глубокий контекст, но требующие больше времени на разбор.

Этот вывод стал ключевым: универсального паттерна нет. Значит, интерфейс нужно проектировать не по аналогам, а под конкретные пользовательские сценарии.

Сбор требований: сложности и выводы

Чтобы спроектировать трейсинг, сначала нужно понять, как система работает внутри. Без этого невозможно решить, что именно показывать в интерфейсе.

Я проводил интервью с инженерами — ML, ИИ, бэкенд, платформы — и изучал их реальные сценарии:

  • с чего начинается разбор при сбое,
  • что важно увидеть сразу,
  • когда и какие детали они проверяют.

Такие беседы помогают выявить реальные боли, а не придуманные. Главный вывод: тreyсинг никто не читает последовательно. В нём ищут конкретную проблему. Поэтому ключевое требование к интерфейсу — помочь быстро сузить поиск: от общей картины к конкретному шагу.

Архитектура интерфейса и навигация

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

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

Сессия — при переходе пользователь видит диалог с агентом в формате чата. Это помогает быстро восстановить контекст: что спросили и что ответил агент. Рядом — список трейсов с краткой сводкой: этап, длительность, наличие ошибки.

Трейс — при необходимости пользователь кликает на трейс и видит детальную цепочку спанов: шаги агента, вызовы модели, инструментов, MCP-серверов, результаты и время выполнения.

Такой путь не даёт утонуть в деталях: сначала — общий контекст и обзор, затем — углубление по запросу.

Два типа пользователей и акцент на ошибках

Я выделил две группы пользователей.

Инженеры — им нужны детали: цепочка шагов, входы и выходы, ошибки, время выполнения, технические нюансы.

Другие пользователи — им важно быстро понять, что произошло в целом. Им не нужно погружение в детали, но нужен общий контекст и понимание, где примерно проблема.

Поэтому я принял ключевое решение — показывать сессию в виде диалога. Это не было требованием, но помогает упростить вход в сложную систему и быстрее восстановить контекст. Дальше пользователь сам решает, насколько глубоко копать.

Поскольку основная задача технических пользователей — найти сбой, я сделал акцент на ошибках на всех уровнях:

  • ошибка видна на уровне шага (span);
  • весь трейс помечается как проблемный;
  • сессия тоже отображает наличие ошибки.

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

Что изменилось в моём подходе

Этот проект показал: дизайн в таких задачах — это в первую очередь работа со структурой данных и пользовательским поиском. Нужно провести человека от сигнала «что-то не так» к конкретной причине, не перегружая его на первых экранах, но сохраняя глубину для тех, кому она нужна.

Трейсинг для ИИ-агентов — молодая область. Паттерны ещё формируются. Поэтому важно опираться не на «как принято», а на реальные сценарии: как люди ищут проблемы и что им нужно видеть в первую очередь.

Работа над трейсингом стала для меня важным опытом. Ключевые выводы:

  • UX для ИИ часто ближе к инженерным инструментам, чем к потребительским интерфейсам.
  • Задача дизайна — не всегда упрощать, а грамотно структурировать сложность.
  • Интервью с экспертами могут быть эффективнее масштабных исследований, особенно когда паттернов ещё нет.
  • В молодой сфере дизайнер учится вместе с рынком.
  • Хорошие интерфейсы сложных систем почти всегда строятся слоями.
Читать оригинал