Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Наблюдаемость предоставляет аналитические сведения о внутреннем состоянии и поведении рабочих процессов во время выполнения. К ним относятся возможности ведения журнала, метрик и трассировки, которые помогают отслеживать и отлаживать рабочие процессы.
Подсказка
Наблюдаемость — это функция на уровне платформы и не ограничивается рабочими процессами. Дополнительные сведения см. в разделе "Наблюдаемость".
Помимо стандартной телеметрии GenAI рабочие процессы Agent Framework предоставляют дополнительные диапазоны, журналы и метрики для более глубокого анализа выполнения рабочих процессов. Эти функции наблюдения помогают разработчикам понять поток сообщений, производительность исполнителей и любые ошибки, которые могут возникнуть.
Включение наблюдаемости
Ознакомьтесь с инструкциями по включению наблюдаемости в приложениях.
Ознакомьтесь с инструкциями по включению наблюдаемости в приложениях.
Диапазоны рабочих процессов
Во время выполнения рабочего процесса генерируются следующие спаны:
| Имя диапазона | Description |
|---|---|
workflow.build |
Выдается для каждой сборки рабочего процесса. |
workflow.session |
Внешний диапазон, представляющий всю жизнь выполнения рабочего процесса, начиная с начала до остановки или ошибки. |
workflow_invoke |
Издается для каждого цикла от ввода до остановки в сеансе рабочего процесса. |
executor.process {executor_id} |
Выдается для каждого исполнителя, обрабатывающего сообщение. Идентификатор исполнителя добавляется к имени спана. |
edge_group.process |
Генерируется для каждой группы узлов, обрабатывающей сообщение. |
message.send |
Излучается для каждого сообщения, отправленного исполнителем другому исполнителю. |
Во время выполнения рабочего процесса создаются следующие диапазоны:
| Имя диапазона | Description |
|---|---|
workflow.build |
Создается для каждой сборки рабочего процесса. |
workflow.run |
Генерируется для каждого выполнения рабочего процесса. |
executor.process {executor_id} |
Эмитируется для каждого исполнителя, обрабатывающего сообщение. Идентификатор исполнителя добавляется к имени диапазона. |
edge_group.process {edge_group_type} |
Создается для каждой пограничной группы, обрабатывающей сообщение. Тип периферийной группы добавляется к имени диапазона. |
message.send |
Выдается для каждого сообщения, отправленного исполнителем другому исполнителю. |
Атрибуты диапазона
Диапазоны содержат атрибуты, предоставляющие дополнительный контекст для операции. Следующие атрибуты задаются в диапазонах рабочих процессов:
| Атрибут | Диапазоны | Description |
|---|---|---|
workflow.id |
workflow.build, workflow.session |
Уникальный идентификатор рабочего процесса. |
workflow.name |
workflow.session |
Название рабочего процесса. |
workflow.description |
workflow.session |
Описание рабочего процесса. |
workflow.definition |
workflow.build |
Определение JSON графа рабочего процесса. |
session.id |
workflow.session |
Уникальный идентификатор сеанса. |
executor.id |
executor.process |
Уникальный идентификатор исполнителя. |
executor.type |
executor.process |
Имя типа исполнителя. |
executor.input |
executor.process |
Входное сообщение. Устанавливается только в том случае, если конфиденциальные данные включены. |
executor.output |
executor.process |
Выходные данные исполнителя. Устанавливается только в том случае, если конфиденциальные данные включены. |
message.type |
executor.process, message.send |
Имя типа сообщения |
message.content |
message.send |
Содержимое сообщения. Устанавливается только в том случае, если конфиденциальные данные включены. |
message.source_id |
message.send |
Идентификатор исполнителя, отправляющего сообщение. |
message.target_id |
message.send |
Идентификатор целевого исполнителя, если он указан. |
edge_group.type |
edge_group.process |
Тип пограничной группы. |
edge_group.delivered |
edge_group.process |
Было ли доставлено сообщение (булево значение). |
edge_group.delivery_status |
edge_group.process |
Результат доставки (см. состояние доставки группы Edge). |
error.type |
Любой диапазон при ошибке | Имя типа исключения. |
| Атрибут | Диапазоны | Description |
|---|---|---|
workflow.id |
workflow.build, workflow.run |
Уникальный идентификатор рабочего процесса. |
workflow.name |
workflow.run |
Название рабочего процесса. |
workflow.description |
workflow.run |
Описание рабочего процесса. |
workflow.definition |
workflow.build |
Определение JSON графа рабочего процесса. |
workflow_builder.name |
workflow.build |
Имя конструктора рабочих процессов. |
workflow_builder.description |
workflow.build |
Описание построителя рабочих процессов. |
executor.id |
executor.process |
Уникальный идентификатор исполнителя. |
executor.type |
executor.process |
Имя типа исполнителя. |
message.type |
executor.process, message.send |
Имя типа сообщения. |
message.payload_type |
executor.process |
Тип данных нагрузки сообщения. |
message.destination_executor_id |
message.send |
Идентификатор целевого исполнителя, если он указан. |
message.source_id |
edge_group.process |
Идентификатор исполнителя, отправляющего сообщение. |
message.target_id |
edge_group.process |
Идентификатор целевого исполнителя, если он указан. |
edge_group.type |
edge_group.process |
Тип пограничной группы. |
edge_group.id |
edge_group.process |
Уникальный идентификатор пограничной группы. |
edge_group.delivered |
edge_group.process |
Было ли доставлено сообщение (логическое значение). |
edge_group.delivery_status |
edge_group.process |
Результат доставки (см. состояние доставки группы Edge). |
События диапазона
События спана являются структурированными записями логов, прикрепленными к спанам, предоставляя временную последовательность ключевых событий в каждом спане.
| Имя события | Диапазоны | Description |
|---|---|---|
build.started |
workflow.build |
Генерируется при запуске процесса сборки. |
build.validation_completed |
workflow.build |
Выдаётся при успешном прохождении проверки сборки. |
build.completed |
workflow.build |
Излучается при успешном завершении сборки. |
build.error |
workflow.build |
Генерируется при сбое сборки. |
session.started |
workflow.session |
Инициируется при запуске сеанса рабочего процесса. |
session.completed |
workflow.session |
Создается при завершении сеанса рабочего процесса. |
session.error |
workflow.session |
Выдается при возникновении ошибки в сеансе рабочего процесса. |
workflow.started |
workflow_invoke |
Срабатывает при запуске вызова рабочего процесса. |
workflow.completed |
workflow_invoke |
Сигнализируется при завершении инвокации рабочего процесса. |
workflow.error |
workflow_invoke |
Генерируется событие при возникновении ошибки во время вызова рабочего процесса. |
| Имя события | Диапазоны | Description |
|---|---|---|
build.started |
workflow.build |
Генерируется при запуске процесса сборки. |
build.validation_completed |
workflow.build |
Выдается при успешном прохождении проверки сборки. |
build.completed |
workflow.build |
Создается при успешном завершении сборки. |
build.error |
workflow.build |
Генерируется при сбое сборки. |
workflow.started |
workflow.run |
Выдается при запуске выполнения рабочего процесса. |
workflow.completed |
workflow.run |
Генерируется при завершении выполнения рабочего процесса. |
workflow.error |
workflow.run |
Генерируется событие при обнаружении ошибки во время запуска рабочего процесса. |
Связи между диапазонами
Когда шаг выполнения отправляет сообщение другому шагу выполнения, диапазон message.send создается как дочерний элемент диапазона executor.process. Однако диапазон целевого исполнителя executor.process является дочерним элементом message.send диапазона, поскольку выполнение не является вложенным. Вместо этого executor.process диапазон целевого исполнителя связан с message.send диапазоном исходного исполнителя. Это связывание создает трассируемый путь через выполнение рабочего процесса, не подразумевая вложенную иерархию вызовов.
Тот же подход связывания применяется к edge_group.process диапазонам, которые связаны с диапазонами источника message.send для отслеживания причинности. Это поддерживает сценарии слияния, в которых несколько участков источников способствуют одному участку обработки.
Статус доставки Edge-групп
Диапазоны обработки пограничных групп включают атрибуты состояния доставки, указывающие результат маршрутизации сообщений через каждую граничную группу. Атрибут edge_group.delivery_status имеет одно из следующих значений:
| Статус | Description |
|---|---|
delivered |
Сообщение было доставлено целевому исполнителю. |
dropped type mismatch |
Целевой исполнитель не может обрабатывать тип сообщения. |
dropped target mismatch |
Сообщение указало целевой объект, который не соответствует этому краю. |
dropped condition false |
Условие маршрутизации ребра оказалось ложным. |
exception |
Исключение произошло во время пограничной обработки. |
buffered |
Сообщение было буферизованно, ожидая дополнительных сообщений (вентилятор). |
Логический edge_group.delivered атрибут обеспечивает быструю проверку успешности доставки сообщения.
Конфигурация телеметрии
Телеметрию рабочего процесса можно включить с помощью WithOpenTelemetry метода расширения в конструкторе рабочих процессов. Класс WorkflowTelemetryOptions обеспечивает точный контроль над тем, какие диапазоны выводятся:
| Опция | По умолчанию | Description |
|---|---|---|
EnableSensitiveData |
false |
Включает необработанные входные данные, выходные данные и содержимое сообщения в атрибутах диапазона. |
DisableWorkflowBuild |
false |
Отключает workflow.build диапазоны. |
DisableWorkflowRun |
false |
Отключает диапазоны workflow.session и workflow_invoke. |
DisableExecutorProcess |
false |
Отключает executor.process диапазоны. |
DisableEdgeGroupProcess |
false |
Отключает edge_group.process диапазоны. |
DisableMessageSend |
false |
Отключает message.send диапазоны. |
Предупреждение
Включение конфиденциальных данных приводит к тому, что содержимое необработанных сообщений, входные данные исполнителя и выходные данные исполнителя будут включены в данные телеметрии. Это можно включить только в безопасных средах, где данные телеметрии надлежащим образом защищены.
Телеметрия рабочего процесса активируется через глобальную enable_instrumentation() функцию. Если инструментирование включено, все трассы рабочих процессов выдаются автоматически. Функцию configure_otel_providers() можно использовать для настройки экспортеров для трассировок, метрик и журналов.
Предупреждение
Просмотрите конфигурацию конвейера телеметрии, чтобы обеспечить соответствующую защиту конфиденциальных данных при экспорте трассировок.