AI Agent规划能力全面拆解

“规划今天和每天的工作,然后执行规划” 

-- 撒切尔夫人 

规划,无论对于人类还是智能体而言,本质上是一种预先设定行动的过程,以期望通过这些行动达到特定的目标或解决特定的问题。制定一个好的规划涉及对未来情景的预测、资源的分配、步骤的排序以及对可能出现的挑战的预备应对等诸多因素。

 在智能体领域,规划决定了智能体如何自主地在复杂环境中进行操作。智能体通过目标理解与工作流自动化技术,精准地识别和解析复杂的业务目标,自动生成定制化的工作流程,甚至预测并建议潜在的优化方案。 

本文详细探讨了智能体规划模块的核心要素,包括长短期规划策略规划输出格式反馈与迭代机制,以及用户任务扩展解释优化等。文中还综合比较了当前一些热门智能体项目在这些关键方面的相似性与差异性。

智能体规划简短历史回顾


“Let's think step by step”  

--《LLMs are Zero-Shot Reasoners》

《思考,快与慢》是2002年诺贝尔经济学奖得主Daniel Kahneman 于2011年出版的畅销书,在书中提出了人类两种不同的思维方式:快思考慢思考。快思考是一种自动化运作的思考模式,通常不受严格的自主控制,是人类下意识的反应。慢思考则是需要注意力和认知资源,用于处理复杂的问题和做出决策时的逻辑推理。虽然快慢思考最初是用来描述人类的认知过程,但这一理论也被应用于AI领域。

 在AI领域,大模型自回归式的文本生成能力与人类的快速思考模式颇为相似。这类模型依赖于从训练数据中获取的文本关系经验,以生成与上下文最为吻合的文本。这种方法在文本生成过程中表现出高效性,类似于人类在熟悉环境中的直觉反应。然而,这种快思考的方式让大模型在处理需要细致推理的复杂场景时面临挑战。在这种情况下,推理过程通常不能一蹴而就,而是需要通过多个逻辑步骤逐步构建,最终得出答案。 

在2022年1月,基于提示的大模型思维链在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models》中被提出,让大模型通过生成一系列的中间推理步骤来提高其解决复杂问题的能力,能够越级打怪。随后,围绕思维链的研究迅速兴起,诞生了多种变种,如CoT-SC、ToT、GoT等。这些变体通常通过增加思维路径的复杂度,以更多的Token消耗为代价,提高了推理路径的准确性,从而有效地提升了大模型解决问题的能力

与此同时,大模型与工具的交互也开始受到关注中。2021年12月,OpenAI发布了基于GPT-3的微调模型WebGPT,特别强调了模型与Web浏览器交互的能力。通过让模型编写指令,例如“搜索……”、“在页面中查找……”、“引用:……”等指令,WebGPT拥有了使用Web浏览器的能力,并通过观察搜索的结果生成对应的输出。这个项目标志着大模型在工具使用方面的一次重要尝试,涵盖了从单个步骤的工具使用到结果观察等多个方面。 

图片

不同种类思维链结构示意图

人们很快发现大模型指令生成和思维链能够很好地结合,让模型能够与虚拟或现实环境交互。其中的典型代表是2022年8月发布的PaLM-SayCan以及2022年Google Brain发布的ReACT结构,其中的主要思想是根据中间步骤的状态来选择最合适的工具并使用。以Saycan为例子,机器(大模型)接收到人类的提示之后,将其转化成对应任务,随后结合可选行动(类似于工具使用)的相关性以及可执行性选择最佳行动并执行,在新状态环境下重复这个过程直到人物完成。ReACT的推理方式类似,通过ThoughtAction(以及Action Input),Observation三个步骤的循环执行最终达到Conclusion。这些是早期智能体项目的形态,通常基于短期的动态规划方式来完成思维推理。

在2023年大语言模型应用开始兴起之后,人们看到了大模型的潜力,开始更多地思考大模型应用以及落地方法。早期的智能体项目难以直接使用,缺乏鲁棒性,过于依赖模型自身能力。由此,复杂的智能体系统随之出现,例如CAMEL、MetaGPT、AutoGen、HuggingGPT、AGENTS、ChatDev、XAgent等,这些项目从不同角度提出智能体系统规划模块的改进建议,其中包括长短期规划、规划输出格式、用户提示拓展解释、反馈迭代机制等,接下来我们将从以上维度一同探讨智能体的规划模式:

战略与战术?智能体的长期与短期规划


“最漫长的迂回道路,常常又是达到目的的最短途径“  

-- 利德尔·哈特 

在军事和商业领域,战术和战略所指的都是以目标为导向的计划,但战术通常指为达到具体目标而采取的具体行动与决策,关注的是局部目标的达成,而战略是指为实现长期目标而制定的总体计划方针。战术更加注重于快速做出短期的计划,并且具有较强的灵活性与适应性,战略相比之下是一个更为慎重的长期计划,相比于战术根据环境变化而产生的变动较少。战术和战略的概念同样可以用于智能体规划方式的解释当中,其中战术制定类似于智能体的短期规划模式,战略制定类似于智能体的长期规划模式

战术制定:短期规划


短期规划方法,依托于实时反馈的行动,强调当前环境条件和智能体自身状态对即将采取步骤的决策产生的直接和关键影响。这种规划策略类似于战术制定,为智能体提供了更高的适应性和自由度,使其能够更加灵活地判断和利用各种工具。在早期的智能体研究中,研究者们正试图揭示大型模型的潜能和极限,对大模型的规划能力抱有积极的期望。因此,很多早期的项目以及当前阶段的多智能体协作项目常常采用短期规划方法。这种探索性的研究途径通常更侧重于方法论的创新和理论发展,而不是即时的实用性或商业应用。其中一些典型的项目包括:


AutoGPT(let an LLM decide what to do over and over); 

CAMEL(At the next time step,  the AI user takes the historical conversation message set and provides a new instruction); 

MetaGPT(_observe, _think, _act);

AgentVerse(Expert Recruitment + Collaborative Decision_ Making:Engage the selected agents in joint discussions to devise problem-solving strategies.); 

XAgent(Inner_Cycle): (Given a subtask an appropriate ToolAgent is designated ...... The agent employs ReACT for subtask solving; 

ProAgent(Instead of directly outputting a plan, the Planner module makes the final decision step by step)


其中有些项目,例如AgentVerse,采用了“专家招募“的方法作为关键工具选择策略,侧重于从众多可用工具中挑选出最适合当前环境和任务的工具,主要通过专家间的讨论确定最合适的工具,或者依据最能适应当前环境的专家的建议来解决手头的任务。专家招募方法的核心思想在于,通过精准地挑选针对特定步骤任务有效的工具,从而使智能体更加高效地适应并解决局部问题。这种方法实际上是一种战术层面的优化手段,旨在通过恰当的工具选择提高智能体的适应性和效率。关于专家招募方法的更深入解释和应用,将在未来的文章中详细阐述。

战略制定:长期规划


在智能体向实际场景落地的进程中,长期规划逐渐受到重视。这种规划方式相对复杂,需要在行动开始前制定详细的步骤清单,这有助于人工参与流程的制定、优化和修改。在复旦大学和米哈游公司联合撰写的智能体综述《The Rise and Potential of Large Language Model Based Agents: A Survey》中,提到某些智能体项目更提倡这种一次性全面地分解宏观目标,并根据预先制定的计划顺序执行的方法。在制定长期计划的过程中,需要考虑宏观目标、环境状态、智能体自身状态、可用工具以及可用资源等多种因素,以确保计划的全面性和可行性。长期规划方法提供了一种更为系统和全面的规划框架,有助于智能体在复杂环境中有效地实现目标,其中的典型项目包括:

BabyAGI (Task List:it creates tasks based on the result of previous tasks and a predefined objective.); 

HuggingGPT(we use ChatGPT to conduct task planning when receiving a user request); 

AGENTS(allows users to provide fine-grained control and guidance to language agents via an SOP (Standard Operation Process). An SOP defines subgoals/subtasks for the overall task.); 

ChatDev(ChatChainConfig.json, which controls the overall development process of ChatDev, including which Phase each step is, how many times each Phase needs to be cycled, whether reflect is needed, etc.); 

XAgent(Outer_Cycle):(The PlanAgent first generates an initial plan, which lays down a basic strategy for task execution. )

智能体计中计:长短期规划结合


长期规划和短期规划并不是互斥的概念,相反两者间可以结合,在宏观目标的达成上使用长期规划方式,在局部任务的解决中使用短期规划能力。其中,今年9月发布的XAgent智能体项目使用的”内外循环机制”(Dual-loop mechanism)就是一种长期规划和短期规划结合的方式。外环是长期规划,使用PlanAgent来根据情况来定制生成初始的行动计划, 计划可以在后续行动的过程中进行调整。内环是短期规划,先使用外部系统检索可用的工具,再使用ReACT来解决子任务。这种战术与战略的互补让智能体能够在不同环境中更加高效和适应性强。XAgent智能体通过这种内外循环机制,能够在面对复杂和变化多端的任务时,维持其目标的连贯性和方向性,同时也能够响应即时情况和挑战。 

图片

XAgent内外双循环机制结构图

何为规划?智能体规划方式分类


“每一种情况都有适合于它的一个特殊的战略”  

-- 安德烈·博弗尔 

结构化规划方式


智能体的行动计划可以被结构化地输出,其中,这些计划通常以清晰的步骤和序列展现,并被存储在某种规范化的数据格式中,这种结构化的规划方式对智能体理解和执行任务至关重要。因为每个步骤都设定了明确的目标和预期结果,通过结构化的格式,智能体能够清晰地识别每个中间步骤的状态,从而作出更准确的判断。这种方式也便于对智能体的行动进行监控和评估,以便根据环境变化及时调整计划。目前,智能体项目的结构化规划输出已采用多种模式,其中JSON文件格式应用最为广泛。例如,ChatDev中的流程规划使用了ChatChainConfig.json文件来控制整体的开发流程,涵盖了循环次数、长期规划的调整等方面。

智能体还能生成更加复杂的规划,通过思维链或专用智能体的方式逐步构建,而非一次性完成规划制定。这样的方法能够更加稳定和有效地生成长期规划的工作流程。AGENTS项目就是一个典型的例子,其中智能体利用模型生成或人工生成的SOP进行规划,定义任务的子任务,并允许用户为智能体定制细粒度的工作流程。AGENTS的SOP采用图状的计划列表,每个子任务包含特定的状态,状态中包含提示、工具组件、状态描述和状态间的关系。这使智能体能够根据当前状态适应相应的任务,改变文本生成方式及可调用的功能。

图片

AGENTS智能体结构图

在智能体规划的后续实施中,还可以加入可视化功能,使行动计划更易于人类理解、修改和优化。工程层面上,可以开发低代码平台来编排智能体的规划,让非专业人员也能精准操控智能体,不仅能增强了智能体规划的可用性,还拓宽了其在各领域的应用范围。

非结构化规划方式


基于大模型的自然语言理解能力,出现了大模型特有的基于自然语言的非结构化规划方法,计划可以用一段自然语言文本来描述,并且提供给智能体作为行动的依据。这类非结构化的规划方式易于编写,不需要复杂的结构,更适用于那些不需要严格步骤划分的任务,或者在变化多端的环境中需要快速做出决策的情况。然而,非结构化规划可能不如结构化规划那样易于监控和评估,因为其步骤和目标可能不够明确。

规划的反馈与优化


“规划很少保持不变,并且会根据需要废弃或调整。对愿景要固执,但对规划要灵活。” 

-- 约翰·麦克斯韦 

随着计划的推进,智能体有时会遇到意料之外的行动结果,此时需要根据结果来对后续步骤进行优化。在这个过程中,智能体首先需要能明确地判断行动执行是否成功,然后再提出潜在的反馈建议。在这种反馈一般来自三个方面:1)借助内部反馈机制;2)与人类互动获得反馈;3)从环境中获得反馈。 

短期规划智能体的反馈优化方式是基于更新状态与最终目标间的差距而进行的。举例来说,AgentVerse项目中包括了EvalutionReward Feedback的部分,Evalution的过程中,行动后环境的新状态将会与目标进行对比, 评估当前状态和期望结果之间的差异,如果对状态不满意,则反馈给下一次迭代以进一步细化。这是一种经典的短期规划方式反馈优化的方式。 

图片

AgentVerse智能体结构图

而长期规划中,智能体在行动开始前生成的规划可以在后期行动执行过程中,根据结果反馈来完善计划。在XAgent项目中,PlanAgent就可以通过子任务拆分、删除、修改和添加的方式进行规划的优化。其中,子任务拆分可以将某个长期规划中的中间步骤拆分为更细粒度的步骤,这便于在遇到难以解决的子任务时用更多的思考步骤来解决任务。

“知你所想“:用户任务拓展解释优化


“很多时候,人们不知道自己想要什么,直到你向他们展示为止” 

--史蒂夫·乔布斯

 用户的输入有时并不能很好地让大模型理解用户的真正意图,容易出现理解错误的情况。在提示这个概念兴起的时候,就出现了大量的提示优化器项目,例如PromptPerfect这样的基于大模型能力来优化用户提示的项目。这种提示优化的概念也可用于智能体用户任务的拓展解释优化。举例来说,CAMEL中的Task Specifier和 Chatdev中的self_improve模块就是这种用户任务拓展解释优化的模块。CAMEL的Task Specifier模块能够将初步任务/想法作为输入,并利用拓展能力生成特定任务。其提示为:


Here is a task that <ASSISTANT_ROLE> will help <USER_ROLE> to complete: <TASK>. 

Please make it more specific. Be creative and imaginative. 

Please reply with the specified task in words or less. Do not add anything else. 


Task Specifier模块能够帮助非领域专家智能体更好地完成任务,能起到思维增强的作用。

图片

CAMEL智能体结构图

ChatDev中的self_improve模块也是智能体中用于改善用户输入提示的一个模块,用于长期规划器ChatChain当中。

需要注意的是,用户任务拓展优化的过程中会增加信息,可能仍然会出现用户意图的理解偏差,在ChatDev项目中,团队也提出了这一点注意:

“ ⚠️ Attention Model generated prompts contains uncertainty and there may be a deviation from the requirement meaning contained in the original prompt.”

写在最后:


智能体的规划任务是一个多层面、复杂的过程,涵盖了未来情景的预测、资源的合理分配、步骤的有序排列以及对潜在挑战的准备。这一点在人类的决策中也同样体现出来:在缺乏经验的情况下,人们往往无法直接一步得出正确答案,就像学生在解数学题时,往往需要通过在草稿纸上进行大量的中间步骤推理。同样,模型规划也类似于这样的草稿过程,它是模型推理的一个中间环节。

优秀的数学成绩通常不是因为学生拥有更大的脑容量,而是他们掌握了有效的解题方法和思维模式。这一道理同样适用于智能体的规划:一个优秀的智能体需要具备有效的规划方法。未来,我们可以期待出现更高效、更准确的规划方法,这些方法不仅能充分发挥模型的潜力,还能解决更加复杂的问题。这种进步将是AI领域的一个重要里程碑,标志着智能体决策能力的显著提升。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习面试:逻辑回归与朴素贝叶斯区别

逻辑回归与朴素贝叶斯区别有以下几个方面: (1)逻辑回归是判别模型&#xff0c;朴素贝叶斯是生成模型&#xff0c;所以生成和判别的所有区别它们都有。 (2)朴素贝叶斯属于贝叶斯&#xff0c;逻辑回归是最大似然&#xff0c;两种概率哲学间的区别。 (3)朴素贝叶斯需要条件独立假设…

ClickHouse--12-可视化工具操作

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 可视化工具操作1 tabixhttp://ui.tabix.io/ 2 DBeaverhttps://dbeaver.io/download/ 可视化工具操作 1 tabix tabix 支持通过浏览器直接连接 ClickHouse&#xff…

【Django】Django自定义后台表单——对一个关联外键对象同时添加多个内容

以官方文档为例&#xff1a; 一个投票问题包含多个选项&#xff0c;基本的表单设计只能一个选项一个选项添加&#xff0c;效率较低&#xff0c;如何在表单设计中一次性添加多个关联选项&#xff1f; 示例代码&#xff1a; from django.contrib import adminfrom .models impo…

springboot207基于springboot的实习管理系统

实习管理系统的设计与实现 摘要 近年来&#xff0c;信息化管理行业的不断兴起&#xff0c;使得人们的日常生活越来越离不开计算机和互联网技术。首先&#xff0c;根据收集到的用户需求分析&#xff0c;对设计系统有一个初步的认识与了解&#xff0c;确定实习管理系统的总体功…

消息队列MQ 保证消息不丢失(消息可靠性)

文章目录 概述RabbitMQ 怎么避免消息丢失&#xff08;可靠传输&#xff09;RocketMQ 怎么确保消息不丢失Kafka 怎么保证消息不丢失activeMQ 怎么避免消息丢失MQ 宕机了消息是否会丢失线上服务宕机时&#xff0c;如何保证数据100%不丢失吗&#xff1f;消息队列消息持久化 概述 …

一周学会Django5 Python Web开发-Django5路由重定向

锋哥原创的Python Web开发 Django5视频教程&#xff1a; 2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 Django5 Python web开发 视频教程(无废话版) 玩命更新中~共计25条视频&#xff0c;包括&#xff1a;2024版 Django5 Python we…

JDK8 升级至JDK19

优质博文IT-BLOG-CN 目前部分项目使用JDK8&#xff0c;部分项目使用JDK19因此&#xff0c;环境变量中还是保持JDK8&#xff0c;只需要下载JDK19免安装版本&#xff0c;通过配置IDEA就可以完成本地开发。 一、IDEA 环境设置 【1】通过快捷键CTRL SHIFT ALT S或者File->P…

【SpringBoot3】Spring Security 常用注解

注&#xff1a;本文基于Spring Boot 3.2.1 以及 Spring Security 6.2.1 Spring Security 6 的常用注解包括以下几种&#xff0c;通过这些注解可以更加方便的控制资源权限。 Secured &#xff1a;方法执行前检查&#xff0c;直接判断有没有对应的角色PreAuthorize&#xff1a;方…

力扣102 二叉树的层序遍历 Java版本

文章目录 题目描述思路代码 题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;[[3],[…

ubuntu22.04-磁盘管理-虚拟机动态扩容-系统monitor

文章目录 1.虚拟机2.ubuntu设置3.命令查看4.系统资源管理器 1.虚拟机 关闭ubuntu22.04&#xff0c;然后修改虚拟机设置&#xff0c;如下图所示&#xff1a; 修改容量 2.ubuntu设置 搜索打开disks&#xff0c;如下图所示&#xff1a; 选择目标磁盘&#xff0c;选择调整大小…

利用LaTex批量将eps转pdf、png转eps、eps转png、eps转svg

1、eps转pdf 直接使用epstopdf命令&#xff08;texlive、mitex自带&#xff09;。 在cmd中进入到eps矢量图片的目录&#xff0c;使用下面的命令&#xff1a; for %f in (*.eps) do epstopdf "%f" 下面是plt保存eps代码&#xff1a; import matplotlib.pyplot as…

LeetCode每日刷题:101. 对称二叉树

题目&#xff1a; 解题思路&#xff1a;可以新写一个函数&#xff0c;从root开始&#xff0c;root的left的头结点将记为lefttree&#xff08;左子树&#xff09;,root的lright的头结点将记为righttree&#xff08;右子树&#xff09;&#xff0c; 然后递归左子树的root.left与右…

2024.2.22

1> 将互斥机制的代码实现重新敲一遍 #include<myhead.h> int num520; //临界资源 //1、创建一个互斥锁变量 pthread_mutex_t mutex; void *task1(void *arg) {printf("11111111\n");//3、获取锁资源pthread_mutex_lock(&mutex);num1314;sleep(3);pr…

LabVIEW多通道压力传感器实时动态检测

LabVIEW多通道压力传感器实时动态检测 介绍了一种基于LabVIEW的多通道压力传感器实时动态检测系统&#xff0c;解决压阻式压力传感器温度补偿过程的复杂度&#xff0c;提高测量的准确性。通过自动轮询检测方法&#xff0c;结合硬件检测模型和多通道检测系统设计&#xff0c;本…

基于ESP32+Platformio的物联网RTOS_SDK-CC_Device

本项目基于ESP32以及Platformio平台开发&#xff0c;请自行查阅如何配置这个环境 开源gitee地址&#xff1a;cc_smart_device 如果愿意贡献项目or提出疑问和修改的&#xff0c;请在gitee上提issue 项目里的mqtt服务器是公共的 请大家最好换成私有的 否则容易收到其他用户的错误…

unity学习(34)——角色选取界面(跨场景坑多)

先把SelectMenu中的camera的audio listener去掉。 现在还是平面&#xff0c;直接在camera下面添加两个panel即可&#xff0c;应该是用不到canvas了&#xff0c;都是2D的UI。 加完以后问题来了&#xff0c;角色选择界面的按钮跑到主界面上边了&#xff0c;而且现在账号密码都输…

LabVIEW多场景微振动测试平台与教学应用

LabVIEW多场景微振动测试平台与教学应用 在多种工程实践中&#xff0c;微振动的测试与分析对于评估结构的稳定性及其对环境的影响至关重要。针对这一需求&#xff0c;开发了一套基于NI-cDAQ和LabVIEW的多场景微振动测试平台&#xff0c;提高微振动测试的精确度与灵活性&#x…

通过MetricsAPI监控pod资源使用情况(k8s资源监控,java)

1. 目的&#xff1a;简单监控pod 我想使用java监控k8s pod的资源的简单使用情况&#xff0c;但是k8s内部并没有采集资源的实现。 但是k8s提供了一套k8s的对接标准&#xff0c;只要适配这套标准&#xff0c;就可以通过kubelet采集资源数据&#xff0c;并且通过k8s api服务器输出…

golang实现延迟队列(delay queue)

golang实现延迟队列 1 延迟队列&#xff1a;邮件提醒、订单自动取消 延迟队列&#xff1a;处理需要在未来某个特定时间执行的任务。这些任务被添加到队列中&#xff0c;并且指定了一个执行时间&#xff0c;只有达到指定的时间点时才能从队列中取出并执行。 应用场景&#xff1…

nginx的功能以及运用(编译、平滑升级、提高服务器设置、location alias 等)

nginx与apache的对比 nginx优点 nginx使用场景 编译安装nginx过程 1.先清空opt文件夹 2.关闭防火墙&#xff0c;关闭防护 3 安装依赖包&#xff0c;可以通过本地yum去安装 首先就是挂载&#xff0c;随后切换到配置文件中修改 4本地配置文件配置内容 5 随后安装环境包 yum -y …