自ChatGPT推出以来,仅仅一年多的时间里,公众对于“人工智能”(AI)的认识已经发生了根本性的变化。这种变化部分源于公众意识的提高,更多则是基于这样一个认识:AI驱动的系统不仅可能,而且可能已经具备了与人类相当的能力和表现。ChatGPT不仅是AI能力的一个验证,更是半个多世纪以来AI研究成果的集中展示,向我们展示了一个可能的未来:按照Ray Kurzweil的定义,我们可以创造“执行需要智能的功能的机器”。因此,围绕AI代理的讨论和开发在近几个月里迅速增加。AI代理体现了人工智能长期以来的追求目标。
AI代理的概念虽然不新,但却始终充满吸引力。从星球大战中的C-3PO到学术界的定义,智能代理一直是AI的核心议题。随着ChatGPT、Claude和Gemini等模型的出现,这些模型在多样的知识领域都展现出强大的理解力和对话能力,AI代理的概念变得越发具体和实现可能。新增的“视觉”能力和函数调用功能,更是为AI代理的发展提供了新的可能性。
在AI代理的发展道路上,我们需要从单纯的提示工程过渡到更广泛的代理工程,并建立相应的框架、方法和思维模式,以便有效地设计和实施这些代理。本文旨在探讨LLM环境中代理工程的关键理念和原则。
我们首先定义“代理能力需求”,明确代理所需执行的功能及其所需的熟练程度。随后,在“代理工程与设计”阶段将评估可用的技术,探讨如何构建和协调代理的结构。
本框架旨在提供一个实用的思维模型,虽不全面,但足以作为一个起点,随后可根据实际需要进行细化和扩展。
代理工程框架
构建AI代理的初衷是什么?它需要完成哪些工作,实现哪些目标?在多能力代理与多代理集群之间,哪一种更适合特定的任务?人类语言的灵活性让我们能够在多个维度上扩展和深化这些概念,但这也可能导致概念上的模糊。在本框架中,我们尝试避免过度解析术语的语义差异,更注重概念的通用性和实用性。核心理念如下:
- 代理需完成特定工作。
- 完成工作需采取具体行动。
- 行动的执行依赖于代理的能力。
- 能力必须达到一定的熟练度。
- 达到此熟练度需要相应的技术和技术协调。
能力需求与设计
设计AI代理的第一步是明确代理的职责和目标。这可能是一个高层次的目标,也可以细化为具体的任务。例如,电子商务聊天机器人可能需要处理客户咨询、分析客户行为并提供产品推荐;内容创作代理可能需要生成内容想法、起草文章或博客。
定义了任务后,接下来确定代理执行这些任务所需的具体行动。这不仅仅是定义目标,更重要的是具体化实现目标的行动步骤。此阶段也需考虑代理的自主性。例如,内容创作代理的行动可能包括调用数据分析代理获取趋势洞察、根据趋势和受众偏好生成内容想法、起草和修订文章。
所需能力的具体化
现在我们已经概述了代理执行工作所需要采取的行动,所以这些行动需要代理有不同的专业能力,比如说自然语言对话、信息检索、内容生成、数据分析、持续学习等等。它们也可以在更技术层面上表达,例如API调用、函数调用等。例如,对于内容创建代理,所需的能力可能包括:
- 动态调用内容趋势代理的API。
- 头脑风暴和总结能力。
- 根据当前话题和趋势生成合适语调的内容。
- 根据人类提供的编辑指令进行操作。
- 记忆
选择实现这些能力的技术时,应避免限制技术选项,以确保能够灵活适应未来的技术发展。例如,尽管当前大型语言模型(LLM)备受青睐,但其他如大型行动模型(LAM)的发展可能为实现所需能力提供新的可能性。
能力和熟练度
确认代理需要的能力后,评估并定义每种能力所需的具体熟练度是至关重要的。这包括设定性能基准,如准确性、效率和可靠性等。
例如,对于我们的内容创建代理,所需的熟练度水平可能包括:
- 功能调用的可靠性为75%。
- 功能调用失败的解释性为99.99%。
- 第一次尝试时,内容趋势代理的功能调用至少75%的时间能够产生相关主题。
- 生成的内容想法在75%的时间内能够产生理想的主题。
- 精确信息检索的精度率为99.99%。
- 用户反馈满意度在90%或更高的编辑生成。
- 最终草案的用户反馈满意度为90%或更高。
代理工程与设计
在明确了所需能力及其熟练度后,接下来的步骤是确定如何通过现有技术和方法满足这些要求。这涉及评估广泛的技术和方法,如LLM、信息检索增强生成(RAG)、专门的API以及其他机器学习和人工智能模型,以确定它们是否能达到所需的熟练度。
在此过程中,重要的是考虑每项技术或方法的优势和成本效益,以及它们在实现具体能力方面的适用性。
广泛知识熟练度
广泛知识是指跨广泛主题和领域的一般理解和信息。这种类型的知识对于创建能够有效进行对话、理解上下文并在各种主题上提供相关响应的AI代理至关重要。
- LLMs — 如果你的代理的能力需要广泛的知识熟练度,好消息是LLM的开发仍在持续不断。从LlaMA3等开源模型到OpenAI、Anthropic和Google的最新专有模型,有不少技术可以在如此广泛的人类语言和知识范围内提供高密度的连贯性。
- 提示工程 — 这个动态且非常活跃的发展领域主要关注如何激活由LLMs建模的上下文适当的知识领域。由于语言的万花筒特质,掌握这门艺术可以显著提高我们代理的能力熟练度水平。
特定知识熟练度
特定知识涉及对特定领域或主题的更深入理解。在追求我们的熟练度目标时,可能会考虑哪些技术/技术?
- 检索增强生成(RAG) — RAG结合了LLMs的生成能力和信息检索系统,以便从外部来源合并信息。这可能是精确信息或特定知识(例如,一种独特方法的描述),LLM能够在上下文中“理解”它,因为它具有广泛的知识熟练度。
- 模型微调 — 在特定上下文数据集上微调LLMs,使模型能够在特定设置中生成更具上下文相关性的响应。虽然不如RAG流行,但随着代理工程继续获得关注,我们可能会发现熟练度要求促使我们更频繁地转向这种技术。
精确信息
精确信息是指对需要准确答案的任务至关重要的高度准确和具体的数据点。
- 函数调用(又名工具使用) — 无可争议的具体事实产生幻觉是AI代理的一个主要问题,所以我们可以使用函数调用来检索特定信息。例如,电子商务代理可能使用定价API提供最新的产品价格,或者使用股票市场API提供股票价值的实时更新。
- Guardrails — Guardrails可以帮助确保代理在其响应中提供精确和准确的信息。这可以涉及基于规则的约束、有导向的对话设计和意图预处理。
代理的拆解和协调
在明确了代理的任务、所需能力及技术后,下一步是设计和协调代理的具体结构。这可能涉及将多个技术和方法整合在一起,以构建一个能够独立或在更广泛系统中协同工作的AI代理。这包括考虑如何将不同能力分配给一个或多个代理,以及如何开发可以轻松重新配置和适应新任务的代理结构。这个话题本身就涉及多篇文章,所以我们不会在这里深入讨论。
总结
从提示工程到代理工程的转变才刚刚开始,未来的路还很长。本文提出的代理工程框架只是一个起点,旨在提供一个实用的设计思路,帮助我们在AI代理的开发和实现上取得进展。随着技术的发展和新方法的出现,构建AI代理的模型和技术将不断增多,这要求我们建立能够适应各种技术的通用框架。通过明确定义代理的任务、行动和所需能力,我们为AI代理的设计和工程奠定了坚实而灵活的基础,为未来的发展提供了持续的支持和改进的可能。