[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M69A0B4ABWCCSN2ZWM1GJRTQ":3,"skill-same:01M69A0B4ABWCCSN2ZWM1GJRTQ":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":29,"ownerHtmlUrl":30,"ownerBlogUrl":31,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M69A0B4ABWCCSN2ZWM1GJRTQ","deploying-scalable-agents",null,"microsoft\u002Fai-agents-for-beginners","microsoft","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F6154722?v=4","01M698VYDXZ6JW5WH3CRV650R8","Microsoft","01M6998ZK2275KMJE6Y5SEA2X2",79423,"MIT","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-CN\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[18],"deploying scalable agents","2026-11-10 10:12:30",false,"---\nname: deploying-scalable-agents\nlicense: MIT\n---\n# 使用 Microsoft Foundry 部署可扩展代理\n\n> 配合 [第16课 – 部署可扩展代理](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md) 的辅助技能。\n> 用于帮助学习者将代理从原型推进到可扩展的可观察\n> 生产部署。所有建议均基于课程内容和\n> 可运行的笔记本；不得自行发明 Foundry API。\n\n## 触发条件\n\n当学习者想要时激活此技能：\n- 将代理部署到 Microsoft Foundry 作为\u003Cstrong>托管代理\u003C\u002Fstrong>，并使其具有版本管理\u002F可观察性。\n- 在 **客户端托管、托管代理和代理工作流** 部署模式之间做选择。\n- 添加 \u003Cstrong>模型路由\u003C\u002Fstrong>、\u003Cstrong>响应缓存\u003C\u002Fstrong> 或 \u003Cstrong>有边界并发\u003C\u002Fstrong> 以控制延迟和成本。\n- 添加\u003Cstrong>评估门控\u003C\u002Fstrong>，避免错误的代理版本投产。\n- 为高风险操作添加\u003Cstrong>人机审核\u003C\u002Fstrong>步骤。\n- 使用 **OpenTelemetry** 追踪为生产环境代理添加监测。\n- 对已部署代理进行\u003Cstrong>冒烟测试\u003C\u002Fstrong>，作为快速的部署后门控。\n\n## 核心思维模型\n\n生产代理主要是模型（约80%）的\u003Cem>运行骨架\u003C\u002Fem>，\n而非模型本身。将所有建议映射到下述关注点之一：\n\n| 关注点 | 原型 → 生产 |\n|---------|------------------------|\n| 托管 | 笔记本 → 版本化托管服务 |\n| 身份 | 你的 `az login` → 托管身份 + 有范围的 RBAC |\n| 状态 | 内存中 → 外部线程\u002F内存存储 |\n| 故障 | 追踪错误 → 重试、回退、警报 |\n| 成本 | “几分钱” → 追踪、路由、缓存、预算 |\n| 质量 | 目测 → 自动评估门控 |\n| 信任 | 你批准 → 策略 + 人机审核 |\n\n## 部署模式（选择一种，或组合使用）\n\n1. \u003Cstrong>客户端托管\u003C\u002Fstrong> — 推理循环在你进程中运行。最大控制权；你负责扩展和状态管理。\n2. **托管代理（Foundry Agent Service）** — Foundry 托管循环、存储线程、执行 RBAC\u002F内容安全，门户显示代理。控制较少，运维复杂度大幅降低。\n3. \u003Cstrong>代理工作流\u003C\u002Fstrong> — 多代理\u002F工具组成的图形，带分支、审批节点和持久化检查点。\n\n## 生命周期（代理交付的循环）\n\n`创建 → 版本化 → 评估（门控）→ 托管部署 → 在线观察 → 收集故障 → 重复`。\n**离线评估是门控，而非事后附加** — 未达到门限的版本不会交付。\n在线可观察性将实际故障反馈\n至离线测试集。\n\n## 扩展与成本控制手段（优先顺序）\n\n1. \u003Cstrong>模型选型适当\u003C\u002Fstrong> — 使用能通过评估门控的最小模型。\n2. \u003Cstrong>按复杂度路由\u003C\u002Fstrong> — 简单请求用小而快的模型，复杂推理用大的模型（自定义分类器或 Foundry 模型路由器）。\n3. \u003Cstrong>缓存\u003C\u002Fstrong> — 对近似重复请求无需调用模型即可提供服务。\n4. **无状态设计 + 有界并发** — 状态外部化；带退避的重试。\n\n## 关键模式复现\n\n引导学习者关注笔记本中的以下内容\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb):\n\n- \u003Cstrong>请求处理器\u003C\u002Fstrong>：缓存 → 按复杂度路由 → 追踪跨度 → 运行 → 缓存。\n- \u003Cstrong>评估门控\u003C\u002Fstrong>：对离线测试集评分；返回 `pass_rate >= threshold`，仅当为真时才部署。\n- \u003Cstrong>人工审批\u003C\u002Fstrong>：针对大额退款等操作用 `@tool(approval_mode=\"always_require\")`。\n- \u003Cstrong>追踪\u003C\u002Fstrong>：用 `tracer.start_as_current_span(...)` 包裹每个请求，并设置 `routed.model`、`customer.id` 等属性。\n\n## 已部署代理的冒烟测试\n\n部署后，验证端点是否真正响应（部署成功也可能无响应）。\n使用 [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\n操作，通过 [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\n和 [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md) 中的目录。运行程序将每个\n提示 POST 到 `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\n并断言回复文本。身份需在 Foundry 项目范围内拥有\u003Cstrong>Azure AI User\u003C\u002Fstrong>角色；\n令牌受众必须是 `https:\u002F\u002Fai.azure.com\u002F`。\n\n多重门控：\u003Cstrong>冒烟测试\u003C\u002Fstrong>（可达且响应，每次部署）→ \u003Cstrong>离线评估\u003C\u002Fstrong>（足够好才投产，晋升前）→ \u003Cstrong>在线评估\u003C\u002Fstrong>（实际表现，持续进行）。\n\n\n\n## 企业级控制\n\n- **RBAC**：为每个托管代理分配最小权限的托管身份。\n- **生产环境的 MCP**：将每个 MCP 服务器视为不可信边界 — 固定版本、限定身份、验证输出、限流，绝不泄露密钥。\n\n## 助手的安全护栏\n\n- 优先使用全课程推荐的标准 `FoundryChatClient(...)` + `provider.as_agent(...)` 模式。\n- 不得承诺未经验证的实时 Azure 结果；建议使用冒烟测试工作流确认部署。\n- 评估与成本建议保持绑定：评估设定质量底线，路由\u002F缓存带来接近该底线的成本控制。\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免责声明**：\n本文件由 AI 翻译服务 [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) 翻译完成。尽管我们力求准确，但请注意，自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息，建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->","# 使用 Microsoft Foundry 部署可扩展代理\n\n> 配合 [第16课 – 部署可扩展代理](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002FREADME.md) 的辅助技能。\n> 用于帮助学习者将代理从原型推进到可扩展的可观察\n> 生产部署。所有建议均基于课程内容和\n> 可运行的笔记本；不得自行发明 Foundry API。\n\n## 触发条件\n\n当学习者想要时激活此技能：\n- 将代理部署到 Microsoft Foundry 作为\u003Cstrong>托管代理\u003C\u002Fstrong>，并使其具有版本管理\u002F可观察性。\n- 在 **客户端托管、托管代理和代理工作流** 部署模式之间做选择。\n- 添加 \u003Cstrong>模型路由\u003C\u002Fstrong>、\u003Cstrong>响应缓存\u003C\u002Fstrong> 或 \u003Cstrong>有边界并发\u003C\u002Fstrong> 以控制延迟和成本。\n- 添加\u003Cstrong>评估门控\u003C\u002Fstrong>，避免错误的代理版本投产。\n- 为高风险操作添加\u003Cstrong>人机审核\u003C\u002Fstrong>步骤。\n- 使用 **OpenTelemetry** 追踪为生产环境代理添加监测。\n- 对已部署代理进行\u003Cstrong>冒烟测试\u003C\u002Fstrong>，作为快速的部署后门控。\n\n## 核心思维模型\n\n生产代理主要是模型（约80%）的\u003Cem>运行骨架\u003C\u002Fem>，\n而非模型本身。将所有建议映射到下述关注点之一：\n\n| 关注点 | 原型 → 生产 |\n|---------|------------------------|\n| 托管 | 笔记本 → 版本化托管服务 |\n| 身份 | 你的 `az login` → 托管身份 + 有范围的 RBAC |\n| 状态 | 内存中 → 外部线程\u002F内存存储 |\n| 故障 | 追踪错误 → 重试、回退、警报 |\n| 成本 | “几分钱” → 追踪、路由、缓存、预算 |\n| 质量 | 目测 → 自动评估门控 |\n| 信任 | 你批准 → 策略 + 人机审核 |\n\n## 部署模式（选择一种，或组合使用）\n\n1. \u003Cstrong>客户端托管\u003C\u002Fstrong> — 推理循环在你进程中运行。最大控制权；你负责扩展和状态管理。\n2. **托管代理（Foundry Agent Service）** — Foundry 托管循环、存储线程、执行 RBAC\u002F内容安全，门户显示代理。控制较少，运维复杂度大幅降低。\n3. \u003Cstrong>代理工作流\u003C\u002Fstrong> — 多代理\u002F工具组成的图形，带分支、审批节点和持久化检查点。\n\n## 生命周期（代理交付的循环）\n\n`创建 → 版本化 → 评估（门控）→ 托管部署 → 在线观察 → 收集故障 → 重复`。\n**离线评估是门控，而非事后附加** — 未达到门限的版本不会交付。\n在线可观察性将实际故障反馈\n至离线测试集。\n\n## 扩展与成本控制手段（优先顺序）\n\n1. \u003Cstrong>模型选型适当\u003C\u002Fstrong> — 使用能通过评估门控的最小模型。\n2. \u003Cstrong>按复杂度路由\u003C\u002Fstrong> — 简单请求用小而快的模型，复杂推理用大的模型（自定义分类器或 Foundry 模型路由器）。\n3. \u003Cstrong>缓存\u003C\u002Fstrong> — 对近似重复请求无需调用模型即可提供服务。\n4. **无状态设计 + 有界并发** — 状态外部化；带退避的重试。\n\n## 关键模式复现\n\n引导学习者关注笔记本中的以下内容\n[`16-python-agent-framework.ipynb`](..\u002F..\u002F..\u002F16-deploying-scalable-agents\u002Fcode_samples\u002F16-python-agent-framework.ipynb):\n\n- \u003Cstrong>请求处理器\u003C\u002Fstrong>：缓存 → 按复杂度路由 → 追踪跨度 → 运行 → 缓存。\n- \u003Cstrong>评估门控\u003C\u002Fstrong>：对离线测试集评分；返回 `pass_rate >= threshold`，仅当为真时才部署。\n- \u003Cstrong>人工审批\u003C\u002Fstrong>：针对大额退款等操作用 `@tool(approval_mode=\"always_require\")`。\n- \u003Cstrong>追踪\u003C\u002Fstrong>：用 `tracer.start_as_current_span(...)` 包裹每个请求，并设置 `routed.model`、`customer.id` 等属性。\n\n## 已部署代理的冒烟测试\n\n部署后，验证端点是否真正响应（部署成功也可能无响应）。\n使用 [AI Smoke Test](https:\u002F\u002Fgithub.com\u002Fmarketplace\u002Factions\u002Fai-smoke-test)\n操作，通过 [`.github\u002Fworkflows\u002Fsmoke-test.yml`](..\u002F..\u002F..\u002F..\u002F..\u002F.github\u002Fworkflows\u002Fsmoke-test.yml)\n和 [`tests\u002F`](..\u002F..\u002F..\u002Ftests\u002FREADME.md) 中的目录。运行程序将每个\n提示 POST 到 `POST {project_endpoint}\u002Fagents\u002F{agent_name}\u002Fendpoint\u002Fprotocols\u002Fopenai\u002Fresponses`\n并断言回复文本。身份需在 Foundry 项目范围内拥有\u003Cstrong>Azure AI User\u003C\u002Fstrong>角色；\n令牌受众必须是 `https:\u002F\u002Fai.azure.com\u002F`。\n\n多重门控：\u003Cstrong>冒烟测试\u003C\u002Fstrong>（可达且响应，每次部署）→ \u003Cstrong>离线评估\u003C\u002Fstrong>（足够好才投产，晋升前）→ \u003Cstrong>在线评估\u003C\u002Fstrong>（实际表现，持续进行）。\n\n\n\n## 企业级控制\n\n- **RBAC**：为每个托管代理分配最小权限的托管身份。\n- **生产环境的 MCP**：将每个 MCP 服务器视为不可信边界 — 固定版本、限定身份、验证输出、限流，绝不泄露密钥。\n\n## 助手的安全护栏\n\n- 优先使用全课程推荐的标准 `FoundryChatClient(...)` + `provider.as_agent(...)` 模式。\n- 不得承诺未经验证的实时 Azure 结果；建议使用冒烟测试工作流确认部署。\n- 评估与成本建议保持绑定：评估设定质量底线，路由\u002F缓存带来接近该底线的成本控制。\n\n---\n\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**免责声明**：\n本文件由 AI 翻译服务 [Co-op Translator](https:\u002F\u002Fgithub.com\u002FAzure\u002Fco-op-translator) 翻译完成。尽管我们力求准确，但请注意，自动翻译可能包含错误或不准确之处。原始语言版文件应视为权威来源。对于重要信息，建议使用专业人工翻译。我们对因使用本翻译而产生的任何误解或误释不承担责任。\n\u003C!-- CO-OP TRANSLATOR DISCLAIMER END -->",{"name":5,"license":14},"main","f09e94ffe170f8af6d3db7c42987bbe4db227723","translations\u002Fzh-CN\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents",26019,"https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners","https:\u002F\u002Faka.ms\u002Fai-agents-beginners","https:\u002F\u002Fgithub.com\u002Fmicrosoft","https:\u002F\u002Fopensource.microsoft.com","Open source projects and samples from Microsoft","2026-11-07 12:51:12",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents",{"tool":40,"command":41},"bunx","bunx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents",{"tool":43,"command":44},"pnpm","pnpm dlx skills add microsoft\u002Fai-agents-for-beginners --skill deploying-scalable-agents","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-CN\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",true,[],[49,67,78,86,94,99],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":64,"publishedAt":19},"01M69A206TRZ8KK0CW0HYJF5V5","testing-course-samples","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Ftesting-course-samples\u002FSKILL.md",[54,59],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":60,"categoryName":61,"taxonomyType":62,"taxonomyTypeDesc":63},"01JBSEEDCAT000000000000039","教师与教育","PROFESSION","适用职业",[65,66],"testing","testing course samples",{"skillNo":68,"name":69,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":75,"publishedAt":19},"01M69A1XRB2SFHYRMEH0K08EKZ","microsoft-docs","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fmicrosoft-docs\u002FSKILL.md",[72],{"categoryNo":73,"categoryName":74,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发",[76,8,77],"docs","microsoft docs",{"skillNo":79,"name":80,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":19},"01M69A1VPZFJQ1HNGTZQ5P3WSC","local-ai-agents","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Flocal-ai-agents\u002FSKILL.md",[],[84,85],"ai agents","local ai agents",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":19},"01M69A1S947N7MM6V9JF85S2E7","jupyter-notebook","當使用者要求建立、搭建或編輯 Jupyter 筆記本（`.ipynb`）用於實驗、探索或教學時使用；優先使用隨附範本並執行輔助腳本 `new_notebook.py` 來產生一個乾淨的起始筆記本。","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fjupyter-notebook\u002FSKILL.md",[],[93],"jupyter notebook",{"skillNo":95,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":19},"01M69A1Q8EXPWKZSQK69V6WF22","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fdeploying-scalable-agents\u002FSKILL.md",[],[18],{"skillNo":100,"name":101,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":104,"publishedAt":19},"01M69A1MHZTH3RH9N8VYSYG74X","azure-openai-to-responses","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fai-agents-for-beginners\u002Fblob\u002Fmain\u002Ftranslations\u002Fzh-TW\u002F.agents\u002Fskills\u002Fazure-openai-to-responses\u002FSKILL.md",[],[105],"azure openai to responses"]