Compartilhar via


Fluxos de trabalho do Microsoft Agent Framework – Visualização

Às vezes, um fluxo de trabalho que tem vários executores e interações complexas pode ser difícil de entender apenas lendo o código. A visualização pode ajudá-lo a ver a estrutura do fluxo de trabalho com mais clareza, para que você possa verificar se ele tem o design pretendido.

A visualização de fluxo de trabalho pode ser obtida por meio de métodos de extensão na Workflow classe: ToMermaidString()e ToDotString(), que geram formato de diagrama de Sereia e formato Graphviz DOT, respectivamente.

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

Para criar um arquivo de imagem a partir do formato DOT, você pode usar as ferramentas graphViz com o seguinte comando:

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

Dica

Para exportar imagens de visualização, você precisa instalar o GraphViz.

Para obter uma implementação de trabalho completa com visualização, consulte o exemplo de Visualização.

A visualização do fluxo de trabalho é feita por meio de um WorkflowViz objeto que pode ser instanciado com um Workflow objeto. Em seguida, o WorkflowViz objeto pode gerar visualizações em formatos diferentes, como formato Graphviz DOT ou formato de diagrama de Sereia.

A criação de um WorkflowViz objeto é simples:

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)

Em seguida, você pode criar visualizações em formatos diferentes:

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

Dica

Para saída de texto básico (Mermaid e DOT), não são necessárias dependências adicionais. Para exportação de imagem, você precisa instalar o pacote python graphviz executando: pip install graphviz>=0.20.0 e instalar o GraphViz.

Para obter uma implementação de trabalho completa com visualização, consulte o exemplo Simultâneo com Visualização.

O diagrama exportado será semelhante ao seguinte para o exemplo de fluxo de trabalho:

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;

ou no formato Graphviz DOT:

Diagrama de fluxo de trabalho

Recursos de visualização

Estilo de nó

  • Iniciar executores: plano de fundo verde com o rótulo "(Start)"
  • Executores regulares: plano de fundo azul com ID do executor
  • Nós de Fan-in: fundo dourado com forma de elipse (DOT) ou círculos duplos (Mermaid)

Estilização de bordas

  • Bordas normais: flechas sólidas
  • Bordas condicionais: setas tracejadas/pontilhadas com rótulos "condicionais"
  • Fan-out/Fan-in: Roteamento automático por meio de nós intermediários

Opções de layout

  • Layout de cima para baixo: visualização clara de fluxo hierárquico
  • Agrupamentos de subgrafo: fluxos de trabalho aninhados mostrados como clusters
  • Posicionamento automático: o GraphViz gerencia o posicionamento ideal dos nós