Przepływy pracy programu Microsoft Agent Framework — wizualizacja

Czasami przepływ pracy, który ma wiele funkcji wykonawczych i złożonych interakcji, może być trudny do zrozumienia z samego czytania kodu. Wizualizacja może ułatwić bardziej czytelne wyświetlanie struktury przepływu pracy, dzięki czemu można sprawdzić, czy ma on zamierzony projekt.

Wizualizację przepływu pracy można osiągnąć za pomocą metod rozszerzeń w Workflow klasie : ToMermaidString()i ToDotString(), które generują odpowiednio format diagramu Mermaid i Graphviz DOT.

using Microsoft.Agents.AI.Workflows;

// Create a workflow with a fan-out and fan-in pattern
var workflow = new WorkflowBuilder(dispatcher)
    .AddFanOutEdge(dispatcher, [researcher, marketer, legal])
    .AddFanInBarrierEdge([researcher, marketer, legal], aggregator)
    .Build();

// Mermaid diagram
Console.WriteLine(workflow.ToMermaidString());

// DiGraph string
Console.WriteLine(workflow.ToDotString());

Aby utworzyć plik obrazu w formacie DOT, możesz użyć narzędzi GraphViz za pomocą następującego polecenia:

dotnet run | tail -n +20 | dot -Tpng -o workflow.png

Tip

Aby wyeksportować obrazy wizualizacji, musisz zainstalować program GraphViz.

Aby uzyskać pełną implementację roboczą z wizualizacją, zobacz przykład Wizualizacja.

Wizualizacja przepływu pracy jest wykonywana za pośrednictwem obiektu WorkflowViz, który można zainstancjonować za pomocą obiektu Workflow. Obiekt WorkflowViz może następnie generować wizualizacje w różnych formatach, takich jak format Graphviz DOT lub format diagramu Mermaid.

WorkflowViz Tworzenie obiektu jest proste:

from agent_framework import WorkflowBuilder, WorkflowViz

# Create a workflow with a fan-out and fan-in pattern
workflow = (
    WorkflowBuilder(start_executor=dispatcher)
    .add_fan_out_edges(dispatcher, [researcher, marketer, legal])
    .add_fan_in_edges([researcher, marketer, legal], aggregator)
    .build()
)

viz = WorkflowViz(workflow)

Następnie można tworzyć wizualizacje w różnych formatach:

# Mermaid diagram
print(viz.to_mermaid())
# DiGraph string
print(viz.to_digraph())
# Export to a file
print(viz.export(format="svg"))
# Different formats are also supported
print(viz.export(format="png"))
print(viz.export(format="pdf"))
print(viz.export(format="dot"))
# Export with custom filenames
print(viz.export(format="svg", filename="my_workflow.svg"))
# Convenience methods
print(viz.save_svg("workflow.svg"))
print(viz.save_png("workflow.png"))
print(viz.save_pdf("workflow.pdf"))

Tip

W przypadku podstawowego wyjścia tekstowego (Mermaid i DOT) nie są potrzebne żadne dodatkowe zależności. W przypadku eksportowania graphviz obrazów należy zainstalować pakiet języka Python, uruchamiając polecenie : pip install graphviz>=0.20.0 i zainstaluj program GraphViz.

Aby uzyskać pełną implementację roboczą z wizualizacją, zobacz przykład Concurrent with Visualization.

Język Go obecnie nie zawiera wbudowanego renderera Mermaid, DOT ani obrazów do obsługi przepływów pracy. Udostępnia metadane przepływu pracy, których można użyć do tworzenia niestandardowych wizualizacji lub narzędzi do inspekcji.

for sourceID, edges := range wf.ReflectEdges() {
  for _, edge := range edges {
    fmt.Printf("%s -> %v\n", sourceID, edge.Connection.SinkIDs)
  }
}

for executorID, binding := range wf.ReflectExecutors() {
  fmt.Printf("executor %s: %s\n", executorID, binding.ImplementationID)
}

for portID, port := range wf.ReflectPorts() {
  fmt.Printf("request port %s: %s -> %s\n", portID, port.RequestType.TypeName, port.ResponseType.TypeName)
}

Użyj tych metadanych, jeśli musisz wygenerować własne dane wyjściowe Mermaid lub Graphviz.

Wyeksportowany diagram będzie wyglądać podobnie do następującego dla przykładowego przepływu pracy:

flowchart TD
  dispatcher["dispatcher (Start)"];
  researcher["researcher"];
  marketer["marketer"];
  legal["legal"];
  aggregator["aggregator"];
  fan_in__aggregator__e3a4ff58((fan-in))
  legal --> fan_in__aggregator__e3a4ff58;
  marketer --> fan_in__aggregator__e3a4ff58;
  researcher --> fan_in__aggregator__e3a4ff58;
  fan_in__aggregator__e3a4ff58 --> aggregator;
  dispatcher --> researcher;
  dispatcher --> marketer;
  dispatcher --> legal;

lub w formacie DOT Graphviz:

Powyższy diagram Mermaid reprezentuje również dane wyjściowe formatu Graphviz DOT renderowane jako wykres skierowany.

Funkcje wizualizacji

Styl węzła

  • Uruchamianie funkcji wykonawczych: zielone tło z etykietą "(Start)"
  • Regularni wykonawcy: Niebieskie tło z identyfikatorem wykonawcy
  • Węzły skupiające: Złote tło z kształtem elipsy (DOT) lub podwójnymi okręgami (Mermaid)

Stylizacja krawędzi

  • Zwykłe krawędzie: strzałki stałe
  • Krawędzie warunkowe: kreskowane/kropkowane strzałki z etykietami "warunkowymi"
  • Fan-out/Fan-in: automatyczny routing za pośrednictwem węzłów pośrednich

Opcje układu

  • Układ od góry do dołu: Jasna wizualizacja przepływu hierarchicznego
  • Klastrowanie podgrafów: zagnieżdżone przepływy pracy wyświetlane jako zgrupowane klastry
  • Automatyczne pozycjonowanie: Narzędzie GraphViz obsługuje optymalne umieszczanie węzłów

Dalsze kroki