* Initial plan * Add GitHub Copilot SDK AIAgent implementation with tests Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Add projects to solution and fix sample imports Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Improve pragma comment clarity in GithubCopilotAgentThread Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Address PR feedback: internal constructor/setter, remove CopilotClientOptions ctor, streaming improvements, better sample, container warning Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Add ownsClient parameter to allow caller control over client disposal Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Fix unit tests by removing await using to avoid StreamJsonRpc disposal issues Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Fix file encoding: add UTF-8 BOM to Program.cs Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Fix dotnet-format errors: UTF-8 BOM, remove unused logger, add this qualifier, remove unnecessary usings Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Fix test file encoding and remove redundant cast Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Add AsAIAgent extension methods for CopilotClient with tests Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> * Remove IL suppressions, use TryComplete for channel writer, remove TCS from streaming Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Keep session alive across calls, add tools overload, add tests Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Revert session persistence changes - sessions dispose after each call Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Add CreatedAt property mapping using DateTimeOffset.UtcNow Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Add DataContent handling via temp files and attachments Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Fix formatting: remove extra indentation, simplify Path references, remove unused using Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Refactor: extract helper methods to reduce duplication in DataContent handling Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Updated sample and session config mapping * Added instructions parameter * Updated README * Address PR feedback: reorder params, optimize dictionary, update prefix, remove InternalsVisibleTo, update sample prompts, add defaults Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Remove StreamJsonRpc reference from sample project Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Fix parameter ordering: tools now after description, rename to s_mediaTypeExtensions, simplify extension logic, update prompts, fix test expectations Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Fix streaming prompt: change Python to C# for Fibonacci example Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Handle all SDK events, add UsageContent support, fix model name, remove AutoStart, add using for Channels Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> * Resolved build errors * Addressed comments * Small fix * Addressed comment * Small fix * Addressed comments * Added integration tests * Small update --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: westey-m <164392973+westey-m@users.noreply.github.com> Co-authored-by: Dmytro Struk <13853051+dmytrostruk@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com>
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 With Agents 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 Anthropic | This sample demonstrates how to create an AIAgent using Anthropic Claude models as the underlying inference service |
| Creating an AIAgent with Foundry Agents using Azure.AI.Agents.Persistent | This sample demonstrates how to create a Foundry Persistent agent and expose it as an AIAgent using the Azure.AI.Agents.Persistent SDK |
| Creating an AIAgent with Foundry Agents using Azure.AI.Project | This sample demonstrates how to create an Foundry Project agent and expose it as an AIAgent using the Azure.AI.Project SDK |
| Creating an AIAgent with AzureFoundry Model | This sample demonstrates how to use any model deployed to Azure Foundry to create 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 GitHub Copilot | This sample demonstrates how to create an AIAgent using GitHub Copilot SDK as the underlying inference service |
| 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.