Как это работает
В LLM-приложении один вопрос пользователя порождает цепочку: запрос к поиску, несколько вызовов модели, обращения к инструментам. Без общего идентификатора логи этих шагов невозможно связать, и разбор плохого ответа превращается в гадание.
Стандарт W3C Trace Context определяет формат заголовка traceparent из четырёх полей: версия, trace-id, parent-id и флаги [1]. Одинаковый trace-id во всех сервисах позволяет разным системам трассировки сопоставлять данные.
Пример
1import contextvars
2import uuid
3
4trace_id = contextvars.ContextVar("trace_id")
5
6def handle(question: str):
7 trace_id.set(uuid.uuid4().hex) # 32 hex-символа, как в W3C Trace Context
8 log("retrieve", trace_id.get(), question)
9 chunks = retrieve(question, k=5)
10 log("generate", trace_id.get(), len(chunks))
11 return generate_answer(question, chunks)Как применять в тестировании ИИ
Проверяйте, что trace id присутствует в логах каждого шага и передаётся вызываемым инструментам. Сохраняйте его в записи диалога и оценки пользователя, чтобы по плохому фидбеку найти точный путь запроса и превратить его в кейс golden dataset.
Типичные ошибки
- Генерировать новый идентификатор на каждом шаге вместо сквозного.
- Не передавать trace id в инструменты и внешние вызовы: цепочка обрывается.
- Не связывать идентификатор с оценкой пользователя: плохой фидбек нельзя воспроизвести.
Частые вопросы
Что такое trace id и зачем он нужен?
Это идентификатор, который сопровождает один запрос на всём пути обработки. По нему в логах восстанавливают шаги: поиск, вызовы модели, инструменты, и находят, где произошла ошибка.
Как использовать trace id для разбора плохого ответа?
Сохраняйте его вместе с диалогом и оценкой пользователя. По trace id найдите все шаги запроса, посмотрите найденные фрагменты, версии промпта и модели, определите слой с ошибкой и добавьте случай в golden dataset.
Источники
- Trace Context — W3C, W3C Recommendation