Files
wehub-resource-sync db620d33df
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Blocked by required conditions
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / paths-filter (push) Waiting to run
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Blocked by required conditions
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Blocked by required conditions
dotnet-build-and-test / dotnet-test-functions (push) Blocked by required conditions
dotnet-build-and-test / dotnet-build-and-test-check (push) Blocked by required conditions
dotnet-build-and-test / Integration Test Report (push) Blocked by required conditions
chore: import upstream snapshot with attribution
2026-07-13 13:39:25 +08:00
..

Agent Middleware

This sample demonstrates how to add middleware to intercept:

  • Chat client calls (global and perrequest)
  • Agent runs (guardrails and PII filtering)
  • Function calling (logging/override)

What This Sample Shows

  1. Microsoft Foundry integration via AIProjectClient and DefaultAzureCredential
  2. Chat client middleware using ChatClientBuilder.Use(...)
  3. Agent run middleware (PII redaction and wording guardrails)
  4. Function invocation middleware (logging and overriding a tool result)
  5. Perrequest chat client middleware
  6. Perrequest function pipeline with approval
  7. Combining agentlevel and perrequest middleware
  8. MessageAIContextProvider middleware via AIAgentBuilder.Use(...) for injecting additional context messages
  9. AIContextProvider middleware via ChatClientBuilder.Use(...) for enriching messages, tools, and instructions at the chat client level

Function Invocation Middleware

Not all agents support function invocation middleware.

Attempting to use function middleware on agents that do not wrap a ChatClientAgent or derives from it will throw an InvalidOperationException.

Prerequisites

  1. Environment variables:
    • FOUNDRY_PROJECT_ENDPOINT: Your Foundry project endpoint
    • FOUNDRY_MODEL: Model name (optional; defaults to gpt-5.4-mini)
  2. Sign in with Azure CLI (PowerShell):
    az login
    

Running the Sample

Use PowerShell:

cd dotnet/samples/02-agents/Agents/Agent_Step11_Middleware
dotnet run