有时,具有多个执行器和复杂交互的工作流可能很难从仅读取代码中理解。 可视化效果可帮助你更清楚地看到工作流的结构,以便可以验证其是否具有预期设计。
可以通过类上的 Workflow 扩展方法实现工作流可视化, ToMermaidString()并 ToDotString()分别生成美人鱼图格式和 Graphviz DOT 格式。
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());
若要从 DOT 格式创建图像文件,可以使用带以下命令的 GraphViz 工具:
dotnet run | tail -n +20 | dot -Tpng -o workflow.png
小窍门
若要导出可视化图像,需要 安装 GraphViz。
有关可视化效果的完整工作实现,请参阅 可视化示例。
工作流可视化是通过一个可以与WorkflowViz对象一起实例化的Workflow对象来完成的。 然后,该 WorkflowViz 对象可以采用不同的格式生成可视化效果,例如 Graphviz DOT 格式或美人鱼图格式。
WorkflowViz创建对象非常简单:
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)
然后,可以创建不同格式的可视化效果:
# 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"))
小窍门
对于基本文本输出(美人鱼和 DOT),不需要其他依赖项。 对于图像导出,您需要通过运行graphviz:安装 GraphViz。
有关完整的代码实现和可视化,请参阅“并发与可视化”示例。
导出的关系图将类似于以下示例工作流:
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;
或以 Graphviz DOT 格式表示:
可视化功能
节点样式
- 启动执行程序:带有“(Start)”标签的绿色背景
- 常规执行程序:具有执行程序 ID 的蓝色背景
- 扇入节点:黄金背景,椭圆形状(DOT)或双圆(美人鱼)
边缘样式
- 普通边缘:实心箭头
- 条件边缘:带“条件”标签的虚线/点箭头
- 扇出/扇入:通过中间节点自动路由
布局选项
- 从上到下布局:清晰的层次结构可视化
- 子图聚类:嵌套工作流被显示为分组集群
- 自动定位:GraphViz 处理最佳节点放置