从提示工程到代理工程:构建高效AI代理的策略框架概述

news2024/11/16 17:53:51

自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代理的设计和工程奠定了坚实而灵活的基础,为未来的发展提供了持续的支持和改进的可能。

https://avoid.overfit.cn/post/d8fc601394a04d3291c92b3e46fc8249

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1793391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

靠AI创意,我已经变现20w!

之前我一直在各个平台,分享各类的 AI 工具,但单纯地为了学而学,是没有任何意义的。 这些 AI 工具,学会了放着吃灰,那就太亏了! 最近在和粉丝聊的过程中,发现大家对 AI 副业还是挺感兴趣的。 …

「Qt Widget中文示例指南」如何实现一个简单的RHI小部件示例(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写,所有平台无差别运行,更提供了几乎所有开发过程中需要用到的工具。如今,Qt已被运用于超过70个行业、数千家企业,支持数百万设备及应用。 本文将为大家演示如…

重学java 52.Collections集合工具类、泛型

"我已不在地坛&#xff0c;地坛在我" —— 《想念地坛》 24.5.28 一、Collections集合工具类 1.概述:集合工具类 2.特点: a.构造私有 b.方法都是静态的 3.使用:类名直接调用 4.方法: static <T> boolean addAll(collection<? super T>c,T... el…

学习笔记——IP地址网络协议——网络掩码(Netmask)

三、网络掩码(Netmask) 1、网络掩码概述 网络掩码(Netmask)又称子网掩码(Subnet Mask)网络掩码为32 bit&#xff0c;与IP地址的位数一样&#xff0c;通常也以点分十进制数来表示。 子网掩码不能单独存在&#xff0c;它必须结合IP地址一起使用。子网掩码只有一个作用&#xf…

SpringBoot 单元测试 指定 环境

如上图所示&#xff0c;在配置窗口中添加--spring.profiles.activedev&#xff0c;就可以了。

创建采购订单免费行项目,注意事项

1.我在使用bapi&#xff08;BAPI_PO_CREATE1&#xff09;创建采购订单免费行项目的时候&#xff0c;还是报错了请输入净价格。 解决方式&#xff1a;把这些数据都赋值好&#xff0c;那么你的采购订单行项目就是免费项目。 BAPIMEPOITEM-IR_IND 空 &#xff08;发票收据标识&am…

【C语言】文件操作(终卷)

前言 我们在上一卷中了解了顺序读写的函数&#xff0c;现在就让我们从随机读写的函数开始吧。 什么是随机读写&#xff1f; 就是想在哪个位置读或写都行&#xff0c;比较自由。文件打开时光标默认在起始位置。想从后面的某个部分读或写&#xff0c;就得让文件指针来到那个位…

Linux系统Docker部署Apache Superset并实现远程访问详细流程

目录 前言 1. 使用Docker部署Apache Superset 1.1 第一步安装docker 、docker compose 1.2 克隆superset代码到本地并使用docker compose启动 2. 安装cpolar内网穿透&#xff0c;实现公网访问 3. 设置固定连接公网地址 前言 作者简介&#xff1a; 懒大王敲代码&#xff0…

【小工具】电磨机

BUSCH DREMEL3000 博世 琢美 技术规范

儿童护眼灯什么牌子好点?五款儿童护眼灯品牌推荐

儿童护眼灯什么牌子好点&#xff1f;根据往年的统计&#xff0c;我国青少年近视率位居世界第一&#xff0c;儿童青少年总体近视率达到了52.7%。其中&#xff0c;6岁儿童的近视率为14.5%&#xff0c;小学生为36.0%&#xff0c;初中生为71.6%&#xff0c;高中生为81%。造成近视的…

事务与锁的顺序不对导致并发的问题

错误使用锁和事务导致并发 在事务中添加锁来解决并发的问题&#xff0c;这并没有解决并发的问题。 Transactional Override public void execute(){try {lock.lock()// 开启锁// 查询出数据mapper.select();// 根据查询出数据计算并写入到数据库中mapper.udpate()} finally {…

Java 中的 Map 集合:入门篇

在 Java 编程中&#xff0c;Map 是用于存储键值对。它提供了快速的查找和检索功能&#xff0c;是处理大量数据的理想选择。 本文将深入介绍 Java 中的 Map 集合&#xff0c;包括其基本概念、常见实现类、典型用法以及一些常见问题的解决方案。 1. Map 的基本概念 Map 是一种键…

#01 Stable Diffusion基础入门:了解AI图像生成

文章目录 前言什么是Stable Diffusion?Stable Diffusion的工作原理如何使用Stable Diffusion?Stable Diffusion的应用场景结论 前言 在当今迅速发展的人工智能领域&#xff0c;AI图像生成技术以其独特的魅力吸引了广泛的关注。Stable Diffusion作为其中的一项前沿技术&#…

2. keepalived结合LVS配合使用

keepalived结合LVS配合使用 1、后端nfs存储提供项目文件2、后端nfs上集中安装MySQL&#xff0c;共用数据库3、业务服务器通过LNMP正常部署wordpress博客&#xff0c;客户端通过DNS解析可正常访问4、所有业务服务器上修改arp参数、配置VIP5、配置keepalived实现LVS高可用5.1 kee…

【大学物理】期末复习双语笔记

3 vectors and scalar 20 damped harmonic motion,forced harmonic motion, superposition of SHM damped harmonic motion underdamped motion:欠阻尼 critical damped零界阻尼 over damped过阻尼 energy of damped harmonic motion application of damped oscillation:减震器…

Python的super方法两种调用方式解析

Python由于具有多继承的特点&#xff0c;因此在使用super()方法的时候&#xff0c;需要考虑调用的是哪个父类的方法&#xff0c;这里面涉及到以下内容&#xff1a; 菱形继承(钻石集成)MRO&#xff08;method resolution order&#xff09; 下面的图像就是菱形继承。 抛开复…

Spring 中如何控制 Bean 的加载顺序?

如果你脱口而出说添加 Order 注解或者是实现 Ordered 接口&#xff0c;那么恭喜&#xff0c;你掉坑了。 一 Order 注解和 Ordered 接口 在 Spring 框架中&#xff0c;Order 是一个非常实用的元注解&#xff0c;它位于 spring-core 包下&#xff0c;主要用于控制某些特定上下文…

va_start和va_end使用介绍

一 概述 采用C语言编程的时候&#xff0c;函数中形式参数的数目通常是确定的&#xff0c;在调用时要依次给出与形式参数对应的所有实际参数。但在某些情况下希望函数的参数个数可以根据需要确定。典型的例子有大家熟悉的函数printf()、scanf()和系统调用execl()等。那么它们是怎…

【Docker】学习笔记(超万字图文整理)

前言 再此感谢黑马程序员提供的Docker课程&#xff01; 什么是Docker&#xff1f;看这一篇干货文章就够了&#xff01; UPD: 补充更新微服务集群、Docker镜像仓库部分内容 所有笔记、生活分享首发于个人博客 想要获得最佳的阅读体验&#xff08;无广告且清爽&#xff09;&#…

ai写作神器app有哪些?好用的智能写作APP推荐

ai写作神器app有哪些&#xff1f;AI写作神器app在现代写作领域正迅速崭露头角&#xff0c;它们不仅极大提升了创作效率&#xff0c;而且通过集成前沿的人工智能技术&#xff0c;为创作者们提供了前所未有的便利。这些app能够智能分析写作需求&#xff0c;快速生成高质量的内容&…