Udostępnij za pośrednictwem


Przepływy pracy programu Microsoft Agent Framework — możliwość obserwowania

Obserwowalność dostarcza wglądu w stan wewnętrzny i zachowanie przepływów pracy w trakcie ich wykonywania. Obejmuje to rejestrowanie, metryki i funkcje śledzenia, które ułatwiają monitorowanie i debugowanie przepływów pracy.

Tip

Obserwacja jest funkcją obejmującą całą platformę i nie jest ograniczona do przepływów pracy. Aby uzyskać więcej informacji, zobacz Obserwowanie.

Oprócz standardowej telemetrii GenAI przepływy pracy platformy agentów emitują dodatkowe zakresy, dzienniki i metryki w celu zapewnienia dokładniejszego wglądu w wykonywanie przepływu pracy. Te funkcje obserwacji pomagają deweloperom zrozumieć przepływ komunikatów, wydajność funkcji wykonawczych i wszelkie błędy, które mogą wystąpić.

Włącz możliwość obserwowania

Zapoznaj się z artykułem Włączanie możliwości obserwacji , aby uzyskać instrukcje dotyczące włączania możliwości obserwowania w aplikacjach.

Zapoznaj się z artykułem Włączanie możliwości obserwacji , aby uzyskać instrukcje dotyczące włączania możliwości obserwowania w aplikacjach.

Zasięgi przepływu pracy

Podczas wykonywania przepływu pracy emitowane są następujące zakresy:

Nazwa zakresu Opis
workflow.build Emitowane dla każdej kompilacji przepływu pracy.
workflow.session Zakres zewnętrzny reprezentujący cały okres istnienia wykonywania przepływu pracy od początku do momentu zatrzymania lub błędu.
workflow_invoke Emitowane dla każdego cyklu wejściowego do zatrzymania w ramach sesji przepływu pracy.
executor.process {executor_id} Emitowane dla każdego wykonawcy przetwarzającego komunikat. Identyfikator wykonawcy jest dołączany do nazwy zakresu.
edge_group.process Generowany dla każdej grupy krawędzi podczas przetwarzania wiadomości.
message.send Emitowane dla każdego komunikatu wysyłanego od jednego wykonawcy do innego wykonawcy.

Podczas wykonywania przepływu pracy emitowane są następujące zakresy:

Nazwa zakresu Opis
workflow.build Emitowane dla każdej kompilacji przepływu pracy.
workflow.run Emitowane dla każdego wykonania procesu.
executor.process {executor_id} Emitowane dla każdego wykonawcy przetwarzającego komunikat. Identyfikator funkcji wykonawczej jest dołączany do nazwy zakresu.
edge_group.process {edge_group_type} Emitowane dla każdej grupy krawędzi podczas przetwarzania komunikatu. Typ grupy krawędzi jest dodawany do nazwy obszaru.
message.send Emitowane dla każdej wiadomości wysyłanej z jednego wykonawcy do innego wykonawcy.

Atrybuty zakresów

Span'y niosą atrybuty, które zapewniają dodatkowy kontekst dotyczący procesu operacji. Następujące atrybuty są ustawiane w zakresach przepływu pracy:

Attribute Zakresy Opis
workflow.id workflow.build, workflow.session Unikatowy identyfikator przepływu pracy.
workflow.name workflow.session Nazwa przepływu pracy.
workflow.description workflow.session Opis przepływu pracy.
workflow.definition workflow.build Definicja JSON grafu przepływu pracy.
session.id workflow.session Unikatowy identyfikator sesji.
executor.id executor.process Unikatowy identyfikator wykonawcy.
executor.type executor.process Nazwa typu wykonawcy.
executor.input executor.process Komunikat wejściowy. Ustawiaj tylko wtedy, gdy są włączone poufne dane.
executor.output executor.process Dane wyjściowe funkcji wykonawczej. Ustawiaj tylko wtedy, gdy są włączone poufne dane.
message.type executor.process, message.send Nazwa typu wiadomości.
message.content message.send Zawartość wiadomości. Ustawiaj tylko wtedy, gdy są włączone poufne dane.
message.source_id message.send Identyfikator wykonawcy, który wysłał wiadomość.
message.target_id message.send Identyfikator wykonawcy celu, jeśli zostanie określony.
edge_group.type edge_group.process Typ grupy krawędzi.
edge_group.delivered edge_group.process Czy wiadomość została dostarczona (typ logiczny).
edge_group.delivery_status edge_group.process Wynik dostawy (zobacz Stan dostarczania grupy usługi Edge).
error.type Dowolny zakres błędu Nazwa typu wyjątku.
Attribute Zakresy Opis
workflow.id workflow.build, workflow.run Unikatowy identyfikator przepływu pracy.
workflow.name workflow.run Nazwa przepływu pracy.
workflow.description workflow.run Opis przepływu pracy.
workflow.definition workflow.build Definicja JSON grafu przepływu pracy.
workflow_builder.name workflow.build Nazwa konstruktora przepływu pracy.
workflow_builder.description workflow.build Opis konstruktora przepływu pracy.
executor.id executor.process Unikalny identyfikator wykonawcy.
executor.type executor.process Nazwa typu egzekutora.
message.type executor.process, message.send Nazwa typu wiadomości.
message.payload_type executor.process Typ danych ładunku komunikatu.
message.destination_executor_id message.send Identyfikator wykonawcy docelowego, jeśli zostanie określony.
message.source_id edge_group.process Identyfikator wykonawcy, który wysłał komunikat.
message.target_id edge_group.process Identyfikator wykonawcy obiektu docelowego, jeśli zostanie określony.
edge_group.type edge_group.process Typ grupy krawędzi.
edge_group.id edge_group.process Unikatowy identyfikator grupy brzegowej.
edge_group.delivered edge_group.process Czy wiadomość została dostarczona (wartość logiczna).
edge_group.delivery_status edge_group.process Wynik dostawy (zobacz Stan dostarczania grupy usługi Edge).

Rozpiętość zdarzeń

Zdarzenia spanów to strukturalne wpisy w dzienniku dołączone do spanów, zapewniające chronologię kluczowych momentów w każdym span.

Nazwa zdarzenia Zakresy Opis
build.started workflow.build Emitowane po rozpoczęciu procesu kompilacji.
build.validation_completed workflow.build Emitowane, gdy walidacja kompilacji zakończy się pomyślnie.
build.completed workflow.build Emitowane po pomyślnym zakończeniu kompilacji.
build.error workflow.build Emitowane w przypadku niepowodzenia kompilacji.
session.started workflow.session Emitowane po rozpoczęciu sesji przepływu pracy.
session.completed workflow.session Emitowane po zakończeniu sesji przepływu pracy.
session.error workflow.session Emitowane, gdy sesja przepływu pracy napotka błąd.
workflow.started workflow_invoke Emitowane po rozpoczęciu wywołania przepływu pracy.
workflow.completed workflow_invoke Emitowany jest sygnał po zakończeniu wywołania przepływu pracy.
workflow.error workflow_invoke Emitowane, gdy wywołanie przepływu pracy napotka błąd.
Nazwa zdarzenia Zakresy Opis
build.started workflow.build Emitowane po rozpoczęciu procesu kompilacji.
build.validation_completed workflow.build Emitowane po pomyślnej walidacji kompilacji.
build.completed workflow.build Emitowane po pomyślnym zakończeniu kompilacji.
build.error workflow.build Emitowane w przypadku niepowodzenia kompilacji.
workflow.started workflow.run Emitowane po rozpoczęciu uruchomienia przepływu pracy.
workflow.completed workflow.run Emitowane po zakończeniu przebiegu przepływu pracy.
workflow.error workflow.run Emitowany jest sygnał, gdy uruchomienie przepływu pracy napotka błąd.

Gdy wykonawca wysyła komunikat do innego wykonawcy, message.send zakres tworzony jest jako element podrzędny executor.process zakresu. Jednak zakres docelowego wykonawcy nie jest elementem podrzędnym tego zakresu, ponieważ wykonanie nie jest zagnieżdżone. Zamiast tego zakres wykonawcy docelowego jest powiązany z zakresem wykonawcy źródłowego. To połączenie tworzy śledzalną ścieżkę przez wykonanie przepływu pracy bez implikowania zagnieżdżonej hierarchii wywołań.

To samo podejście łączące stosuje się do edge_group.process segmentów, które są powiązane z segmentami źródłowymi message.send na potrzeby śledzenia przyczynowości. Obsługuje to scenariusze fan-in, w których wiele zakresów źródłowych przyczynia się do jednego zakresu przetwarzania.

Status dostawy grupy Edge

Zakresy przetwarzania grup brzegowych zawierają atrybuty stanu dostarczania, które wskazują wynik trasowania wiadomości przez każdą grupę brzegową. Atrybut edge_group.delivery_status jest ustawiony na jedną z następujących wartości:

Status Opis
delivered Wiadomość została dostarczona do docelowego podmiotu wykonawczego.
dropped type mismatch Funkcja wykonawcza obiektu docelowego nie może obsłużyć typu komunikatu.
dropped target mismatch Wiadomość określiła cel, który nie odpowiada tej krawędzi.
dropped condition false Warunek routingu brzegowego jest obliczany na wartość false.
exception Wystąpił wyjątek podczas przetwarzania krawędzi.
buffered Komunikat został buforowany, czekając na dodatkowe komunikaty (fan-in).

Atrybut edge_group.delivered logiczny zapewnia szybkie sprawdzenie, czy komunikat został pomyślnie dostarczony.

Konfiguracja telemetrii

Telemetrię przepływu pracy można włączyć za pomocą metody rozszerzenia WithOpenTelemetry w kreatorze przepływu pracy. Klasa WorkflowTelemetryOptions zapewnia szczegółową kontrolę nad tym, które zakresy są emitowane:

Option Wartość domyślna Opis
EnableSensitiveData false Zawiera nieprzetworzone dane wejściowe, dane wyjściowe i zawartość komunikatów w atrybutach zakresu.
DisableWorkflowBuild false Wyłącza zakresy workflow.build .
DisableWorkflowRun false Wyłącza zakresy workflow.session i workflow_invoke.
DisableExecutorProcess false Wyłącza zakresy executor.process .
DisableEdgeGroupProcess false Wyłącza zakresy edge_group.process .
DisableMessageSend false Wyłącza zakresy message.send .

Ostrzeżenie

Włączenie poufnych danych powoduje, że nieprzetworzona zawartość komunikatów, dane wejściowe funkcji wykonawczej i dane wyjściowe funkcji wykonawczej mają być uwzględniane w telemetrii. Włącz to tylko w bezpiecznych środowiskach, w których dane telemetryczne są odpowiednio chronione.

Telemetria przepływu pracy jest włączona za pośrednictwem funkcji globalnej enable_instrumentation() . Po włączeniu instrumentacji wszystkie zakresy przepływu pracy są emitowane automatycznie. Funkcja configure_otel_providers() może służyć do konfigurowania eksporterów do śladów, metryk i dzienników.

Ostrzeżenie

Przejrzyj konfigurację potoku telemetrii, aby upewnić się, że poufne dane są odpowiednio chronione podczas eksportowania śladów.

Dalsze kroki