mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
6acab3d1d6
* Refactor Anthropic model option and provider clients Rename the Anthropic client model option from model_id to model, add provider-specific Anthropic wrappers for Foundry, Bedrock, and Vertex, and expose them through the Anthropic, Foundry, Amazon, and Google namespaces. Update core option handling, docs, samples, and tests accordingly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Fix Anthropic skills sample typing Cast the Anthropic beta client to Any in the skills sample so the pre-commit sample pyright check no longer fails on beta skills and files endpoints that are not exposed by the current SDK stubs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * undo sample mypy * Retry CI after transient external failures Retrigger PR validation after an unrelated Copilot review workflow SAML failure and a transient external tau2 git fetch failure in the Windows Python test setup. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address review feedback on model option merging Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Address Anthropic compatibility review feedback Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * moved all to `model` * fixes for azure ai search * Python: standardize remaining sample env var names Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * Python: fix foundry-local pyright compatibility Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * updated env vars in cicd --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
6acab3d1d6
·
2026-04-01 19:00:18 +00:00
History
Mixed Skills — Code Skills and File Skills
This sample demonstrates how to combine code-defined skills and
file-based skills in a single agent using a SkillScriptRunner callable
and SkillsProvider.
Concepts
| Concept | Description |
|---|---|
| Code skill | A Skill created in Python with @skill.script decorators for in-process callable functions and @skill.resource for dynamic content |
| File skill | A skill discovered from a SKILL.md file on disk, with reference documents and executable script files |
script_runner |
A callable (sync or async) satisfying the SkillScriptRunner protocol — required when file skills have scripts |
SkillsProvider |
Registers both code-defined and file-based skills in a single provider |
Skills in This Sample
volume-converter (code skill)
Defined entirely in Python code using decorators:
@skill.resource—conversion-table: gallons↔liters conversion factors@skill.script—convert: converts a value using a multiplication factor
Code scripts run in-process — no subprocess or external runner needed.
unit-converter (file skill)
Discovered from skills/unit-converter/SKILL.md:
- Reference:
references/CONVERSION_TABLES.md— supported unit conversions and their factors - Script:
scripts/convert.py— converts a value using a multiplication factor (e.g. miles to kilometers)
File scripts are executed as local Python subprocesses via the
script_runner callback.
How It Works
┌─────────────────────────────────────────────────────────────┐
│ SkillsProvider( │
│ skill_paths="./skills", # file skills │
│ skills=[volume_converter_skill], # code skills │
│ script_runner=runner, │
│ ) │
└─────────────┬───────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ script_runner(skill, script, args) │
│ │
│ • Code scripts (@skill.script) → in-process call │
│ • File scripts (scripts/*.py) → subprocess via │
│ the callback function │
└─────────────────────────────────────────────────────────────┘
Prerequisites
Set environment variables (or create a .env file):
FOUNDRY_PROJECT_ENDPOINT=https://your-project.openai.azure.com/
AZURE_OPENAI_MODEL=gpt-4o-mini
Authenticate with Azure CLI:
az login
Running the Sample
cd python
uv run samples/02-agents/skills/mixed_skills/mixed_skills.py
Directory Structure
mixed_skills/
├── mixed_skills.py # Main sample — wires code + file skills together
├── README.md
└── skills/
└── unit-converter/ # File-based skill (discovered from SKILL.md)
├── SKILL.md
├── references/
│ └── CONVERSION_TABLES.md
└── scripts/
└── convert.py