Files
agent-framework/dotnet/samples/GettingStarted/Workflows
T
Stephen Toub 03ef7f054f .NET: Add AgentWorkflowBuilder group chat (#861)
* Add AgentWorkflowBuilder group chat

And fix a variety of issues along the way:
- Use DateTime{Offset}.UtcNow rather than Now
- AIAgentHostExecutor shouldn't be publishing empty messages
- Sequential workflows should be flowing all history and not just the output from the previous agent as the input into the next agent
- Renamed some of the new agent workflow methods... still not super happy with the shape, though
- Simplified handoffs builder, e.g. using a hashset with a custom comparer instead of a dictionary
- Improved multi-service use by trying to change assistant->user role for messages created by other agents
- Changed MessageMerger to rely on M.E.AI's coalescing more and to avoid empty contents / text
- Ensured that messages from ChatClientAgent include MessageId and CreatedAt timestamps
- Avoided including instructions for agents in a handoff workflow that don't have any handoffs
- Removed the unnecessary end function in handoffs
- Improved naming of executors to include agent name for debuggability
- Use "N" formatting with Guid.ToString everywhere, to avoid the unnecessary extra dash character which is also not valid in various places (like function tool names)
- Replace `params T[]` with `params IEnumerable<T>` to make public APIs more flexible in what they consume

* Address feedback

- Fix unintentional provider change in sample
03ef7f054f ยท 2025-09-24 16:38:34 +00:00
History
..

Workflow Getting Started Samples

The getting started with workflow samples demonstrate the fundamental concepts and functionalities of workflows in Agent Framework.

Samples Overview

Foundational Concepts - Start Here

Please begin with the Foundational samples in order. These three samples introduce the core concepts of executors, edges, agents in workflows, streaming, and workflow construction.

The folder name starts with an underscore (_Foundational) to ensure it appears first in the explorer view.

Sample Concepts
Executors and Edges Minimal workflow with basic executors and edges
Streaming Extends workflows with event streaming
Agents Use agents in workflows
Agentic Workflow Patterns Demonstrates common agentic workflow patterns
Multi-Service Workflows Shows using multiple AI services in the same workflow

Once completed, please proceed to other samples listed below.

Note that you don't need to follow a strict order after the foundational samples. However, some samples build upon concepts from previous ones, so it's beneficial to be aware of the dependencies.

Agents

Sample Concepts
Foundry Agents in Workflows Demonstrates using Azure Foundry Agents within a workflow
Custom Agent Executors Shows how to create a custom agent executor for more complex scenarios
Workflow as an Agent Illustrates how to encapsulate a workflow as an agent

Concurrent Execution

Sample Concepts
Fan-Out and Fan-In Introduces parallel processing with fan-out and fan-in patterns

Loop

Sample Concepts
Looping Shows how to create a loop within a workflow

Workflow Shared States

Sample Concepts
Shared States Demonstrates shared states between executors for data sharing and coordination

Conditional Edges

Sample Concepts
Edge Conditions Introduces conditional edges for dynamic routing based on executor outputs
Switch-Case Routing Extends conditional edges with switch-case routing for multiple paths
Multi-Selection Routing Demonstrates multi-selection routing where one executor can trigger multiple downstream executors

These 3 samples build upon each other. It's recommended to explore them in sequence to fully grasp the concepts.

Declarative Workflows

Sample Concepts
DeclarativeWorkflow Demonstrates execution of declartive workflows.

Checkpointing

Sample Concepts
Checkpoint and Resume Introduces checkpoints for saving and restoring workflow state for time travel purposes
Checkpoint and Rehydrate Demonstrates hydrating a new workflow instance from a saved checkpoint
Checkpoint with Human-in-the-Loop Combines checkpointing with human-in-the-loop interactions

Human-in-the-Loop

Sample Concepts
Basic Human-in-the-Loop Introduces human-in-the-loop interaction using input ports and external requests