Microsoft Agent Framework 工作流 - 可视化

有时,具有多个执行器和复杂交互的工作流可能很难从仅读取代码中理解。 可视化效果可帮助你更清楚地看到工作流的结构,以便可以验证其是否具有预期设计。

可以通过类上的 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 处理最佳节点放置