db620d33df
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
Dynamic Function Tools
This sample demonstrates how to dynamically expand the set of function tools available to an agent during a function-calling loop.
What it demonstrates
- The agent starts with only a single
RequestToolsfunction - When the model needs capabilities it doesn't have, it calls
RequestToolswith a description of the functionality needed - The
RequestToolsfunction uses the ambientFunctionInvokingChatClient.CurrentContextto accessChatOptions.Toolsand add new tools at runtime - The agent then uses the newly added tools in subsequent iterations of the same function-calling loop
How it works
- A tool catalog maps keywords (e.g. "weather", "time", "temperature") to pre-built
AIFunctioninstances - The
RequestToolsfunction matches the description against catalog keywords and adds matching tools toChatOptions.Tools FunctionInvokingChatClientautomatically picks up the new tools on the next iteration of its loop
Prerequisites
- .NET 10 SDK or later
- Azure OpenAI service endpoint and deployment configured
- Azure CLI installed and authenticated (for Azure credential authentication)
- User has the
Cognitive Services OpenAI Contributorrole for the Azure OpenAI resource
Running the sample
Set the required environment variables:
$env:AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
$env:AZURE_OPENAI_DEPLOYMENT_NAME="gpt-5.4-mini" # Optional, defaults to gpt-5.4-mini
Run the sample:
dotnet run