Delen via


Microsoft Agent Framework-werkstromen - Visualisatie

Soms kan een werkstroom met meerdere uitvoerders en complexe interacties moeilijk te begrijpen zijn door alleen de code te lezen. Visualisatie kan u helpen de structuur van de werkstroom duidelijker te bekijken, zodat u kunt controleren of deze het beoogde ontwerp heeft.

Werkstroomvisualisatie kan worden bereikt via extensiemethoden in de Workflow klasse: ToMermaidString()en ToDotString(), waarmee respectievelijk de indeling Mermaid-diagram en graphviz DOT-indeling worden gegenereerd.

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());

Als u een afbeeldingsbestand wilt maken op basis van de DOT-indeling, kunt u GraphViz-hulpprogramma's gebruiken met de volgende opdracht:

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

Aanbeveling

Als u visualisatieafbeeldingen wilt exporteren, moet u GraphViz installeren.

Zie het voorbeeld visualisatie voor een volledige werkende implementatie met visualisatie.

Werkstroomvisualisatie wordt uitgevoerd via een WorkflowViz object dat kan worden geïnstantieerd met een Workflow object. Het WorkflowViz object kan vervolgens visualisaties genereren in verschillende indelingen, zoals Graphviz DOT-indeling of Mermaid-diagramindeling.

Het maken van een WorkflowViz object is eenvoudig:

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)

Vervolgens kunt u visualisaties in verschillende indelingen maken:

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

Aanbeveling

Voor basistekstuitvoer (Mermaid en DOT) zijn er geen extra afhankelijkheden nodig. Voor het exporteren van afbeeldingen moet u het graphviz Python-pakket installeren door het volgende uit te voeren: pip install graphviz>=0.20.0 en GraphViz installeren.

Zie het voorbeeld Gelijktijdig met visualisatie voor een volledige werkende implementatie met visualisatie.

Het geëxporteerde diagram ziet er ongeveer als volgt uit voor de voorbeeldwerkstroom:

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;

ofwel in Graphviz DOT-indeling:

Werkstroomdiagram

Visualisatiefuncties

Stijl van knooppunt

  • Uitvoerders starten: Groene achtergrond met label '(Starten)'
  • Reguliere uitvoerders: Blauwe achtergrond met uitvoerders-id
  • Ventilatorknooppunten: Gouden achtergrond met ellipsvorm (DOT) of dubbele cirkels (Zeemeermin)

Randstijl

  • Normale randen: effen pijlen
  • Voorwaardelijke randen: Stippelpijlen met voorwaardelijke labels
  • Fan-out/Fan-in: Automatische routering via tussenliggende knooppunten

Indelingsopties

  • Indeling van boven naar beneden: Duidelijke hiërarchische stroomvisualisatie
  • Subgraafclustering: Geneste werkstromen die worden weergegeven als gegroepeerde clusters
  • Automatische plaatsing: GraphViz verwerkt optimale plaatsing van knooppunten