llm大模型、agent智能体、Agent Skills介绍和编写规范

97 阅读5分钟

大模型和Agent之间的关系

看了很多文章介绍一些关于大模型的技术,像mcp server 、function call、agent、skills、RAG 等技术,都是基于大模型来介绍的,那么到底这些技术之间有关系呢?

经过学习理解得到的结论:

大模型 实际只有3种核心能力:输入,输出 和触发工具(tool)function call。

剩下的都是我们围绕大模型开发出来的技术,这些技术都是围绕着agent去设计的。agent的设计就是让我们调用大模型更方便,更准确。

我们可以去看一些大模型的对接文档就一目了然了,以阿里云的大模型为例:

image.png

看阿里云大模型文档截图,如果我们直接调用大模型,必填参数实际只有这些,并没有看到 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"
---

a53901d504a4b1ae991c16df0e269db4.png

如果您安装了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