AI Agent技术的最新进展与改变世界的典型项目巡礼1. AI Agent 技术发展以及典型项目1.0 前 AI Agent 时代![]() 在学术探索的浩瀚星空中,机器人技术领域的璀璨明珠莫过于Agent技术的深入研究,这一领域历来是创新与突破的温床。回溯至大模型浪潮兴起之前,Agent技术的辉煌篇章便已悄然铺展,诸如Alphago这样的里程碑式案例,以其卓越的环境感知、精准决策与高效行动能力,生动诠释了Agent技术的闭环魅力。同时,DeepMind的Agent57在强化学习领域的游戏挑战中崭露头角,而随后问世的Gato则展现了更为广泛的适用性,乃至OpenAI在“躲猫猫”游戏中展现的多智能体协作,无不预示着Agent技术的无限潜力。 展望未来,我们坚信Agent技术将成为驱动社会全面自动化的核心引擎。与以往侧重于结构化环境下通过既定算法实现的自动化不同,大模型的兴起为Agent技术赋予了前所未有的通用性与灵活性。这一转变,意味着Agent将能够跨越传统界限,深入人类脑力劳动的复杂长尾领域,从体力到脑力,全方位推进自动化的深度与广度。 大模型与Agent技术的融合,正引领我们步入一个全面自动化的新纪元。大模型作为知识海洋中的自主学习者,为Agent提供了前所未有的智慧源泉,激发了其快速发展的新动能。当前,尽管我们仍处于这一变革的初期,Agent技术更多以实验性、探索性的面貌呈现,但展望未来,其发展前景之广阔,变化速度之迅猛,或将超乎所有人的预料。随着技术的日新月异,我们或许会发现,所谓的“天花板”不过是通往更高境界的阶梯,而Agent技术的极限,正等待着我们共同去探索与定义。 1.1 AI等级划分基于Agent(智能体)能力的AI等级划分,可以借鉴类似自动驾驶级别的划分方式,将AI智能体的能力从低到高进行分级。以下是一个简化的AI Agent能力划分描述: AI Agent能力划分:
![]()
![]() 1.2 Prompt 工程![]()
这一过程,被业界形象地称为“工具模式”,它深刻体现了大模型作为高级认知工具的价值所在。在此模式下,大模型不再仅仅是静态的数据处理器,而是转变为能够根据用户意图灵活应变、高效执行复杂任务的智能助手。这种将大模型工具化的探索,不仅极大地拓宽了技术的应用边界,也为人工智能领域的研究与实践开辟了新的思路与方向。 案例:15000 字符的 prompt 工程,扮演人类导师 ![]() https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor 刚兴趣的同学可以用自己尝试一下: prompt 强化了 LLM 的能力,但以下的问题依然无法解决:
![]()
1.2.2 分而治之 - 古老的思想依然有效
![]() 1.2.3 step-by-step![]()
思维链的引入,标志着人工智能模型解答问题方式的重大转变。它强调模型需展现其内在的逻辑推理过程,而非仅仅呈现最终答案。这一过程可通过双轨并行实现:一是详尽阐述法,即模型被要求逐步、细致地展示其思考轨迹,确保每一步推理的透明度与逻辑性;二是范例引导法,通过提供包含完整思考路径的示例问题与答案,引导模型在面临新问题时模仿此过程,循序渐进地推导答案。随着实践的深入,我们进一步探索了CoT的潜力,发现当单一思维链遭遇障碍时,通过发散性思考,即CoT-SC(Chain of Thought with Strategic Convergence),模型能尝试多种解题路径,并通过投票机制筛选出最优解,从而增强了解的鲁棒性与多样性。 ![]() ![]()
面对CoT-SC在某些复杂问题(如24点游戏)上的局限性,我们转而探索思维树的构建。ToT策略将问题视为一个根系庞大的树木,其主干代表核心问题,而每一分支则是对该问题的不同分解路径。每个节点代表一个子问题,随着树的层层展开,解空间被细致划分,同时,不合适的分支被有效剪除,以优化搜索效率。然而,ToT在处理需要高度整合子问题结果的任务(如排序算法中的合并步骤)时仍显不足。 ![]()
为解决ToT的整合难题,思维图应运而生。GoT不仅继承了ToT的分解能力,更增添了灵活的合并机制,使得模型能够在复杂问题中自由穿梭于分解与整合之间,构建出既全面又精确的解决方案图。这一创新,标志着AI在复杂问题求解能力上的又一飞跃。 ![]()
清华姚期智团队在思维推理领域取得了突破性进展,提出了累计推理方法。该方法在解决24点问题上已展现出高达98%的成功率,树立了新的技术标杆。其核心理念与主流Agent的实现方式相契合,强调通用性与实用性。累计推理首先孕育一个初步假设,随后通过不断验证与迭代,逐步构建并完善推理图。每个新节点都建立在稳固的已有基础上,通过发散、合并或修正,直至达成最终目标状态。这一过程不仅增强了推理的完备性,还赋予了模型前所未有的灵活性,为人工智能在更广泛领域的应用开辟了新的可能性。 ![]() 1.2.4 基于反馈的 ReACT-Synergizing Reasoning and Acting上述的讨论主要是任务分解和组合,他们尽管强大,却不能与外界进行互动,这就不得不讲到反馈机制了。 ReACT机制的核心在于将推理和行动紧密结合,使语言模型能够交替地产生推理路径(Thought)和文本动作(Action),以解决不同的语言推理和决策任务。具体来说,ReACT通过以下几个步骤实现这一目标:
![]() 1.2.5 Reflexion
传统的强化学习方法在训练大型语言模型时面临诸多挑战,如需要大量的训练样本和昂贵的模型微调成本。此外,传统的标量或向量奖励信号往往难以准确反映智能体在执行任务过程中的具体表现。Reflexion方法通过引入语言反馈机制,旨在解决这些问题,使语言智能体能够快速有效地从错误经验中学习。
Reflexion方法的核心在于将传统强化学习中的奖励信号转化为语言反馈信号(Verbal Reinforcement),并将其作为附加的上下文信息嵌入到大型语言模型中。具体来说,Reflexion框架包含以下几个关键组件:
Reflexion的执行过程是一个迭代过程,包括Actor生成动作、Evaluator评估动作、Self-Reflexion生成反思并存储结果等步骤。通过不断重复这个过程,智能体能够逐渐从错误经验中学习,并在未来的任务中做出更好的决策。 ![]() 2. AI Agent
在 LLM 语境下,Agent 可以理解为某种能自主理解、规划决策、执行复杂任务的智能体。Agent 并非 ChatGPT 升级版,它不仅告诉你 “如何做”,更会帮你去做。如果 CoPilot 是副驾驶,那么 Agent 就是主驾驶。 2.1 AI Agent 系统组成![]() ![]()
![]() 2.2 Agent 项目(单/多智能体)![]() 多智能体系统相较于单智能体系统(如AutoGPT)在多个方面展现出显著的优势,这些优势使得多智能体在处理复杂任务时更为高效、灵活和稳定。
Auto-GPT
例子:
![]() 框架结构简单,但其设计理念具有重要意义,后续框架设计的思路都有这个的影子
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 datecurrent_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 datameta_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 gainmeta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100print('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 yfinancePlease 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-17Traceback (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 datetimeimport yfinance as yf#Get the current datecurrent_date = datetime.date.today()print('Today's date is:', current_date)#Download stock datameta_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 gainmeta_ytd_gain = ((meta_data['Close'][-1] - meta_data['Close'][0]) / meta_data['Close'][0]) * 100tesla_ytd_gain = ((tesla_data['Close'][-1] - tesla_data['Close'][0]) / tesla_data['Close'][0]) * 100print('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 completedMETA YTD gain: -5.136767947511282TESLA 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-------------------------------------------------------------------------------- ![]()
XAgent项目链接: 官方博文: ![]()
![]() ![]()
![]() OPENAI Assistants![]()
MetaGPTMetaGPT是一种创新的多智能体协作框架,其名字来源于“GPT-based Meta-Programming framework”,旨在通过分配不同的角色给生成式预训练变换器(GPTs),形成一个协作的软件实体以完成复杂任务。
论文链接: GitHub地址: ![]() ![]() ![]()
适合人群:需要复杂的多代理交互和预定义复杂行为的项目。非常适合网络密集型异步操作和需要高级协作功能而无需大量定制的项目 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团队共享信息,协调行动,达成共识,适应环境。 ![]() crewAI![]() 项目代码:
更多项目BabyAGI、CAMEL、DSPy、OpenAgents、Agents、AgentVerse、ChatDev、LangGraph |
|