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(dispatcher)
    .AddFanOutEdge(dispatcher, [researcher, marketer, legal])
    .AddFanInBarrierEdge([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(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.

Go innehåller för närvarande inte någon inbyggd sjöjungfru, DOT eller bildåtergivning för arbetsflöden. Den exponerar arbetsflödesmetadata som du kan använda för att skapa anpassade visualiserings- eller inspektionsverktyg.

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)
}

Använd dessa metadata om du behöver generera egna sjöjungfru- eller Graphviz-utdata.

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:

Sjöjungfrudiagrammet ovan representerar också Graphviz DOT-formatutdata som återges som en riktad graf.

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

Nästa steg