安装方式
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add microsoft/azure-skills --skill microsoft-foundry 部署、评估、微调并端到端管理 Foundry 代理:Docker 构建、ACR 推送、托管/提示代理创建、容器启动、批量评估、持续评估、提示优化器、Agent Optimizer 脚手架、agent.yaml、从追踪数据中整理数据集、模型微调(SFT/DPO/RFT)。用途:部署代理、托管代理、创建代理、为代理添加工具、调用代理、评估代理、持续评估、持续监控、优化提示词、改进提示词、优化代理指令、部署模型、Foundry 项目、RBAC、角色分配、权限、配额、容量、区域、排查代理问题、部署失败、AI 服务、创建 Foundry 资源、预配、知识索引、代理监控、自定义部署、入职、可用性、微调、SFT、DPO、RFT、训练数据、评分器、蒸馏、微调模型、大文件上传。不适用于:Azure Functions、App Service、一般 Azure 部署(使用 azure-deploy)、一般 Azure 准备(使用 azure-prepare)。
301k
下载量
命令行安装
在项目根目录执行以下命令,完成 Skill 安装。
npx bzskills add microsoft/azure-skills --skill microsoft-foundry name: microsoft-foundry
description: 部署、评估、微调并端到端管理 Foundry 代理:Docker 构建、ACR 推送、托管/提示代理创建、容器启动、批量评估、持续评估、提示优化器、Agent Optimizer 脚手架、agent.yaml、从追踪数据中整理数据集、模型微调(SFT/DPO/RFT)。用途:部署代理、托管代理、创建代理、为代理添加工具、调用代理、评估代理、持续评估、持续监控、优化提示词、改进提示词、优化代理指令、部署模型、Foundry 项目、RBAC、角色分配、权限、配额、容量、区域、排查代理问题、部署失败、AI 服务、创建 Foundry 资源、预配、知识索引、代理监控、自定义部署、入职、可用性、微调、SFT、DPO、RFT、训练数据、评分器、蒸馏、微调模型、大文件上传。不适用于:Azure Functions、App Service、一般 Azure 部署(使用 azure-deploy)、一般 Azure 准备(使用 azure-prepare)。
license: MIT
metadata:
author: Microsoft
version: "1.1.23"此技能帮助开发者使用 Microsoft Foundry 资源,涵盖模型发现与部署、AI 代理的完整开发生命周期、评估工作流及故障排除。
必须:在执行任何工作流之前,必须先调用 Azure MCPfoundry工具,并检查可用的 Foundry MCP 工具及相关参数。 将此初始的foundry调用视为发现/帮助步骤。对于此技能,Azure MCPfoundry是 Foundry 相关 MCP 操作的必需入口点。
必须:在执行任何工作流特定步骤之前,必须阅读相应的子技能文档。 在没有阅读其技能文档的情况下,不要为某个工作流调用工作流特定的 MCP 工具。即使你已经知道 MCP 工具参数,此规则仍然适用——技能文档包含必须遵循的工作流步骤、前置检查和验证逻辑。此规则适用于每条触发不同工作流的新用户消息,即使该技能已加载。
此技能包含针对特定工作流的专门子技能。当这些子技能与你的任务匹配时,请使用它们代替主技能:
| 子技能 | 何时使用 | 参考 |
|---|---|---|
| deploy | 容器化、构建、推送到 ACR、创建/更新/克隆代理部署 | [deploy](foundry-agent/deploy/deploy.md) |
| invoke | 向代理发送消息,单轮或多轮对话 | [invoke](foundry-agent/invoke/invoke.md) |
| invocations-ws | 构建、部署并连接到使用 invocations_ws 双工 WebSocket 协议的托管代理——语音代理、实时流以及带外媒体传输的信令。 | [invocations-ws](foundry-agent/invocations-ws/invocations-ws.md) |
| observe | 评估代理质量、运行批量评估、分析失败、优化提示、改进代理指令、比较版本、设置 CI/CD 监控、启用持续生产评估 | [observe](foundry-agent/observe/observe.md) |
| trace | 查询跟踪、分析延迟/失败、通过 App Insights customEvents 将评估结果与特定响应关联 | [trace](foundry-agent/trace/trace.md) |
| troubleshoot | 查看托管代理日志、查询遥测、诊断失败 | [troubleshoot](foundry-agent/troubleshoot/troubleshoot.md) |
| create | 创建新的托管代理应用程序。支持 Microsoft Agent Framework、LangGraph 或 Python 或 C# 中的自定义框架,涵盖 responses、invocations 或 invocations_ws 协议。 | [create](foundry-agent/create/create-hosted.md) |
| agent-optimizer | 使现有的 Python 托管代理代码准备好优化,配置 eval.yaml,运行 Agent Optimizer 作业,本地应用候选方案,并在审查后通过 azd 部署。 | [agent-optimizer](foundry-agent/agent-optimizer/agent-optimizer.md) |
| eval-datasets | 将生产跟踪收集到评估数据集中,管理数据集版本和拆分,随时间跟踪评估指标,检测回归,并维护从跟踪到部署的完整谱系。用于:从跟踪创建数据集、数据集版本控制、评估趋势、回归检测、数据集比较、评估谱系。 | [eval-datasets](foundry-agent/eval-datasets/eval-datasets.md) |
| project/create | 创建用于托管代理和模型的新 Azure AI Foundry 项目。在初次使用 Foundry 或设置新基础设施时使用。 | [project/create/create-foundry-project.md](project/create/create-foundry-project.md) |
| resource/create | 使用 Azure CLI 创建 Azure AI Services 多服务资源(Foundry 资源)。在需要精细控制手动预配 AI Services 资源时使用。 | [resource/create/create-foundry-resource.md](resource/create/create-foundry-resource.md) |
| private-network | 回答有关 Foundry 网络隔离的问题,并部署具有 VNet 隔离(自带 VNet、托管 VNet、混合)的 Foundry。涵盖架构概念、模板选择、部署和部署后验证。 | [resource/private-network/private-network.md](resource/private-network/private-network.md) |
| models/deploy-model | 统一的模型部署,具有智能路由。处理快速预设部署、完全自定义部署(版本/SKU/容量/RAI)以及跨区域容量发现。路由到子技能:preset(快速部署)、customize(完全控制)、capacity(查找可用性)。 | [models/deploy-model/SKILL.md](models/deploy-model/SKILL.md) |
| quota | 管理 Microsoft Foundry 资源的配额和容量。在检查配额使用、排查因配额不足导致的部署失败、请求增加配额或规划容量时使用。 | [quota/quota.md](quota/quota.md) |
| rbac | 管理 Microsoft Foundry 资源的 RBAC 权限、角色分配、托管标识和服务主体。用于访问控制、审计权限和 CI/CD 设置。 | [rbac/rbac.md](rbac/rbac.md) |
| finetuning | 在 Azure AI Foundry 上微调模型——SFT 蒸馏、DPO 偏好优化、带有评分器和工具调用的 RFT。数据集准备、评分器校准、训练、检查点选择、部署、评估。用于:微调、SFT、DPO、RFT、训练数据、评分器、蒸馏、微调模型、大文件上传。 | [finetuning/SKILL.md](finetuning/SKILL.md) |
💡 提示: 完整的上手流程:project/create(公共)或private-network(VNet 隔离)→models/deploy-model→ 代理工作流(create→deploy→invoke)。
💡 微调: 使用 finetuning 进行所有模型定制——SFT 蒸馏、DPO 偏好优化以及带有评分器的 RFT。包括快速入门、评分器校准和训练曲线分析。💡 模型部署: 对所有部署场景使用 models/deploy-model——它会智能地在快速预设部署、完全控制的自定义部署以及跨区域容量发现之间进行路由。💡 提示优化: 对于“优化我的提示”或“改进我的代理指令”等请求,加载 [observe](foundry-agent/observe/observe.md) 并通过该评估驱动的工作流使用 prompt_optimize MCP 工具。将用户意图与正确的基础设施工作流匹配。
| 用户意图 | 工作流 |
|---|---|
| “创建 Foundry” / “设置 Foundry”(模糊) | 使用 AskUserQuestion:(a)仅 AI Services 资源,(b)具有公共访问权限的项目,或(c)具有网络隔离的项目?路由:(a)→ [resource/create](resource/create/create-foundry-resource.md),(b)→ [project/create](project/create/create-foundry-project.md),(c)→ [private-network](resource/private-network/private-network.md) |
| 设置具有 VNet 隔离的 Foundry | [private-network](resource/private-network/private-network.md) |
| 创建 Foundry 项目(公共) | [project/create](project/create/create-foundry-project.md) |
| 创建裸 Foundry 资源 | [resource/create](resource/create/create-foundry-resource.md) |
将用户意图与正确的代理工作流匹配。在执行前按顺序阅读每个子技能。
| 用户意图 | 工作流(按顺序阅读) |
|---|---|
| 从头创建新代理 | [create](foundry-agent/create/create-hosted.md) → [deploy](foundry-agent/deploy/deploy.md) → [invoke](foundry-agent/invoke/invoke.md) |
| 优化现有 Python 托管代理 | [agent-optimizer](foundry-agent/agent-optimizer/agent-optimizer.md) → 脚手架/审查 → eval.yaml → 优化 → 应用候选 → 部署 → invoke |
| 部署代理(代码已存在) | deploy(包括 eval-suite 设置)→ invoke → observe(评估/优化) |
| 代码更改后更新/重新部署代理 | deploy(包括 eval-suite 设置)→ invoke → observe(评估/优化) |
| 调用/测试/与代理聊天 | invoke |
| 优化/改进代理提示或指令 | observe(第 4 步:优化) |
| 评估和优化代理(完整循环) | observe |
| 启用持续评估监控 | observe(第 6 步:CI/CD 与监控) |
| 排查代理问题 | invoke → troubleshoot |
| 修复损坏的代理(故障排除 + 重新部署) | invoke → troubleshoot → 应用修复 → deploy → invoke |
每个代理源文件夹可以在 .foundry/ 下保留 Foundry 特定的缓存和覆盖状态:
<agent-root>/
.foundry/
agent-metadata.yaml
agent-metadata.prod.yaml
suites/
datasets/
evaluators/
results/
azure.yaml 加上 azd env get-values 推导部署上下文(项目端点、代理名称/版本、ACR、App Insights);当 azd 已提供这些值时,不要在元数据中重复这些值。agent-metadata.yaml 是首选的本地/开发覆盖文件,用于非 azd 值、远程 Foundry 套件引用、本地缓存路径、结果摘要和显式覆盖。可选的 sidecar 文件(如 agent-metadata.prod.yaml)可以保存单个生产或 CI 目标的覆盖,无需在一个文件中混合多个环境。suites/、datasets/ 和 evaluators/ 是本地缓存文件夹。当它们最新时重用它们,在刷新或覆盖之前询问。代理技能应仅在需要它们尚未拥有的配置值时运行此步骤。如果值(例如,代理根目录、环境、项目端点或代理名称)已从用户消息或同一会话中的先前技能获知,则跳过对该值的解析。
首先检查工作区是否存在包含使用 host: azure.ai.agent 的服务的 azure.yaml。
project 文件夹作为代理根目录。agent-metadata.yaml 或 agent-metadata.<env>.yaml 的 .foundry/ 文件夹。.foundry/ 文件夹;对于所有其他工作流,停止并询问用户要初始化哪个代理源文件夹。选择代理根目录后,将所有本地 .foundry 缓存检查、源检查、评估器建议、数据集建议和提示优化上下文保留在该文件夹内。除非用户显式切换根目录,否则不要扫描同级代理文件夹。
如果存在 azure.yaml,首先解析 azd 环境:
azd env get-values 的 AZURE_ENV_NAME.azure/config.json 的 azd 默认环境当项目/部署值尚不知道时,为所选环境运行 azd env get-values。优先使用 azd 值用于部署上下文:
| azd 变量 | 解析为 |
|---|---|
AZURE_AI_PROJECT_ENDPOINT 或 AZURE_AIPROJECT_ENDPOINT | 项目端点 |
AGENT_<SERVICE>_NAME | 所选 azd 服务的代理名称 |
AGENT_<SERVICE>_VERSION | 所选 azd 服务的代理版本 |
AZURE_CONTAINER_REGISTRY_NAME 或 AZURE_CONTAINER_REGISTRY_ENDPOINT | ACR 注册表名称 / 镜像 URL 前缀 |
APPLICATIONINSIGHTS_CONNECTION_STRING | 用于跟踪工作流的 App Insights 连接字符串 |
AZURE_SUBSCRIPTION_ID、AZURE_RESOURCE_GROUP、AZURE_AI_ACCOUNT_NAME、AZURE_AI_PROJECT_NAME | Azure 资源查找和 Playground 链接 |
当 azd 提供这些值时,将它们用作事实来源,并且在元数据写入时不要将它们复制到 .foundry/agent-metadata*.yaml 中。
在选定的代理根目录内,按以下顺序选择元数据文件:
.foundry/agent-metadata.<env>.yaml 存在,则使用该文件.foundry/agent-metadata.yaml读取所选元数据文件,并按以下顺序解析任何剩余的环境选择:
defaultEnvironment如果所选元数据文件仍包含多个环境,且上述规则均未选择一个,则提示用户选择。在每个工作流摘要中保持可见所选代理根目录、元数据文件、环境以及上下文来自 azd 还是元数据。
如果所选环境公开旧的 testSuites[] 元数据而非 evaluationSuites[],则将 testSuites[] 视为本次会话的来源,并将每个条目在内存中规范化为 evaluationSuites[] 形状后再继续。如果元数据更旧,仅公开旧的 testCases[],则以相同方式规范化该列表。保留数据集和评估器字段,保留任何现有的 tags,并且仅在 tags.tier 缺失时,将旧的 priority 映射到 tags.tier:P0 -> smoke,P1 -> regression,P2 -> coverage。
如果在所选代理根目录中存在 eval.yaml,则在生成新套件之前解析它:
agent.name -> 目标代理候选;验证它是否与所选 azd/元数据代理匹配后再使用。dataset_file -> 本地种子数据集候选。evaluators[] -> 候选 Foundry 评估器名称;使用 evaluator_catalog_get 验证后再将其视为远程评估器。name -> 本地评估/套件候选;远程验证后再作为 suiteName 持久化。options.eval_model、options.pass_threshold、max_samples、trace_days 和 generation_instruction -> 设置默认值。将 eval.yaml 视为本地评估意图,而不是 Foundry 套件存在的证明。仅当远程查找或注册成功后,才将同步的套件/数据集/评估器引用持久化到 .foundry。
按此顺序分层来源:
.foundry/agent-metadata*.yaml 覆盖值和远程套件/缓存引用agent.yaml 和 eval.yaml 本地源代码配置如果 azd 和元数据都提供相同的值但不同,则停止并询问哪个来源是权威的。如果它们匹配,则使用 azd 值,并避免在将来的元数据写入时重写重复项。
| 有效值 | 首选来源 | 被用于 |
|---|---|---|
| 项目端点 | azd env | deploy, invoke, observe, trace, troubleshoot |
| 代理名称/版本 | azd 代理变量,然后是 agent.yaml | invoke, observe, trace, troubleshoot |
| ACR | azd env | deploy |
| 评估套件和缓存路径 | .foundry/agent-metadata*.yaml | observe, eval-datasets |
| 本地种子数据集/评估器意图 | eval.yaml | observe, eval-datasets |
在任何元数据写入(部署、自动设置、数据集刷新或跟踪到数据集更新)时,仅在所选元数据文件中持久化不可推导的覆盖/缓存状态:
azd.environmentName、azd.service)当对未来解析有用时evaluationSuites[] 包含远程套件/数据集/评估器引用和本地缓存路径lastEval、结果文件、比较摘要或显式非 azd 覆盖当 azd 已提供时,不要将 azd 拥有的部署值复制到元数据中。如果所选文件是首选单环境文件,仅重写该一个环境块。如果所选文件是旧的多环境文件,仅重写所选环境块。切勿自动将环境跨同级元数据文件复制或合并。如果所选环境仍使用旧的 testSuites[] 或旧的 testCases[],将其重写为 evaluationSuites[] 并从重写的条目中移除已迁移的 priority 字段。
仅对从用户消息、会话上下文、元数据或 azd 引导中未解析的值使用 ask_user 或 askQuestions 工具。技能可能需要的常见值:
.foundry/agent-metadata*.yaml 的文件夹agent-metadata.yaml,或显式的 sidecar 如 agent-metadata.prod.yamldev、prod 或来自元数据的其他环境键💡 提示: 如果用户已提供代理路径、环境、项目端点或代理名称,直接提取——不要再次询问。
所有代理技能支持两种代理类型:
| 类型 | 种类 | 描述 |
|---|---|---|
| Prompt | "prompt" | 基于 LLM 的代理,由模型部署支持 |
| Hosted | "hosted" | 基于容器的代理,运行自定义代码 |
必要时使用 agent_get MCP 工具确定代理的类型。
ask_user 或 askQuestions 工具task 或 runSubagent 工具委托长时间运行或独立的子任务(例如,环境变量扫描、状态轮询、Dockerfile 生成)