大模型和Agent之间的关系
看了很多文章介绍一些关于大模型的技术,像mcp server 、function call、agent、skills、RAG 等技术,都是基于大模型来介绍的,那么到底这些技术之间有关系呢?
经过学习理解得到的结论:
大模型 实际只有3种核心能力:输入,输出 和触发工具(tool)function call。
剩下的都是我们围绕大模型开发出来的技术,这些技术都是围绕着agent去设计的。agent的设计就是让我们调用大模型更方便,更准确。
我们可以去看一些大模型的对接文档就一目了然了,以阿里云的大模型为例:
看阿里云大模型文档截图,如果我们直接调用大模型,必填参数实际只有这些,并没有看到 mcp server ,Skills 等这类参数。所以这些都是基于agent设计出来的技术,并不是大模型自带的技能。
如果想学习大模型应用开发,重点应放在学习Agent开发上,这样我们就能不必过多关注大模型底层的调用,而是专注于代码逻辑。就像在传统编程中,掌握了基础后,我们往往使用框架(如Spring Boot、FastAPI、ThinkPHP等)来提高开发效率,更专注于业务逻辑。同理,在大模型开发中,围绕Agent学习能帮助我们更高效地进行应用开发。如果想深入研究基础模型、大模型的训练等技术,那就需要脱离Agent,深入学习大模型的原理与架构。
什么是智能体技能Skills?
代理技能是一种轻量级、开放的格式,用于通过专业知识和工作流扩展AI代理的能力。
从本质上讲,技能是一个包含 SKILL.md 文件的文件夹。该文件包括元数据(至少包括名称和描述)以及指令,告诉代理如何执行特定任务。技能还可以捆绑脚本、模板和参考材料。
白话文:就是一个按需加载的提示词文件或者执行某些任务。
skills文件目录结构:
my-skill/
├── SKILL.md # 必须:包含说明和元数据
├── scripts/ # 可选:可执行代码
├── references/ # 可选:文档
└── assets/ # 可选:模板、资源
技能的工作原理
技能通过逐步披露来有效管理上下文:
发现:在启动时,代理只加载每个可用技能的名称和描述,足够了解何时可能相关。
激活:当任务与技能的描述匹配时,代理将完整的 SKILL.md 说明加载到上下文中。
执行:代理按照说明执行操作,必要时可以加载引用的文件或执行打包的代码。
这种方法保持代理的快速响应,同时根据需要提供更多的上下文信息。
SKILL.md 文件
每个技能都以一个包含 YAML 前置数据和 Markdown 说明的 SKILL.md 文件开始:
SKILL.md示例
---
name: pdf-处理
description: 从 PDF 文件中提取文本和表格,填写表单,合并文档。
---
# PDF 处理
## 何时使用此技能
当用户需要处理 PDF 文件时,使用此技能...
## 如何提取文本
1. 使用 pdfplumber 提取文本...
## 如何填写表单
...
示例格式解释:
name:一个简短的标识符
description:说明何时使用此技能
Markdown 体部分包含实际的说明内容,对结构或内容没有具体的限制。
这种简单的格式有一些关键的优势:
自文档化:技能的作者或用户可以阅读 SKILL.md 文件并理解它的功能,使得技能容易审计和改进。
可扩展性:技能的复杂度可以从单纯的文本说明到可执行的代码、资产和模板不等。
可移植性:技能就是文件,因此它们容易编辑、版本控制和共享。
目录结构 一个技能是一个包含至少一个 SKILL.md 文件的目录:
skill-name/
└── SKILL.md # 必须要
SKILL.md 格式
SKILL.md 文件必须包含 YAML 前置数据,后跟 Markdown 内容。
前置数据(必填)
---
name: skill-name
description: 该技能的描述以及何时使用此技能。
---
可选字段:
---
name: pdf-processing
description: 提取 PDF 文件中的文本和表格,填写表单,合并文档。
license: Apache-2.0
metadata:
author: example-org
version: "1.0"
---
如果您安装了skills-ref工具,可以验证Skill:
安装 skills-ref:
如果它是通过 Python 包管理工具发布的,您可以使用 pip 来安装(请确保已安装 Python 和 pip):
pip install skills-ref
验证:
skills-ref validate ./my-skill
集成技能的两种主要方法是:
基于文件系统的代理
这类代理在计算机环境(如 bash/unix)中运行,是功能最强大的选项。技能在模型发出类似 cat /path/to/my-skill/SKILL.md 的 shell 命令时被激活。捆绑的资源可以通过 shell 命令进行访问。
基于工具的代理
这类代理不依赖专用的计算机环境,而是实现了允许模型触发技能并访问捆绑资产的工具。具体的工具实现由开发者决定。
技能发现
技能是包含 SKILL.md 文件的文件夹。您的代理应该扫描配置的目录以查找有效的技能。
注入上下文
例如:
<available_skills>
<skill>
<name>pdf-processing</name>
<description>从 PDF 文件中提取文本和表格,填写表单,合并文档。</description>
<location>/path/to/skills/pdf-processing/SKILL.md</location>
</skill>
<skill>
<name>data-analysis</name>
<description>分析数据集,生成图表,创建总结报告。</description>
<location>/path/to/skills/data-analysis/SKILL.md</location>
</skill>
</available_skills>
具体的Skills官方文档可参考:agentskills.io/home