共用方式為


Microsoft 代理程式架構工作流程 - 可觀察性

可觀測性可讓您深入瞭解執行期間工作流程的內部狀態和行為。 這包括日誌記錄、指標和追蹤功能,可協助監控和偵錯工作流程。

小提示

可觀察性是整個框架的功能,並不限於工作流程。 更多資訊請參見 可觀察性。

除了標準 的 GenAI 遙測之外,代理框架工作流程還會發出額外的跨度、日誌和指標,以提供對工作流程執行的更深入的見解。 這些可觀察性功能幫助開發者了解訊息的流程、執行器的效能以及可能發生的任何錯誤。

啟用可觀測性

請參閱 啟用可觀察性 ,了解如何在您的應用程式中啟用可觀察性。

請參閱 啟用可觀察性 ,了解如何在您的應用程式中啟用可觀察性。

工作流程跨度

在工作流程執行過程中會發出以下區間:

跨度名稱 Description
workflow.build 每次工作流程建置都會產生。
workflow.session 外層範圍代表工作流程執行的整個生命週期,從開始到停止或錯誤。
workflow_invoke 在工作流程會話中,每個輸入到停止週期都會輸出。
executor.process {executor_id} 每個執行緒在處理訊息時都會發出。 執行者 ID 會附加在 span 名稱後面。
edge_group.process 每個邊緣群組在處理訊息時都會發出訊號。
message.send 每發送一則從執行人發送給另一執行人的訊息。

在工作流程執行過程中會發出以下區間:

跨度名稱 Description
workflow.build 每次工作流程建置都會產生。
workflow.run 每次工作流程執行都會產生。
executor.process {executor_id} 每個執行者處理訊息時都會發出。 執行者 ID 會附加在 span 名稱後面。
edge_group.process {edge_group_type} 針對每個處理訊息的邊緣群組發出訊號。 邊緣群組類型會附加在範圍名稱後面。
message.send 每當一則訊息從一個執行單元傳送給另一個執行單元時,將會觸發一個事件。

跨度屬性

跨度帶有屬性,提供關於操作的額外背景資訊。 以下屬性會設定於工作流程範圍:

Attribute 跨度 Description
workflow.id workflow.buildworkflow.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.processmessage.send 訊息的類型名稱。
message.content message.send 訊息內容。 只有在啟用敏感資料時才會設定。
message.source_id message.send 發送訊息的執行人的ID。
message.target_id message.send 目標執行者的 ID(如有指定)。
edge_group.type edge_group.process 邊群的類型。
edge_group.delivered edge_group.process 訊息是否已送達(布林值)。
edge_group.delivery_status edge_group.process 交付結果(參見 邊緣群組交付狀態)。
error.type 任意誤差的跨度 例外類型名稱。
Attribute 跨度 Description
workflow.id workflow.buildworkflow.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.processmessage.send 訊息的類型名稱。
message.payload_type executor.process 訊息有效載荷的資料型態。
message.destination_executor_id message.send 目標執行者的 ID(如有指定)。
message.source_id edge_group.process 發送訊息的執行人的ID。
message.target_id edge_group.process 目標執行者的 ID(如有指定)。
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 交付結果(參見 邊緣群組交付狀態)。

時間跨度事件

跨度事件是附著於跨度上的結構化日誌條目,提供每個跨度內關鍵時刻的時間軸。

事件名稱 跨度 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_group.delivery_status 設定為以下其中之一:

狀態 Description
delivered 訊息已送達目標執行者。
dropped type mismatch 目標執行者無法處理訊息類型。
dropped target mismatch 訊息指定了一個與此邊緣不符的目標。
dropped condition false 邊緣路由條件被判定為不成立。
exception 在邊緣處理過程中發生了例外。
buffered 訊息已被緩衝,等待其他訊息匯入(fan-in)。

edge_group.delivered布林屬性提供快速檢查訊息是否成功送達。

遙測配置

工作流遙測可以透過工作流建構器的WithOpenTelemetry擴充方法啟用。 該 WorkflowTelemetryOptions 類別提供細緻的控制,以決定哪些範圍被發射:

Option 預設值 Description
EnableSensitiveData false 包含原始輸入、輸出及訊息內容,並以span屬性表示。
DisableWorkflowBuild false 禁用 workflow.build 範圍。
DisableWorkflowRun false 禁用 workflow.sessionworkflow_invoke 範圍。
DisableExecutorProcess false 停用 executor.process 範圍。
DisableEdgeGroupProcess false 禁用 edge_group.process 範圍。
DisableMessageSend false 禁用 message.send 區段。

警告

啟用敏感資料會將原始訊息內容、執行器輸入與輸出納入遙測資料中。 僅在安全環境下啟用,且遙測資料受到適當保護。

工作流程遙測可透過全域 enable_instrumentation() 功能啟用。 啟用儀器功能時,所有工作流程區間都會自動發出。 此 configure_otel_providers() 函式可用於設定追蹤、指標與日誌的匯出器。

警告

檢視您的遙測管線設定,確保在匯出追蹤時敏感資料受到適當保護。

後續步驟