Files
agent-framework/dotnet
T
Roger Barreto 7a8b456294 .NET: Add Agent Filtering Middleware (#478)
* WIP

* Wip

* Updated ADR

* Updated ADR

* Update files

* Address copilot comments

* Update filters from Task<T> to Task only

* Project endpoint

* Add agent ctor filter

* Other Agent Framework investigation

* Remove SK Java, no support

* Update LlamaIndex info

* Removing unrelated files

* Implementation with specialization

* Remove the specialization option as extra unecessary complexity

* Move middleware responsibility to a decorator

* Update readme

* Function invocation wip

* Add Agent Builder

* Adding comparison samples

* Reorganize Samples and Processor vs Decorator

* Remove merge files

* Address formating warnigs

* Update ADR

* Step13 README's update

* Address PR feedback

* Address PR feedback

* Remove configure await from ADR samples

* Update variables

* Address feedback

* Address Agent level tool invocation with Options.ToolsTransformer strategy

* Removing the Processor approach

* Proposal design for Middleware in CreateAIAgent extensions

* Examples clean up and consolitation

* Update middlewares to work with ApprovalREquiredFunction

* Clean-up sample

* Update override function call sample

* Drop configuration from the extensions, looks overkill

* Builder interface ..

* Revert IAIBuilder interface approach

* Cleanup sample

* Adding unit tests

* Fix UT

* Cleanup sample

* Remove unneeded dependency

* Address PR comment + Readme Samples

* Add missing comments for Program.cs Middleware

* Address mor PR comments + add client factory for OpenAI extensions

* Add OpenAI UnitTests for extensions

* Add AzureAI PersistentChatClient UT

* Addess feedback

* Add function invoking UT

* Add builder extension UT

* Address feedback + Rearange abstractions + UT fixes

* Drop context based middleware for full decorating impl

* Update unit tests

* Update UT coverage

* Removing Middelware namespace

* Add missing UT

* Remove internal ToolTransformation Property

* Adjust xmldoc

* Remove transient file

* Address merge conflict

* Add xmldoc remark for clarity

* Address comment

* Address feedback

* Update UT

---------

Co-authored-by: Chris <66376200+crickman@users.noreply.github.com>
7a8b456294 · 2025-09-29 17:58:04 +00:00
History
..

Get Started with Microsoft Agent Framework for C# Developers

Run the Minimal Console demo

The Minimal Console demo is a simple console application which shows how to create and run an agent.

Supported Platforms:

  • .Net: net9.0, net8.0, netstandard2.0, net472
  • OS: Windows, macOS, Linux

If you want to use the latest published packages following the instructions here.

1. Configure required environment variables

This samples uses Azure OpenAI by default so you need to set the following environment variable

$env:AZURE_OPENAI_ENDPOINT = "https://<your deployment>.openai.azure.com/"

If you want to use OpenAI

  1. Edit Program.cs and change the following lines:
    AIAgent agent = new AzureOpenAIClient(
      new Uri(Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!),
      new AzureCliCredential())
       .GetChatClient("gpt-4o-mini")
       .CreateAIAgent(
         instructions: "You are a helpful assistant, you can help the user with weather information.",
         tools: [AIFunctionFactory.Create(GetWeather)]);
    
    To this:
    AIAgent agent = new OpenAIClient(Environment.GetEnvironmentVariable("OPENAI_API_KEY")!)
      .GetChatClient("gpt-4o-mini")
      .CreateAIAgent(
        instructions: "You are a helpful assistant, you can help the user with weather information.",
        tools: [AIFunctionFactory.Create(GetWeather)]);
    
  2. Create an environment variable with your OpenAI key
    $env:OPENAI_API_KEY = "sk-..."
    

2. Build the project

cd demos\MinimalConsole
dotnet build

3. Run the demonstration

dotnet run --framework net9.0 --no-build

Sample output:

The weather in Amsterdam is currently cloudy, with a high temperature of 15°C.