Agent作业指导书:Skills

这难道就是文档驱动编程?

Skill是什么

Skill是Agent模式中另一个重要的概念,它要解决的也是大语言模型能力的扩展问题。

每个Agent可以看做是一个具备某种专长的操作员,例如撰写代码、处理财务报表等。如果我有一个复杂的任务涉及到了多种领域知识,最直接的想法就是把任务拆解为多个领域专属子任务,然后派发给多个子Agent执行。这种模式也是当前人类组织如工厂、企业等生产活动中最常见的做法。

与子Agent不同,Skill在大语言模型能力扩展技术路径上采取了另一种思路。与其将各种专长能力封装为一个一个的Agent,不如将这些专长抽象提取成一个一个Skill,然后用一个通用的Agent,在遇到相关场景时,现场加载这些Skill,来解决复杂问题。如果有人还记得一部老电影“黑客帝国”,主角NEO在面对敌人时,现场下载了武术教程,然后淡定的讲出“I KNOW KONGFU!”,大概就是这个意思。

图片来自ANTHROPIC

Skill就像是厨师手里的菜谱、工厂流水线上的作业指导书、“笑傲江湖”中的“葵花宝典”,本质上,是“可以被大语言模型使用的知识”。

Skill长什么样

Anthropic在GitHub上开源了一部分Skill,你可以在这里找到:

GitHub - anthropics/skills: Public repository for Agent Skills
Public repository for Agent Skills. Contribute to anthropics/skills development by creating an account on GitHub.

pdf这个Skill为例。顾名思义,这个Skill提供了与PDF文件相关的一系列功能,包括文本与图片提取、OCR识别、PDF生成、加解密等等。这些能力本身是通过各种编译好的可执行程序或者Python库来实现的,例如pdftotext、pypdf。pdf这个Skill文件夹内存储的文件就两个类别:自然语言文本Markdown文件,Python脚本文件。在Markdown文件中,以自然语言的形式详细介绍了pdf技能所涉及到的这些程序与Python库的功能与具体的使用方法,例如下图

而Python脚本文件则是预先写好的、经过测试验证的较为复杂的一系列自定义PDF相关操作,可以当做是传统PDF工具功能上的进一步完善补充。当然,这些脚本文件的功能与使用方式,在Markdown文件中有着详细的介绍。

在形式上,Skill是工具、方法与使用方式的自然语言描述的一体化封装。

文档驱动编程

在这里,我想提出一种新的编程范式——文档驱动编程(Document Driven Programming)。书写Skill的过程,本质上就是一种技能(Skill)的文档化过程。有了这份说明,Agent就可以参照它实现某种特定功能。常规的编程,人类程序员直接书写计算机语言代码,然后由机器将其翻译成机器语言二进制代码。文档驱动编程,人类程序员使用自然语言书写技能操作指南,然后由Agent将其翻译成一系列可移执行的操作。两者本质上都是编程。或者说,Skill进一步将“编程”的概念范围扩大了,扩大到普通人都可以介入的程度。