如何快速掌握MAF(18)中的Agent Skill技巧?

摘要:本文介绍了Agent Skill的基础概念 和 核心理念 - 渐进式披露,演示了一个.NET控制台应用实现Agent Skill的智能体案例,通过该案例可以了解如何在Microsoft Agent Framework框架下快速地实现Agen
大家好,我是Edison。 最近我一直在跟着圣杰的《.NET+AI智能体开发进阶》课程学习MAF开发多智能体工作流,我强烈推荐你也上车跟我一起出发! 上一篇,我们初步学习了AG-UI Tools 工具系统,实现了前端和后端工具混合未使用。本篇,我们来初步了解一下最近十分火热的Agent Skill并学习如何在MAF中实现Agent Skill的调用。 1 Agent Skill的基本概念 用一句简单的话来说的话,Agent Skill就是大模型随时翻阅的说明文档。 Skill 本质上是一个沉淀了自然语言描述 SOP 的 markdown 文件,能够避免重复性劳动,统一能力标准,实现高效且可复用的经验传递。 Skill 的核心是一个包含SKILL.md文件的文件夹,包含元数据以及指导 Agent 执行特定任务的指令。同时也可以包含文档资料、脚本、模板等文件。 skill/ ├── SKILL.md # 必需:指令 + 元数据 ├── scripts/ # 可选:可执行代码 ├── references/ # 可选:文档资料 └── assets/ # 可选:模板、资源文件 SKILL.md 大致长这样子: --- name: Skill名称 description: Skill描述 --- # Skill 名称 ## 何时使用此技能 ...... ## 如何 XXXX ...... ## 如何 YYYY ...... 设计理念:渐进式披露 顾名思义,渐进式披露就是不一次性加载所有信息,而是按需加载。 在 Agent 启动时仅加载 name 和 description 这种元数据信息,用于判断相关性。只有当某个 Skill 被激活时才加载完整 SKILL.md 正文,仅在需要时加载 scripts/references/assets 中的文件。 这种渐进式披露的架构大致分为如下图所示的三层: 第一层:元数据层,会固定加载到系统提示词当中。(~100 tokens) 第二层:指令层,当某个Skill被激活时才会被夹在,即按需加载。(一般<5000 tokens) 第三层:资源层,可能某个Skill还需要调用其依赖的参考文件、资源文件或者脚本文件,属于按需中的按需加载了。 下图展示了一个会议总结助手Skill被激活的实例: 可以看到,大模型通过用户的信息识别到需要启用会议总结助手这个Skill,因此从会议总结助手的SKILL.md中加载了具体的指导,又识别到需要再次加载一个财务规定的参考手册,将参考手册中的内容也一起加载到了提示词中一起发给大模型进行处理。 综上所述,我们可以知道在渐进式披露的架构下,Agent Skill的优点是: 大幅减少Token消耗:因为系统提示词中只会包含简短的技能列表元数据信息,避免了信息过载; 提高大模型处理效率:大模型只需要快速判断当前任务和哪些技能相关; MCP vs Agent Skill Agent Skill 和 MCP 并不是非此即彼,而是互为辅助的关系。 MCP 侧重 连接 Agent 和 数据,而 Agent Skill 则侧重于 指导 Agent 如何处理这些数据。 MCP Connects Agent to data, but Agent Skill teach Agent what to do with that data. 下图展示了 MCP 和 Agent Skill 的侧重点 和 本质,可以很好理解它们二者之间的关系: 总之,在 Agent 智能体的开发中,我们需要结合 MCP 和 Agent Skill 来使用开发一个高效的 Agent 智能体。 2 快速开始:MAF中使用 Agent Skill 假设有这样一个需求:有一个企业助手Agent,可以回答企业内部员工提出的关于费用报销 和 差旅申请 等相关的常见问题。 作为软件开发的我们,自然知道这是两个业务知识域了,因此我们计划将其规划为两个Skill供企业助手Agent按需加载调用。 以终为始,我们的Agent应用的解决方案长这样子:这是一个.NET控制台应用程序,其中有一个skills目录,专门存放各种业务知识Skill。 费用报销Skill 首先,我们创建一个SKILL.md,内容如下: --- name: expense-report description: 按照 Contoso 公司政策填写和审核员工费用报销。适用于费用报销、报销规则、收据要求、支出限额或费用类别等相关问题。
阅读全文