microsoft/deploying-scalable-agents
>- Take a working agent prototype to a scalable, observable production deployment on Microsoft Foundry. Covers deployment patterns (client-hosted, hosted agents, agent workflows), the agent lifecycle, model routing, response caching, evaluation gates, human-in-the-loop approval, observability with OpenTelemetry, cost optimisation, and smoke-testing deployed agents with the AI Smoke Test action. Based on Lesson 16 of AI Agents for Beginners. Foundry Agent Service, model routing, response caching, evaluation gate, release gate, human approval workflow, agent observability, agent tracing, agent cost optimisation, smoke test a hosted agent, production customer support agent. on-device (use local-ai-agents / Lesson 17), Azure infrastructure provisioning unrelated to agents, non-Foundry deployment targets.
npx skills add https://github.com/microsoft/ai-agents-for-beginners --skill deploying-scalable-agents
> Companion skill for Lesson 16 – Deploying Scalable Agents.
> Use it to help a learner move an agent from prototype to a scalable, observable
> production deployment. Ground every recommendation in the lesson content and
> the runnable notebook; do not invent Foundry APIs.
Activate this skill when a learner wants to:
A production agent is mostly the operational skeleton *around* the model (~80%),
not the model itself. Map every recommendation to one of these concerns:
| Concern | Prototype → Production |
|---------|------------------------|
| Hosting | notebook → versioned hosted service |
| Identity | your az login → managed identity + scoped RBAC |
| State | in-memory → externalised thread/memory store |
| Failure | traceback → retries, fallbacks, alerts |
| Cost | "a few cents" → tracked, routed, cached, budgeted |
| Quality | eyeballing → automated evaluation gate |
| Trust | you approve → policy + human-in-the-loop |
create → version → evaluate (gate) → deploy hosted → observe online → collect failures → repeat.
Offline evaluation is a gate, not an afterthought — a version does not ship
unless it clears the threshold. Online observability feeds real failures back
into the offline test set.
Point the learner at these from the notebook
16-python-agent-framework.ipynb:
pass_rate >= threshold and only deploy if true.@tool(approval_mode="always_require") for actions like large refunds.tracer.start_as_current_span(...) and set attributes like routed.model, customer.id.After deploy, verify the endpoint actually answers (a green deploy can still be
silent). Use the AI Smoke Test
action via .github/workflows/smoke-test.yml
with the catalog in tests/. The runner POSTs each
prompt to POST {project_endpoint}/agents/{agent_name}/endpoint/protocols/openai/responses
and asserts on the reply text. The identity needs the Azure AI User role at
Foundry project scope; the token audience must be https://ai.azure.com/.
Layer the gates: smoke test (reachable/responding, every deploy) → **offline
evaluation (good enough to ship, before promotion) → online evaluation** (how
is it doing in the wild, continuous).
FoundryChatClient(...) + provider.as_agent(...) pattern used across the course.Take microsoft/deploying-scalable-agents from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.