Microsoft Agent Framework-arbetsflöden – visualisering

Ibland kan ett arbetsflöde som har flera utförare och komplexa interaktioner vara svårt att förstå från att bara läsa koden. Visualisering kan hjälpa dig att se arbetsflödets struktur tydligare, så att du kan kontrollera att det har den avsedda designen.

Arbetsflödesvisualisering kan uppnås via tilläggsmetoder i Workflow klassen: ToMermaidString(), och ToDotString(), som genererar diagramformatet Sjöjungfru respektive Graphviz DOT-format.

using Microsoft.Agents.AI.Workflows;

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

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

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

Om du vill skapa en avbildningsfil från DOT-formatet kan du använda GraphViz-verktyg med följande kommando:

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

Tips/Råd

Om du vill exportera visualiseringsbilder måste du installera GraphViz.

En fullständig arbetsimplementering med visualisering finns i visualiseringsexemplet.

Arbetsflödesvisualisering görs via ett WorkflowViz objekt som kan instansieras med ett Workflow objekt. Objektet WorkflowViz kan sedan generera visualiseringar i olika format, till exempel Graphviz DOT-format eller Sjöjungfrudiagramformat.

Det är enkelt att skapa ett WorkflowViz objekt:

from agent_framework import WorkflowBuilder, WorkflowViz

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

viz = WorkflowViz(workflow)

Sedan kan du skapa visualiseringar i olika format:

# 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"))

Tips/Råd

För grundläggande textutdata (Sjöjungfru och PUNKT) behövs inga ytterligare beroenden. För avbildningsexport måste du installera graphviz Python-paketet genom att köra: pip install graphviz>=0.20.0 och installera GraphViz.

En fullständig arbetsimplementering med visualisering finns i exemplet Samtidig med visualisering.

Det exporterade diagrammet ser ut ungefär så här för exempelarbetsflödet:

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;

eller i Graphviz DOT-format:

Arbetsflödesdiagram

Visualiseringsfunktioner

Nodformatering

  • Starta köre: Grön bakgrund med etiketten "(Start)"
  • Reguljära exekutorer: Blå bakgrund med exekutör-ID
  • Inbyggda noder: Gyllene bakgrund med ellipsform (DOT) eller dubbla cirklar (sjöjungfru)

Kantdesign

  • Normala kanter: Fyllda pilar
  • Villkorsstyrda kanter: Streckade/prickade pilar med "villkorsstyrda" etiketter
  • Fan-out/Fan-in: Automatisk dirigering via mellanliggande noder

Layoutalternativ

  • Layout uppifrån och ned: Tydlig hierarkisk flödesvisualisering
  • Undergrafkluster: Kapslade arbetsflöden som visas som grupperade kluster
  • Automatisk positionering: GraphViz hanterar optimal nodplacering