* 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
Creating an AIAgent instance for various providers
These samples show how to create an AIAgent instance using various providers. This is not an exhaustive list, but shows a variety of the more popular options.
For other samples that demonstrate how to use AIAgent instances, see the Getting Started Steps samples.
Prerequisites
See the README.md for each sample for the prerequisites for that sample.
Samples
| Sample | Description |
|---|---|
| Creating an AIAgent with A2A | This sample demonstrates how to create AIAgent for an existing A2A agent. |
| Creating an AIAgent with AzureFoundry | This sample demonstrates how to create an Azure Foundry agent and expose it as an AIAgent |
| Creating an AIAgent with Azure OpenAI ChatCompletion | This sample demonstrates how to create an AIAgent using Azure OpenAI ChatCompletion as the underlying inference service |
| Creating an AIAgent with Azure OpenAI Responses | This sample demonstrates how to create an AIAgent using Azure OpenAI Responses as the underlying inference service |
| Creating an AIAgent with a custom implementation | This sample demonstrates how to create an AIAgent with a custom implementation |
| Creating an AIAgent with Ollama | This sample demonstrates how to create an AIAgent using Ollama as the underlying inference service |
| Creating an AIAgent with ONNX | This sample demonstrates how to create an AIAgent using ONNX as the underlying inference service |
| Creating an AIAgent with OpenAI Assistants | This sample demonstrates how to create an AIAgent using OpenAI Assistants as the underlying inference service. WARNING: The Assistants API is deprecated and will be shut down. For more information see the OpenAI documentation: https://platform.openai.com/docs/assistants/migration |
| Creating an AIAgent with OpenAI ChatCompletion | This sample demonstrates how to create an AIAgent using OpenAI ChatCompletion as the underlying inference service |
| Creating an AIAgent with OpenAI Responses | This sample demonstrates how to create an AIAgent using OpenAI Responses as the underlying inference service |
Running the samples from the console
To run the samples, navigate to the desired sample directory, e.g.
cd AIAgent_With_AzureOpenAIChatCompletion
Set the required environment variables as documented in the sample readme. If the variables are not set, you will be prompted for the values when running the samples. Execute the following command to build the sample:
dotnet build
Execute the following command to run the sample:
dotnet run --no-build
Or just build and run in one step:
dotnet run
Running the samples from Visual Studio
Open the solution in Visual Studio and set the desired sample project as the startup project. Then, run the project using the built-in debugger or by pressing F5.
You will be prompted for any required environment variables if they are not already set.