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(dispatcher)
    .AddFanOutEdge(dispatcher, [researcher, marketer, legal])
    .AddFanInBarrierEdge([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(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 Go atualmente não inclui um Mermaid, DOT ou renderizador de imagem incorporado para fluxos de trabalho. Expõe metadados do fluxo de trabalho que podes usar para construir ferramentas personalizadas de visualização ou inspeção.

for sourceID, edges := range wf.ReflectEdges() {
  for _, edge := range edges {
    fmt.Printf("%s -> %v\n", sourceID, edge.Connection.SinkIDs)
  }
}

for executorID, binding := range wf.ReflectExecutors() {
  fmt.Printf("executor %s: %s\n", executorID, binding.ImplementationID)
}

for portID, port := range wf.ReflectPorts() {
  fmt.Printf("request port %s: %s -> %s\n", portID, port.RequestType.TypeName, port.ResponseType.TypeName)
}

Use estes metadados se precisar de gerar a sua própria saída em Mermaid ou Graphviz.

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:

O diagrama da Sereia acima também representa a saída do formato Graphviz DOT, renderizada como um grafo direcionado.

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

Próximos passos