Files
agent-framework/dotnet/samples/GettingStarted/AgentProviders
T
Copilot e82d9f5e45 .NET: Add AIAgent implementation for GitHub Copilot SDK (#3395)
* 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>
e82d9f5e45 ยท 2026-01-27 18:51:56 +00:00
History
..

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.