所有文章 > AI驱动 > AI Agent框架 - 7大认知框架全解析与代码实现
AI Agent框架 - 7大认知框架全解析与代码实现

AI Agent框架 - 7大认知框架全解析与代码实现

人工智能代理技术近期成为了讨论的焦点,尤其是在其被整合到代理架构中的应用,激发了广泛的兴趣。

Sam Altman曾对人工智能的未来做出预测:“我们目前所见的AI大型模型可能是它们历史上智能程度最低的阶段,未来它们将变得更加先进!”在AI Ascent 2024会议上,吴恩达也分享了他对AI发展的积极看法:“我们正处于人工智能发展的黄金时代,生成式AI和AI代理将彻底革新我们的工作方式!”这些行业领袖的观点让我们认识到,人工智能与人类生活的融合正在加速,特别是在代理架构的支持下。

AI代理之所以能够扮演代理角色,是因为它拥有决策制定的能力,这主要归功于其代理架构的设计。这种架构能够从海量的人类语言数据中提炼出关键信息。因此,代理架构能够根据不同的应用场景,例如场景A需要执行特定操作,场景B需要执行另一套操作,来有效地引导AI的行为。这正是大型语言模型能够成为代理的基础,也是推动其在多个领域应用和进步的核心动力。

    一个可爱的Agent

不过,愿景虽好,现实并不理想。Agent的开发现状是既没有什么有体系的理论指导,有没有什么优秀的范例来启发并模仿。

那么,在大模型应用开发时代,大家都在讨论的Agent到底应该如何设计实现。       

AI Agent认知框架的4种设计模式

吴恩达教授在红杉资本的人工智能峰会(AI Ascent)上谈到了自己对于AI Agent认知框架设计模式的四种分类,包括反思、工具使用、规划、多智能体协作。

吴恩达教授提出的AI Agent认知框架的4种设计模式

这四种基本的思维框架设计模式分别是:

  • 反思(Reflection):Agent通过交互学习和反思来优化决策。
  • 工具使用(Tool use):Agent 在这个模式下能调用多种工具来完成任务。
  • 规划(Planning):在规划模式中,Agent 需要规划出一系列行动步骤来达到目标。
  • 多Agent协作(Multiagent collaboration):涉及多个Agent之间的协作。

Agent认知框架的技术架构

OpenAI公司的安全系统主管Lilian Weng也提出了一个由大模型驱动的自主Agent系统的架构,其中包含规划(Planning)、记忆(Memory)、工具(Tools)、执行(Action)四大要素。

在这个架构中,Agent位于中心位置,它通过协同各种组件来处理复杂的任务和决策过程。

  • 规划:Agent需要具备规划(同时也包含决策)能力,以有效地执行复杂任务。这涉及子目标的分解(Subgoal decomposition)、连续的思考(即思维链,Chain of thoughts)、自我反思和批评(Self-critics),以及对过去行动的反思(Reflection)。
  • 记忆: 包含了短期记忆和长期记忆两部分。短期记忆与上下文学习有关,属于提示工程的一部分,而长期记忆涉及信息的长时间保留和检索,通常是通过利用外部向量存储和快速检索。
  • 工具:这包括了Agent可能调用的各种工具,如日历、计算器、代码解释器和搜索功能,以及其他可能的工具。由于大模型一旦完成预训练,其内部能力和知识边界基本固定下来,而且难以拓展,那么这些工具显得异常重要。它们扩展了Agent的能力,使其能够执行超出其核心功能的任务。
  • 执行(或称行动):Agent基于规划和记忆来执行具体的行动。这可能包括与外部世界互动,或者通过工具的调用来完成一个动作(任务)。

围绕着这个架构,一系列的AI Agent认知框架开始落地。接下来,我们将重点介绍几种具有代表性的Agent认知框架设计模式及其实现思路。

7种AI Agent认知框架的具体实现

下面,我们就来说一说主流的7种Agent认知框架的基本思想,并简明扼要的阐述如何具体实现这些框架。

AI Agent 框架:思维链(Chain of Thought)

在代理认知框架的发展史上,具有里程碑意义的是《Chain-of-Thought Prompting》这篇研究论文,它的发表甚至早于ChatGPT的问世。

在大型AI模型的推理能力普遍不足的背景下,这篇论文通过引入一个连贯的思考过程,指导模型进行更深层次的逻辑推理,显著提高了模型解决复杂问题的能力。这种方法不仅改进了模型的推理过程,还增强了其输出的可解释性,使得模型的决策过程对用户来说更加清晰和易于理解。

论文中所讨论的Chain of Thought(简称CoT),即思维链,是指在解决问题时所经历的一系列逻辑思考步骤。在人工智能领域,特别是在自然语言处理和机器理解任务中,CoT方法通过模仿人类的思考方式来增强模型的理解和推理能力。通过明确展示解决问题的逻辑步骤,CoT有助于提高模型的透明度和可解释性。

Chain-of-Thought论文中的思维链示例

在设计AI代理时,我们应当汲取其方法论中的核心思想。一旦理解了这些思想,我们就能够通过精心构建的提示工程模板来实现CoT(Chain of Thought)框架。

以一个例子来说明,假设我们的目标是开发一个AI模型,用于评估个人的信用评分。这是一个典型的金融服务应用场景,涉及到众多变量和复杂的逻辑判断。

在CoT框架的指导下,我们可以设计如下的提示,以引导AI模型通过逻辑推理来完成信用评分的评估:

考虑到申请人的以下信息:

– 年龄:35岁

– 年收入:$50,000

– 信用历史:无违约记录

– 负债:$10,000的信用卡债务

– 资产:无房产,有一辆值$15,000的汽车

步骤1:评估信用历史。申请人没有违约记录,这是一个积极的信用因素。

步骤2:考虑年收入与负债的比例。申请人的年收入为$50,000,而负债为$10,000,债务收入比为20%,这表明申请人有足够的收入来覆盖债务。

步骤3:考虑资产情况。虽然申请人没有房产,但有一辆汽车,可以作为贷款的担保。

步骤4:基于以上分析,综合评估申请人的信用等级。

最终判断:根据以上逻辑推理,申请人的信用等级应该是中等偏上。

下面是一个使用OpenAI API调用CoT框架的示例,这里使用Python语言进行编程。该代码通过发送一个包含逻辑推理步骤的详细问题描述到模型,从而获得关于个人信用评估的决策推理。 

from openai import OpenAI
client = OpenAI()


completion = client.chat.completions.create(
model="gpt-4", # 使用GPT-4模型
messages=[
{"role": "system", "content": "你是一个专门处理信用评估的智能助手,能够通过逻辑推理来分析申请人的信用状况。"},
{"role": "user", "content": """
考虑以下申请人的信息:
- 年龄:35岁
- 年收入:50,000美元
- 信用历史:无违约记录
- 负债:10,000美元的信用卡债务
- 资产:无房产


分析步骤如下:
1. 根据年龄、收入和信用历史来评估违约风险。
2. 考虑负债与收入的比率,判断负债水平是否合理。
3. 评估无房产的风险因素,考虑是否会影响申请人的偿债能力。


根据上述分析步骤,请评估这位申请人的信用等级。
"""}
]
)


print(completion.choices[0].message)

这里,我们构造了一个详细的提示,引导模型沿着设置的思维链路进行逻辑推理。这种方式不仅有助于生成更可解释的答案,而且能够提高决策的准确性。

CoT这篇文章是一石激起千层浪,后面研究大模型推理认知的文章就逐渐丰富了起来。

AI Agent 框架:自问自答(Self-Ask) 

在构建AI代理时,我们经常参考的是其方法论中的思想精华。理解了这些思想之后,我们可以通过精心设计的提示工程模板来实现CoT(Chain of Thought)框架。CoT框架通过模拟人类的思考过程,增强了模型的透明度和可解释性,使其在处理复杂问题时更加有效。

Self-Ask是CoT的一个扩展,它允许模型自我生成问题,进行自查询以获取更多信息,然后基于这些信息生成最终答案。这种方法使模型能够更深入地探索问题的各个方面,从而提高答案的质量和准确性。

在实际应用中,比如设计一款新的智能手表,我们可以使用Self-Ask框架来考虑用户的多样化需求和技术可能性。通过设置一系列的自我提问,模型可以引导自己深入市场和技术分析,激发对潜在创新点的思考。例如,我们可以问自己:“这款手表的目标用户群体是什么?”、“他们最看重哪些功能?”、“当前市场上的竞争对手有哪些?”、“我们的产品如何在技术参数上超越他们?”等等。通过这样的自问自答,我们可以更全面地分析问题,从而设计出更符合用户需求的智能手表。

Self-Ask框架的实现通常包括两个步骤:首先,模型生成一系列与输入文本相关的问题;然后,模型根据这些问题给出相应的答案。这一过程不仅增强了模型对输入文本的理解,而且有助于模型在推理过程中进行自我纠正。

在设计智能手表的过程中,我们可以利用Self-Ask框架来探索和解决各种设计挑战。例如,我们可以问自己:“如何使手表的界面既美观又易于操作?”、“在有限的屏幕上,如何展示最关键的信息?”、“手表的电池寿命如何优化以满足用户的需求?”等等。通过这样的自我提问和回答,我们可以更深入地思考设计的各个方面,从而创造出一个既实用又具有创新性的智能手表产品。

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
model="gpt-4", # 使用GPT-4模型
messages=[
{"role": "system", "content": "你是一个专门处理产品设计创新的智能助手,能够自我生成问题来探索创新的设计解决方案。"},
{"role": "user", "content": """
我们正在开发一款新的智能手表。请分析当前市场上智能手表的主要功能,并提出可能的创新点。
"""},
{"role": "system", "content": "首先,考虑目前市场上智能手表普遍缺乏的功能是什么?"},
{"role": "system", "content": "接下来,探讨哪些新增功能可能吸引健康意识强的消费者?"},
{"role": "system", "content": "最后,分析技术上可行的创新功能,这些功能如何通过可穿戴技术实现?"}
]
)

print(completion.choices[0].message)

在这个示例中,通过系统自我生成的问题和回答,不仅引导了深入的市场和技术分析,还激发了对潜在创新点的思考。这种方法有助于在产品设计初期阶段就识别和整合创新的元素。

你可以通过Few-shot的方式,以这个样板为例,让大模型自己进行更多有创造性的思考,往往能激发我们开始并没有想到的创意点子。

AI Agent 框架:批判修正(Critique Revise)

Critique Revise(批判修正)或 反思(Refection)这个认知框架也叫做Self-Refection,是一种在人工智能和机器学习领域中应用的框架,主要用于模拟和实现复杂决策过程。这种架构基于“批判”和“修正”两个核心步骤,通过不断迭代改进来提高系统的性能和决策质量。

  • 批判(Critique):在这一步骤中,系统会评估当前的决策或行为产出,并识别出其中的问题或不足之处。这一过程通常涉及与预设目标或标准的比较,以确定当前输出与期望结果之间的差距。
  • 修正(Revise):基于批判步骤中识别的问题,系统在这一步骤中会调整其决策过程或行为策略,以期改进输出的质量。修正可以是对现有算法参数的调整,也可以是采用全新的策略或方法。

Critique Revise 认知架构的目标是通过不断自我评估和调整,使系统能够学习并改进决策过程,从而在面对复杂问题时做出更加有效的决策。

假设一家公司正在评估其最近的数字营销活动效果,以便制定未来的营销策略。使用 Critique Revise 框架,可以通过以下步骤来优化决策过程:

  • 批判(Critique):系统首先分析现有营销活动的数据,包括广告点击率、转化率、消费者互动情况等,并与既定的目标或行业标准进行比较。在这一阶段,系统识别出当前策略的不足之处,例如目标受众定位不准确、广告内容不吸引人或预算分配不合理。
  • 修正(Revise):基于批判阶段的分析结果,系统提出改进方案。这可能包括调整目标受众、重新设计广告内容、或优化预算分配策略。此外,系统还可能推荐测试新的营销渠道或技术,以提高整体营销效果。

代码实现如下:

from openai import OpenAI
client = OpenAI()


# 执行 Critique 阶段
critique_completion = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个市场营销分析助手。"},
{"role": "user", "content": "分析最近一次营销活动的效果,并指出存在的问题。"}
]
)


# 执行 Revise 阶段
revise_completion = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "你是一个市场策略优化助手。"},
{"role": "user", "content": "根据之前的批判,提出具体的改进措施。"}
]
)


print("Critique Results:", critique_completion.choices[0].message)
print("Revise Suggestions:", revise_completion.choices[0].message)

在这个过程中,AI系统首先执行 Critique 阶段,分析和识别问题;然后在Revise 阶段,根据识别的问题提出具体的改进措施。这种方法帮助企业深入理解市场动态,精确调整营销策略,从而实现更有效的市场应对。

AI Agent 框架:函数调用(Function Calling/Tool Calls)

Function Calling是一种由OpenAI倡导的AI应用开发框架,它将大型语言模型作为调用预设函数的核心,模型能够根据用户的需求智能地决定调用哪些工具。

在OpenAI Assistant中,可调用的工具包括代码解释器(用于数据分析)、函数调用、文件检索工具等。这种方法特别适合那些需要与现有系统整合或执行特定技术任务的应用场景,例如自动化脚本编写或复杂的数据分析工作。通过Function Calling框架,开发者可以构建出能够执行高级任务的智能系统,同时保持系统的灵活性和可扩展性。

Open AI Assistant中的各种工具

当然,工具调用这种框架并不仅仅属于OpenAI API所专有,LangChain中的Agent也集成了大量的可用工具。

LangChain中的工具和工具箱

关于Agent的工具调用,目前的常见大模型开发框架,都已经形成了非常完备的解决方案。

AI Agent 框架:ReAct(ReasoningPlan-and-Acting)

那么,有了CoT的逐步推理, 有了Refection的反思,又有了工具调用,我们就终于来到了Agent认知框架的集大成者—— ReAct框架

这个框架整合了先前的CoT和Reflection方法,并引入了工具调用功能,进一步增强了模型的交互能力和应用范围,代表了在Agent认知框架发展中的一个新的里程碑。

ReAct论文中指出,既要有推理,又要有行动

ReAct框架是推理和行动的整合,Reasoning and Acting, ReAct框架的核心思想在于 在思考,观察和行动 反复循环,迭代,不断优化解决方案,知道问题最终解决位置,这就不仅使Agent能够进行复杂的内部推理,还能实时反应并调整其行为以适应不断变化的环境和需求。

目前,ReAct框架已经被无缝集成至LangChain,开发者可以非常轻松地创建ReAct Agent来完成具体任务。

AI Agent 框架:计划与执行(Plan-and-Execute)

Plan-and-Execute可以翻译为计划与执行架构。这种架构侧重于先规划一系列的行动,然后执行。它使LLM能够先综合考虑任务的多个方面,然后按计划行动。在复杂的项目管理或需要多步骤决策的场景中尤为有效,如自动化工作流程管理。

Plan-and-Solve论文中的示例

目前,LangChain的Experiment(实验包)中支持Plan-and-Execute框架,开发者可以尝试创建Plan-and-Execute Agent,对任务先计划,再具体执行。

Plan-and-Solve的实现示例

AI Agent 框架:多Agent协作(Multi-Agents Collaboration)

多Agent系统(MAS)是当前研究的一个热门领域,它专注于如何让多个智能代理(Agent)协同合作,共同完成复杂任务和达成目标。这涉及到了合作、竞争以及协商等多种策略的研究。

在这个领域中,AutoGen和MetaGPT是两个突出的框架。AutoGen框架提供了Agent定制功能,允许开发者根据特定的需求来定制Agent的行为和功能。

另一方面,MetaGPT框架将标准操作程序(SOPs)与基于大型语言模型的多Agent系统相结合,利用SOPs来构建提示,确保了输出的协调性、结构化和模块化。这种设计使得不同的Agent能够在一个高度结构化的环境中扮演不同的角色,通过专业化的协作来解决复杂的任务,从而在软件工程等协作任务中提升解决方案的一致性和准确性。

在MetaGPT的演示中,展示了一个模拟软件公司环境的多Agent系统,该系统能够模拟公司内不同角色处理复杂任务的过程。其核心理念是将代码视为团队的标准操作程序,即“代码即团队SOP”,将标准操作程序具体化,并将其应用于由大型语言模型构成的团队中。这种方法有助于提高团队的协作效率和输出质量。

软件公司组织角色图

这个软件公司的组织角色图突出了公司内的不同角色及其职责。 

  • 老板(Boss):为项目设定总体要求。
  • 产品经理(Product Manager):负责编写和修订产品需求文档(PRD)。
  • 架构师(Architect):编写和修订设计,审查产品需求文档和代码。
  • 项目经理(Project Manager):编写任务,分配任务,并审查产品需求文档、设计和代码。
  • 工程师(Engineer):编写、审查和调试代码。
  • 质量保证(QA):编写和运行测试,以确保软件的质量。

你只要输入一行具体的软件开发需求。经过几轮协作,MetaGPT的假想软件工程团队就能够开发出真正可用的简单APP。

当然MetaGPT的功能不仅限于此,还可以用于其他场景构建应用程序。

各种认知框架的组合运用

上述认知框架当然是可以的组合的比如说,ReAct框架中,就一定应该配置Tool Calls,通过工具的调用+Tool Calls 才能够改变环境的状态,继续观察,才能够进一步的思考。

ReAct + Tool Calls

自然,每一个AI Agent认知框架都拥有其独到之处。决定选用哪一种框架,或者如何将它们有效结合以发挥最大效能,这完全取决于具体的业务需求、应用场景以及我们期望为用户提供的体验质量。挑选一个与应用需求相匹配的认知架构,是开发大型语言模型应用时的一个关键决策。

今天的深入分享到此结束。我尽力在有限的篇幅内,从理论基础到实际应用,对代理技术的现状进行了全面的梳理和分析,希望这些内容能为你在代理应用开发上提供一些有价值的参考和灵感。展望未来,随着代理技术的不断进步,它必将在人工智能的多个应用领域产生深远的影响,进一步促进人与机器之间的协作,达到新的水平。

AI Agent框架常见问题有哪些?

1、什么是AI Agent框架?

答案:AI Agent框架是指一套用于构建和部署智能代理(Agent)的系统架构,旨在提高代理的自主决策能力和推理能力。

2、AI Agent框架的主要功能是什么?

答案:AI Agent框架主要功能包括信息获取、决策制定、任务执行和与用户或其他系统的交互,帮助代理更有效地完成特定任务。

3、如何选择合适的AI Agent框架?

答案:选择合适的AI Agent框架时,应考虑框架的功能特性、易用性、社区支持、性能和兼容性等因素,以满足特定应用需求。

4、AI Agent框架是否支持多代理系统?

答案:大多数现代AI Agent框架支持多代理系统,允许多个代理之间进行协作与通信,以解决复杂问题。

5、AI Agent框架的应用场景有哪些?

答案:AI Agent框架广泛应用于自动化任务、智能客服、数据分析、推荐系统、游戏开发等多个领域。

6、如何在AI Agent框架中实现决策过程的透明性?

答案:可以通过引入可解释的推理过程,如Chain-of-Thought方法,来提高决策过程的透明性,使用户能够理解代理的决策逻辑。

7、AI Agent框架如何处理复杂任务?

答案:AI Agent框架通常通过模块化设计,将复杂任务拆分为更小的子任务,并采用有效的算法和策略来逐步解决。

8、AI Agent框架对AI技术的依赖程度如何?

答案:AI Agent框架在智能化程度上依赖于AI技术,如自然语言处理、机器学习和深度学习等,以提升代理的智能和自主性。

9、AI Agent框架是否需要编程知识?

答案:虽然许多AI Agent框架提供可视化工具以简化开发,但对于复杂应用,具备一定的编程知识仍然是有帮助的。

10、如何评估AI Agent框架的性能?

答案:可以通过测试代理在不同任务中的响应时间、决策准确性、用户满意度等指标来评估AI Agent框架的性能。

参考资料

1.https://36kr.com/p/2716201666246790 – 吴恩达最新演讲:AI Agent工作流的未来

2.https://lilianweng.github.io/posts/2023-06-23-agent/ – LLM Powered Autonomous Agents

3.Chain-of-Thought Prompting Elicits Reasoning in Large Language Models , 36th Conference on Neural Information Processing Systems (NeurIPS 2022).

4.Press, O., Zhang, M., Min, S., Schmidt, L., Smith, N. A., & Lewis, M. (2022).

Measuring and Narrowing the Compositionality Gap in Language Models. arXiv preprint arXiv:2212.09551.

5.Wang, L., Xu, W., Lan, Y., Hu, Z., Lan, Y., Lee, R. K.-W., & Lim, E.-P. (2023). Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models. arXiv. 

6.Yao, S., Zhao, J., Yu, D., Du, N., Shafran, I., Narasimhan, K., & Cao, Y. (2023). ReAct: Synergizing Reasoning and Acting in Language Models. arXiv preprint arXiv:2210.03629. 

7.https://github.com/geekan/MetaGPT – MetaGPT: The Multi-Agent Framework

本文转自 微信公众号@咖哥AI,作者黄佳

#你可能也喜欢这些API文章!