mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
e5f7b9c260
* support reflection for discovery of resources and scripts in class-based skills * fix format issues * refactor samples to use reflection * Validate resource member signatures during discovery Add discovery-time validation in AgentClassSkill.DiscoverResources() to fail fast when [AgentSkillResource] is applied to members with incompatible signatures: - Reject indexer properties (getter has parameters) - Reject methods with parameters other than IServiceProvider or CancellationToken Throws InvalidOperationException with actionable error messages instead of allowing silent runtime failures when ReadAsync invokes the AIFunction with no named arguments. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * prevent duplicates --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
e5f7b9c260
·
2026-04-10 11:56:28 +01:00
History
Class-Based Agent Skills Sample
This sample demonstrates how to define Agent Skills as C# classes using AgentClassSkill
with attributes for automatic script and resource discovery.
What it demonstrates
- Creating skills as classes that extend
AgentClassSkill - Using
[AgentSkillResource]on properties to define resources - Using
[AgentSkillScript]on methods to define scripts - Automatic discovery (no need to override
Resources/Scripts) - Using the
AgentSkillsProviderconstructor with class-based skills - Overriding
SerializerOptionsfor Native AOT compatibility
Skills Included
unit-converter (class-based)
A UnitConverterSkill class that converts between common units. Defined in Program.cs:
conversion-table— Static resource with factor tableconvert— Script that performsvalue × factorconversion
Running the Sample
Prerequisites
- .NET 10.0 SDK
- Azure OpenAI endpoint with a deployed model
Setup
export AZURE_OPENAI_ENDPOINT="https://your-endpoint.openai.azure.com/"
export AZURE_OPENAI_DEPLOYMENT_NAME="gpt-5.4-mini"
Run
dotnet run
Expected Output
Converting units with class-based skills
------------------------------------------------------------
Agent: Here are your conversions:
1. **26.2 miles → 42.16 km** (a marathon distance)
2. **75 kg → 165.35 lbs**