Partilhar 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 do fluxo de trabalho pode ser obtida através de métodos de extensão na Workflow classe: ToMermaidString(), e ToDotString(), que geram, respetivamente, o formato diagrama da Sereia e o formato 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());

Para criar um ficheiro de imagem a partir do formato DOT, pode usar as ferramentas GraphViz com o seguinte comando:

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

Sugestão

Para exportar imagens de visualização precisas de instalar o GraphViz.

Para uma implementação completa e funcional com visualização, veja a amostra 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. O WorkflowViz objeto pode então gerar visualizações em diferentes formatos, como formato Graphviz DOT ou formato de diagrama Mermaid.

Criar 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 diferentes formatos:

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

Sugestão

Para uma saída de texto básico (Mermaid e DOT), não são necessárias dependências adicionais. Para exportar imagens, precisas de instalar o graphviz pacote Python executando: pip install graphviz>=0.20.0 e instalar o GraphViz.

Para uma implementação completa e operativa com visualização, consulte o exemplo Concorrente com Visualização.

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

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 do nó

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

Estilo de borda

  • Bordas normais: setas contínuas
  • Bordas condicionais: setas tracejadas/pontilhadas com rótulos "condicionais"
  • Fan-out/Fan-in: Roteamento automático através de nós intermediários

Opções de layout

  • Layout de cima para baixo: visualização de fluxo hierárquico clara
  • Agrupamento de subgráficos: fluxos de trabalho aninhados mostrados como clusters agrupados
  • Posicionamento automático: GraphViz lida com a colocação ideal de nós