在学术探索的浩瀚星空中,机器人技术领域的璀璨明珠莫过于Agent技术的深入研究,这一领域历来是创新与突破的温床。回溯至大模型浪潮兴起之前,Agent技术的辉煌篇章便已悄然铺展,诸如Alphago这样的里程碑式案例,以其卓越的环境感知、精准决策与高效行动能力,生动诠释了Agent技术的闭环魅力。同时,DeepMind的Agent57在强化学习领域的游戏挑战中崭露头角,而随后问世的Gato则展现了更为广泛的适用性,乃至OpenAI在“躲猫猫”游戏中展现的多智能体协作,无不预示着Agent技术的无限潜力。
展望未来,我们坚信Agent技术将成为驱动社会全面自动化的核心引擎。与以往侧重于结构化环境下通过既定算法实现的自动化不同,大模型的兴起为Agent技术赋予了前所未有的通用性与灵活性。这一转变,意味着Agent将能够跨越传统界限,深入人类脑力劳动的复杂长尾领域,从体力到脑力,全方位推进自动化的深度与广度。
大模型与Agent技术的融合,正引领我们步入一个全面自动化的新纪元。大模型作为知识海洋中的自主学习者,为Agent提供了前所未有的智慧源泉,激发了其快速发展的新动能。当前,尽管我们仍处于这一变革的初期,Agent技术更多以实验性、探索性的面貌呈现,但展望未来,其发展前景之广阔,变化速度之迅猛,或将超乎所有人的预料。随着技术的日新月异,我们或许会发现,所谓的“天花板”不过是通往更高境界的阶梯,而Agent技术的极限,正等待着我们共同去探索与定义。
基于Agent(智能体)能力的AI等级划分,可以借鉴类似自动驾驶级别的划分方式,将AI智能体的能力从低到高进行分级。以下是一个简化的AI Agent能力划分描述:
AI Agent能力划分:
L0 - 没有人工智能
在这一级别,Agent并不具备人工智能特性,只能执行预定或固定的任务,没有感知、决策或学习的能力。
L1 - 规则符号智能
Agent开始具备基于规则的决策能力,能够根据预设的规则和符号进行简单的判断和执行。这种智能体通常只能处理特定情境下的任务,且缺乏灵活性和适应性。
L2 - 推理决策智能
Agent能够利用逻辑推理能力来解决问题,不再仅仅依赖于预设的规则。它能够根据当前的环境信息和目标,进行一定程度的推理和决策,以选择最合适的行动方案。
L3 - 记忆反思智能
在L3级别,Agent不仅具备推理决策能力,还开始拥有记忆和反思的能力。它能够记住过去的经验和教训,并在未来的决策中加以利用。这种智能体能够自我优化和改进,以适应不断变化的环境和任务。
L4 - 自主学习智能
自主学习是L4级别Agent的主要特征。它能够自主地从数据中学习新知识和技能,无需人类的明确指导。这种智能体能够处理更复杂的问题,并在面对新情境时展现出更强的适应性和创造力。
L5 - 个性群体智能
在最高级别,Agent不仅具备高度自主的学习和决策能力,还展现出个性化的特征。它能够根据自身的特点和偏好来执行任务,并与其他Agent进行协作和沟通。此外,L5级别的Agent还能够理解和适应人类社会的复杂性和多样性,与人类实现更加紧密和自然的交互。
AI 等级划分
为了将 LLM 的能力发挥到极致,发展出了多种 prompt 工程
在大模型初露锋芒之际,业界掀起了一股“Prompt工程”的热潮,将这一先进技术视为一种创新的编程范式加以探索。从业者们巧妙地将大模型转化为高度可定制的“智能工具”,通过精心构建的角色设定、技能描述、任务关键词的精准提炼、目标导向的明确阐述,以及详尽的任务背景铺设,构建起与模型沟通的桥梁。这一系列精心设计的指令,不仅界定了大模型需完成的任务范畴,还细化了输出结果的格式要求,随后通过直接调用大模型,实现知识的生成与输出的无缝衔接。
这一过程,被业界形象地称为“工具模式”,它深刻体现了大模型作为高级认知工具的价值所在。在此模式下,大模型不再仅仅是静态的数据处理器,而是转变为能够根据用户意图灵活应变、高效执行复杂任务的智能助手。这种将大模型工具化的探索,不仅极大地拓宽了技术的应用边界,也为人工智能领域的研究与实践开辟了新的思路与方向。
案例:15000 字符的 prompt 工程,扮演人类导师
https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor
刚兴趣的同学可以用自己尝试一下:https://chat.openai.com/share/53b38605-68e5-4922-81fe-e4588fb28d8a
prompt 强化了 LLM 的能力,但以下的问题依然无法解决:
思维链的引入,标志着人工智能模型解答问题方式的重大转变。它强调模型需展现其内在的逻辑推理过程,而非仅仅呈现最终答案。这一过程可通过双轨并行实现:一是详尽阐述法,即模型被要求逐步、细致地展示其思考轨迹,确保每一步推理的透明度与逻辑性;二是范例引导法,通过提供包含完整思考路径的示例问题与答案,引导模型在面临新问题时模仿此过程,循序渐进地推导答案。随着实践的深入,我们进一步探索了CoT的潜力,发现当单一思维链遭遇障碍时,通过发散性思考,即CoT-SC(Chain of Thought with Strategic Convergence),模型能尝试多种解题路径,并通过投票机制筛选出最优解,从而增强了解的鲁棒性与多样性。
面对CoT-SC在某些复杂问题(如24点游戏)上的局限性,我们转而探索思维树的构建。ToT策略将问题视为一个根系庞大的树木,其主干代表核心问题,而每一分支则是对该问题的不同分解路径。每个节点代表一个子问题,随着树的层层展开,解空间被细致划分,同时,不合适的分支被有效剪除,以优化搜索效率。然而,ToT在处理需要高度整合子问题结果的任务(如排序算法中的合并步骤)时仍显不足。
为解决ToT的整合难题,思维图应运而生。GoT不仅继承了ToT的分解能力,更增添了灵活的合并机制,使得模型能够在复杂问题中自由穿梭于分解与整合之间,构建出既全面又精确的解决方案图。这一创新,标志着AI在复杂问题求解能力上的又一飞跃。
清华姚期智团队在思维推理领域取得了突破性进展,提出了累计推理方法。该方法在解决24点问题上已展现出高达98%的成功率,树立了新的技术标杆。其核心理念与主流Agent的实现方式相契合,强调通用性与实用性。累计推理首先孕育一个初步假设,随后通过不断验证与迭代,逐步构建并完善推理图。每个新节点都建立在稳固的已有基础上,通过发散、合并或修正,直至达成最终目标状态。这一过程不仅增强了推理的完备性,还赋予了模型前所未有的灵活性,为人工智能在更广泛领域的应用开辟了新的可能性。
上述的讨论主要是任务分解和组合,他们尽管强大,却不能与外界进行互动,这就不得不讲到反馈机制了。
ReACT机制的核心在于将推理和行动紧密结合,使语言模型能够交替地产生推理路径(Thought)和文本动作(Action),以解决不同的语言推理和决策任务。具体来说,ReACT通过以下几个步骤实现这一目标:
传统的强化学习方法在训练大型语言模型时面临诸多挑战,如需要大量的训练样本和昂贵的模型微调成本。此外,传统的标量或向量奖励信号往往难以准确反映智能体在执行任务过程中的具体表现。Reflexion方法通过引入语言反馈机制,旨在解决这些问题,使语言智能体能够快速有效地从错误经验中学习。
Reflexion方法的核心在于将传统强化学习中的奖励信号转化为语言反馈信号(Verbal Reinforcement),并将其作为附加的上下文信息嵌入到大型语言模型中。具体来说,Reflexion框架包含以下几个关键组件:
Actor:由大型语言模型(LLM)担任,主要负责基于当前环境生成下一步的动作。
Evaluator:用于评估Actor生成结果的质量,类似于强化学习中的奖励函数。Evaluator将生成的轨迹作为输入,计算在给定任务上下文中的奖励分数。
Self-Reflexion:自我反思模块,也由LLM担任。该模块负责分析Actor的执行结果和Evaluator的奖励信号,生成具体且详细的语言反馈信号。这些反馈信号会储存在Memory中,以便在未来的决策中提供参考。
Memory:提供短期记忆和长期记忆功能。短期记忆存储当前实验中的上下文信息,而长期记忆则存储Self-Reflexion模块生成的反思结果。
执行过程
Reflexion的执行过程是一个迭代过程,包括Actor生成动作、Evaluator评估动作、Self-Reflexion生成反思并存储结果等步骤。通过不断重复这个过程,智能体能够逐渐从错误经验中学习,并在未来的任务中做出更好的决策。
在 LLM 语境下,Agent 可以理解为某种能自主理解、规划决策、执行复杂任务的智能体。Agent 并非 ChatGPT 升级版,它不仅告诉你 “如何做”,更会帮你去做。如果 CoPilot 是副驾驶,那么 Agent 就是主驾驶。
Planning(规划):
Memory(记忆):
Tool use(工具使用):
多智能体系统相较于单智能体系统(如AutoGPT)在多个方面展现出显著的优势,这些优势使得多智能体在处理复杂任务时更为高效、灵活和稳定。
信息处理与记忆容量优势
多智能体优势:每个Agent在多智能体系统中仅需关注与自身角色或任务直接相关的信息,这种模块化的信息处理方式极大地减轻了单个智能体需要记忆和处理的数据量。因此,在面对长历史或复杂任务时,多智能体系统无需像单智能体那样维护庞大的记忆容量,降低了对模型序列长度的依赖,提高了系统的可扩展性和实用性。
单智能体局限:单智能体如AutoGPT需要记住并处理所有历史信息以做出决策,这对模型的记忆容量和计算能力提出了极高的要求。在长历史任务中,这种需求可能导致性能瓶颈,限制了单智能体系统的应用范围。
稳定性与观点排除
多智能体优势:通过角色扮演机制,多智能体系统能够模拟不同角色的视角和立场,从而有效排除某些偏见或错误观点的影响。这种机制使得系统输出更加客观、稳定,提高了决策质量。此外,不同智能体之间的交互还可以促进新想法的产生和验证,进一步增强了系统的创新性和适应性。
单智能体局限:单智能体在执行多任务时,由于所有任务信息都混合在一起处理,容易受到各种因素的干扰,导致输出结果的不稳定。同时,单智能体难以有效区分和排除不同任务之间的潜在冲突或错误观点。
可拓展性与任务分解
多智能体优势:多智能体系统通过分工协作的方式将复杂任务分解为多个相对简单的子任务,每个智能体专注于完成一个或几个子任务。这种任务分解策略不仅降低了单个智能体的处理难度,还提高了系统的整体效率和可拓展性。随着任务复杂度的增加,只需增加相应的智能体数量或调整智能体之间的协作策略即可应对。
单智能体局限:单智能体在处理复杂任务时,通常需要依赖记忆节省策略(如token压缩、关键信息提取等)来减少输入给模型的context长度。然而,这些策略在极端情况下可能无法完全避免性能下降的风险,因为长序列处理仍然是大型语言模型面临的一个挑战。
并行探索与最优解选择
多智能体优势:多智能体系统能够并行地探索多种解决方案,并通过比较和评估来选择最优解。这种并行探索机制不仅提高了问题求解的效率,还有助于发现更多潜在的优秀解。此外,不同智能体之间的探索结果可以相互借鉴和补充,形成更加全面的解决方案集合。
单智能体局限:单智能体在探索解决方案时通常只能采用串行或有限的并行方式(如分支预测、多线程等),其效率受到模型处理能力和计算资源的限制。同时,由于单智能体缺乏多视角的评估机制,其选择的解决方案可能不是全局最优的。即使通过增加计算资源来提高并行度,也可能面临资源分配不均、协调困难等问题。
例子:https://twitter.com/SullyOmarr/status/1644750889432027136
框架结构简单,但其设计理念具有重要意义,后续框架设计的思路都有这个的影子
优点:
缺点:
论文链接:https://arxiv.org/abs/2308.08155
项目链接:https://github.com/microsoft/autogen
user_proxy (to assistant):
What date is today? Compare the year-to-date gain for META and TESLA.
--------------------------------------------------------------------------------
assistant (to user_proxy):
First, let's get the current date. We can do this using Python's built-in datetime module. Here is the Python code to get the current date:
import datetime
Get the current date
current_date = datetime.date.today()
print("Today's date is:", current_date)
Next, we need to get the year-to-date (YTD) gain for META (Facebook) and TESLA. We can do this by using a financial data API such as Yahoo Finance. We will need to get the stock price at the start of the year and the current stock price, then calculate the percentage change.
However, as an AI, I'm unable to execute real-time web requests or access external APIs. I recommend using the `yfinance` library in Python to download the stock data. Here is an example of how you can do it:
import yfinance as yf
#Download stock data
meta_data = yf.download('META', start='2022-01-01', end=current_date)
tesla_data = yf.download('TSLA', start='2022-01-01', end=current_date)
#Calculate YTD gain
meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100
tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100
print("META YTD gain: ", meta_ytd_gain)
print("TESLA YTD gain: ", tesla_ytd_gain)
Please note that you need to install the `yfinance` library before running the above code. You can install it using pip:
pip install yfinance
Please replace `current_date` in the above code with the actual date you got from the first code.
--------------------------------------------------------------------------------
>>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...
>>>>>>>> EXECUTING CODE BLOCK 1 (inferred language is python)...
user_proxy (to assistant):
exitcode: 1 (execution failed)
Code output:
Today's date is: 2023-10-17
Traceback (most recent call last):
File "", line 4, in <module>
meta_data = yf.download('META', start='2022-01-01', end=current_date)
NameError: name 'current_date' is not defined
--------------------------------------------------------------------------------
assistant (to user_proxy):
I apologize for the confusion. The `current_date` variable was defined in the first script and it's not available in the second script. Let's combine the two scripts into one so that the `current_date` variable can be used in the second part of the script. Here is the combined script:
import datetime
import yfinance as yf
#Get the current date
current_date = datetime.date.today()
print("Today's date is:", current_date)
#Download stock data
meta_data = yf.download('META', start='2022-01-01', end=current_date)
tesla_data = yf.download('TSLA', start='2022-01-01', end=current_date)
#Calculate YTD gain
meta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100
tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100
print("META YTD gain: ", meta_ytd_gain)
print("TESLA YTD gain: ", tesla_ytd_gain)
Please run this script to get the current date and the year-to-date gain for META and TESLA.
--------------------------------------------------------------------------------
>>>>>>>> EXECUTING CODE BLOCK 0 (inferred language is python)...
user_proxy (to assistant):
exitcode: 0 (execution succeeded)
Code output:
Today's date is: 2023-10-17
[*********************100%%**********************] 1 of 1 completed
[*********************100%%**********************] 1 of 1 completed
META YTD gain: -5.136767947511282
TESLA YTD gain: -36.50836025922416
--------------------------------------------------------------------------------
assistant (to user_proxy):
The current date is October 17, 2023.
The year-to-date (YTD) gain for META (Facebook) is approximately -5.14%, indicating a decrease in value since the start of the year.
The YTD gain for TESLA is approximately -36.51%, indicating a significant decrease in value since the start of the year.
Please note that these values are based on the closing prices of the stocks and can vary slightly depending on the source of the data.
TERMINATE
--------------------------------------------------------------------------------
项目链接:https://github.com/OpenBMB/XAgent
官方博文:https://blog.x-agent.net/blog/xagent/
MetaGPT是一种创新的多智能体协作框架,其名字来源于“GPT-based Meta-Programming framework”,旨在通过分配不同的角色给生成式预训练变换器(GPTs),形成一个协作的软件实体以完成复杂任务。
论文链接:https://arxiv.org/abs/2308.00352
GitHub地址:https://github.com/geekan/MetaGPT
优点:
缺点:
适合人群:需要复杂的多代理交互和预定义复杂行为的项目。非常适合网络密集型异步操作和需要高级协作功能而无需大量定制的项目
项目链接:https://github.com/Link-AGI/AutoAgents
AutoAgents的过程是分为两个关键阶段:Drafting 阶段和Execution阶段。Drafting阶段包括三个预定义agent(Planner、Agent Observer和Plan Observer)之间的协作讨论来综合定制的agent团队和适合输入问题的执行计划或任务。Execution阶段通过agent间协作和反馈完善计划,以及产生最终结果。论文提出self-refinement ,通过个体agent和协作进行自我完善通过多个agent进行细化,以提高agent的熟练程度并促进各agent之间的知识共享agents。为了促进合成团队中agents之间的具体分工,作者引入预定义的agent(Action Observer)以协助agents团队共享信息,协调行动,达成共识,适应环境。
项目代码:https://github.com/joaomdmoura/crewAI
官网博文:https://docs.crewai.com/
优点:
缺点:
BabyAGI、CAMEL、DSPy、OpenAgents、Agents、AgentVerse、ChatDev、LangGraph
更多优质内容请关注公号:汀丶人工智能;会提供一些相关的资源和优质文章,免费获取阅读。
只有让LLM(大模型)学会使用工具,才能做出一系列实用的AI Agent,才能发挥出LLM真正的实力。本篇,我们让AI Agent使用更多的工具,比如:外部搜索、分析CSV、文生图、执行代码等。