Sdílet prostřednictvím


Microsoft Framework agenta – Vizualizace pracovních postupů

Někdy může být pracovní postup, který má více exekutorů a složitých interakcí, obtížné pochopit od pouhého čtení kódu. Vizualizace vám pomůže jasněji zobrazit strukturu pracovního postupu, abyste mohli ověřit, že má zamýšlený návrh.

Vizualizaci pracovního postupu lze dosáhnout pomocí rozšiřujících metod třídy Workflow : ToMermaidString()a ToDotString(), které generují formát diagramu Mermaid a formát Graphviz DOT v uvedeném pořadí.

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

K vytvoření souboru obrázku z formátu DOT můžete použít nástroje GraphViz pomocí následujícího příkazu:

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

Návod

Pokud chcete exportovat vizualizace obrázků, musíte nainstalovat GraphViz.

Kompletní funkční implementaci s vizualizací najdete v ukázce vizualizace.

Vizualizace pracovního postupu se provádí prostřednictvím objektu WorkflowViz, který lze vytvořit z objektu Workflow. Objekt WorkflowViz pak může generovat vizualizace v různých formátech, například ve formátu Graphviz DOT nebo ve formátu diagramu mermaid.

Vytvoření objektu WorkflowViz je jednoduché:

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)

Pak můžete vytvářet vizualizace v různých formátech:

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

Návod

Pro základní textový výstup (Mermaid a DOT) nejsou potřeba žádné další závislosti. Pokud chcete exportovat image, musíte balíček Pythonu graphviz nainstalovat spuštěním příkazu pip install graphviz>=0.20.0 : a nainstalovat GraphViz.

Kompletní funkční implementaci s vizualizací najdete v ukázce Concurrent with Visualization (Souběžné s vizualizací).

Exportovaný diagram bude vypadat podobně jako v následujícím příkladu pracovního postupu:

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;

nebo ve formátu Graphviz DOT

Diagram pracovního postupu

Funkce vizualizace

Stylování uzlů

  • Startování procesů: Zelené pozadí s označením "(Start)"
  • Běžné exekutory: Modré pozadí s ID exekutoru
  • Uzly ventilátoru: Zlaté pozadí se třemi tečkami (DOT) nebo dvojitými kruhy (Mermaid)

Stylování okrajů

  • Normální hrany: Plné šipky
  • Podmíněné hrany: Přerušované nebo tečkované šipky s "podmíněnými" popisky
  • Fan-out/Fan-in: Automatické směrování přes prostřední uzly

Možnosti rozložení

  • Rozložení shora dolů: Jasná vizualizace hierarchického toku
  • Clustering podgrafů: Vnořené pracovní postupy zobrazené jako seskupené clustery
  • Automatické umístění: GraphViz zpracovává optimální umístění uzlů.