Поделиться через


Рабочие процессы Microsoft Agent Framework — наблюдаемость

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

Подсказка

Наблюдаемость — это функция на уровне платформы и не ограничивается рабочими процессами. Дополнительные сведения см. в разделе "Наблюдаемость".

Помимо стандартной телеметрии 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() можно использовать для настройки экспортеров для трассировок, метрик и журналов.

Предупреждение

Просмотрите конфигурацию конвейера телеметрии, чтобы обеспечить соответствующую защиту конфиденциальных данных при экспорте трассировок.

Дальнейшие шаги