神译局是36氪旗下编译团队,关注科技、商业、职场、生活等领域,重点介绍国外的新技术、新观点、新风向。 编者按:2025年是AI智能体元年。本系列文章旨在介绍AI智能体的概念、类型、原理、架构、开发等,为进一步了解AI智能体提供入门知识。本文为系列文章的第六篇,文章来自编译。
1. 引言
智能体架构是定义AI智能体组件组织与交互方式的蓝图,让智能体得以感知环境、进行推理并采取行动。本质上,它就像智能体的数字大脑——整合了"眼睛"(传感器)、"大脑"(决策逻辑)以及"双手"(执行器)来处理信息并采取行动。
选择合适的架构对构建高效AI智能体至关重要。架构决定了智能体的响应速度、处理复杂任务能力、学习适应性及资源需求。比方说,基于简单反射的智能体可能擅长做出实时反应但缺乏长期规划能力,而审慎型智能体虽能处理复杂目标却需更高计算成本。理解这些权衡可帮助工程师针对特定应用领域匹配合适架构,实现最佳性能与可靠性。
2. 智能体架构的分类
主流智能体架构可分为以下类别:
<ol>
反应式
审慎式
混合式
神经符号式
认知式
</ol>
2.1 反应式架构(Reactive Architectures)
ReAct是最直接的AI智能体设计模式。这种方法下,大语言模型(LLM)会先分析上下文并确定下一步行动,随后在环境中执行该行动并生成观察结果作为反馈。LLM处理观察结果后重新评估后续行动,循环此过程直至任务完成。
(反应式智能体架构概念图:传感器输入直接触发条件-动作规则,产生即时响应,无内部状态或规划机制)
2.1.1 应用场景
<ol>
反应式架构适用于需要瞬间决策且响应可预测的领域。典型应用包括机器人技术(如传感器检测到障碍立即避让的扫地机器人/无人机)和游戏开发(如根据预设脚本对玩家动作即时反应的NPC角色,比方说发现玩家立即攻击的敌方守卫)。
工业场景中,当传感器超出阈值范围时,简单的监测智能体可触发警报或关闭系统。这类智能体在实时控制系统中表现优异,但因缺乏全局规划能力,通常用于规则可预定义且任务相对简单或约束严格的场景。
</ol>
对于简单任务,无需框架即可通过纯代码轻松构建反应式设计模式。
首先需要大语言模型作为智能体的"大脑":
from dotenv import load_dotenv
from openai import OpenAI
_ = load_dotenv()
client = OpenAI() 接着创建智能体类处理消息:
class Agent:
def __init__(self, system=""):
self.system = system
self.messages = []
if self.system:
self.messages.append({"role": "system", "content": system})
def __call__(self, message):
self.messages.append({"role": "user", "content": message})
result = self.execute()
self.messages.append({"role": "assistant", "content": result})
return result
def execute(self):
completion = client.chat.completions.create(
model="gpt-4o",
temperature=0,
messages=self.messages)
return completion.choices[0].message.content 然后的写一段系统提示词指导智能体用数学计算和犬种平均体重查询工具:
import openai
import re
import httpx
import os
prompt = """
You run in a loop of Thought, Action, PAUSE, Observation.
At the end of the loop you output an Answer
Use Thought to describe your thoughts about the question you have been asked.
Use Action to run one of the actions available to you - then return PAUSE.
Observation will be the result of running those actions.
Your available actions are:
calculate:
e.g. calculate: 4 * 7 / 3
Runs a calculation and returns the number - uses Python so be sure to use floating point syntax if necessary
average_dog_weight:
e.g. average_dog_weight: Collie
returns average weight of a dog when given the breed
Example session:
Question: How much does a Bulldog weigh?
Thought: I should look the dogs weight using average_dog_weight
Action: average_dog_weight: Bulldog
PAUSE
You will be called again with this:
Observation: A Bulldog weights 51 lbs
You then output:
Answer: A bulldog weights 51 lbs
""".strip()
def calculate(what):
return eval(what)
def average_dog_weight(name):
if name in "Scottish Terrier":
return("Scottish Terriers average 20 lbs")
elif name in "Border Collie":
return("a Border Collies average weight is 37 lbs")
elif name in "Toy Poodle":
return("a toy poodles average weight is 7 lbs")
else:
return("An average dog weights 50 lbs")
known_actions = {
"calculate": calculate,
"average_dog_weight": average_dog_weight
}prompt = """
You run in a loop of Thought, Action, PAUSE, Observation.
At the end of the loop you output an Answer
Use Thought to describe your thoughts about the question you have been asked.
Use Action to run one of the actions available to you - then return PAUSE.
Observation will be the result of running those actions. 通过多步循环构建智能体:
abot = Agent(prompt)
def query(question, max_turns=5):
i = 0
bot = Agent(prompt)
next_prompt = question
while i < max_turns:
i += 1
result = bot(next_prompt)
print(result)
actions = [
action_re.match(a)
for a in result.split('\n')
if action_re.match(a)
]
if actions:
# There is an action to run
action, action_input = actions[0].groups()
if action not in known_actions:
raise Exception("Unknown action: {}: {}".format(action, action_input))
print(" -- running {} {}".format(action, action_input))
observation = known_actions[action](action_input)
print("Observation:", observation)
next_prompt = "Observation: {}".format(observation)
else:
return
question = """I have 2 dogs, a border collie and a scottish terrier. \
What is their combined weight"""
query(question) 输出:
Thought: I need to find the average weight of a Border Collie and a Scottish Terrier, then add them together to get the combined weight.
Action: average_dog_weight: Border Collie
PAUSE
-- running average_dog_weight Border Collie
Observation: a Border Collies average weight is 37 lbs
Action: average_dog_weight: Scottish Terrier
PAUSE
-- running average_dog_weight Scottish Terrier
Observation: Scottish Terriers average 20 lbs
Thought: Now that I have the average weights of both dogs, I can calculate their combined weight by adding them together.
Action: calculate: 37 + 20
PAUSE
-- running calculate 37 + 20
Observation: 57
Answer: The combined weight of a Border Collie and a Scottish Terrier is 57 lbst 如上所示,智能体成功通过两种工具分别获取犬种平均体重后完成求和计算。
2.1.2 优劣分析
<ol>
反应式架构的核心优势是速度。由于无需复杂推理,决策时间恒定,非常适合实时机器人控制、高频交易等毫秒级响应场景。
因其行为由显式规则定义,反应式智能体的设计与验证相对简单。
缺点是适应性有限:由于缺乏学习与规划能力,既无法处理突发状况,也难以解决需要连续行动达成目标的复杂问题。
其决策具有短视性——优化即时响应却忽略长期影响(比方说缺乏战略逻辑的反应式机器人可能会陷入死循环)。这些局限性推动了含内部状态与推理能力的更先进架构的发展。
</ol>
研究表明不同设计模式更适合不同的任务。借助LangGraph等成熟方案中经过验证的多智能体架构(而非从零构建),可针对特定问题获得优化解决方案。
本文将探讨这些架构及其在实际场景中的应用方法。
2.2 审慎式架构(Deliberative Architecture)
审慎式智能体是基于模型、目标驱动的智能体,采取行动前会进行推理。与即时反应的反应式智能体不同,此类智能体会进行前瞻性思考,通过内部模型评估多种可能行动,选择最优方案实现目标。
(审慎式智能体架构概念图:内置了内部状态(世界模型)与规划/推理模块。智能体感知环境→更新内部模型→制定计划→执行行动)
<ol>
感知:接收环境输入
建模:更新内部世界模型(如符号化状态、语地图)
规划:生成可行方案并模拟评估结果
行动:执行最优方案或目标导向的下一步
</ol>
这种机制跟国际象棋AI提前规划多步走法类似,而不是一步步做出反应。
伪代码示例(受BDI原则启发):
# 目标导向的审慎式智能体循环
options = generate_options(state) # 生成可行方案
best_option = evaluate_options(options) # 评估选择最优方案
commit_to_plan(best_option, state) # 确定执行计划 在此循环中,generate_options根据当前状态和目标生成行动方案,evaluate_options通过模拟推演或启发式规则选择最优解。智能体逐步执行行动并适时重新评估,体现其对长期目标的优化能力。比方说路径规划智能体会生成多条路线,并选择最短安全路径。
2.3 混合式架构
混合架构融合反应式与审慎式系统,在动态环境中兼顾了响应速度与决策智能。
- 反应层:即时响应感知输入(如避障)
- 审慎层:基于内部模型进行目标规划(如路径规划)
- 多层架构通常并行运作,平衡即时反应与长期策略。
(混合智能体架构概念图:反应子系统处理紧急行动,审慎子系统进行规划。传感器数据输入双通道,执行器整合输出结果)
典型的层次结构:
- 底层:反应层(本能响应)
- 中层(可选):序列/协调层
- 顶层:审慎层(目标推理与规划)
- 通过协调机制(如监督器或优先级规则)决定各层输出的执行优先级:
percept = sense_environment()
if is_urgent(percept):
action = reactive_module(percept) # 紧急情况快速响应
else:
update(world_model, percept)
action = deliberative_planner(world_model, current_goal)
execute(action) 这样的逻辑确保了安全与效率,兼顾了即时威胁应对与长期目标达成。
2.4 神经符号式架构
神经符号架构融合了神经网络(数据学习)与符号AI(规则推理),令智能体既能感知复杂环境又能进行逻辑推演。
- 神经网络:擅长模式识别(如图像、语音)
- 符号系统:擅长逻辑推理与可解释性
- 整合目标:结合神经感知与符号理解,做出智能且可解释的决策
(神经符号架构概念图:神经网络模块处理感知数据,符号知识库进行逻辑推理,决策模块整合两者输出生成行动)
有两种主要整合策略:
- 串行式:神经网络处理原始输入(如目标检测),符号系统对解析结果进行推理
- 并行式:双模块同步工作,决策模块融合输出
伪代码示例:
percept = get_sensor_data()
nn_insights = neural_module.predict(percept) # 感知(如异常检测)
sym_facts = symbolic_module.update(percept) # 数据转译逻辑事实
sym_conclusions = symbolic_module.infer(sym_facts) # 应用领域知识推理
decision = policy_module.decide(nn_insights, sym_conclusions)
execute(decision) 该架构实现了数据驱动洞察与显式规则指导的行动融合。
2.5 认知式架构
认知架构是通过整合感知、记忆、推理与学习的统一系统,模拟与人类似的,通用智能的综合性框架。
<ol>
感知环境
更新工作记忆
基于产生式规则推理决策
通过执行器行动
</ol>
- 旨在构建具备像人一样会学习、规划、解决问题并有适应能力的智能体
(认知智能体架构概念图:感知模块将刺激转化为知觉,然后更新工作记忆,认知推理模块(如产生式规则)基于记忆内容决策行动或目标,执行器改变环境状态,形成含记忆与学习机制的感知-思考-行动循环)
1. SOAR架构
1980年代针对通用智能行为而开发
- 工作记忆:存储当前情况
- 产生式记忆:存储"条件-动作"规则
- 采用通用子目标机制(遇阻时设置子目标)
- 学习机制:通过"组块化"将经验转化为新规则
- 典型应用:AI助理、人形机器人、决策智能体
2. ACT-R架构
- 基于认知心理学
- 由专用模块组成(视觉、运动、记忆等)
- 各模块拥有独立缓冲区作为临时工作记忆
- 产生式规则管理缓冲区间数据流
- 融合符号推理与亚符号机制(如记忆激活)
共性特征
<ol>
陈述性记忆(事实)
程序性记忆(技能/规则)
有时包含有情景记忆(过往事件)
</ol>
简化的认知循环:
percept = perceive_environment()
update_working_memory(percept)
action = cognitive_reasoner.decide(working_memory)
execute(action) SOAR与ACT-R等认知架构提供智能的完整模型,集成感知、记忆、决策与学习。这种架构不仅用于构建聪明的智能体,更有助于理解人类的思维机制。此类系统适合需要持续学习、处理多样化任务且具备类人推理能力的智能体。
3. LangGraph的智能体设计模式
智能体架构与智能体设计模式紧密相关,但属于AI智能体开发的不同抽象层级。
智能体架构:定义智能智能体构建与运作的结构框架,涉及核心组件及其组织方式(类似"骨架"),明确智能体如何感知环境、处理信息、决策行动。
关注系统构建的"方法"——底层机制及数据/控制流
智能体设计模式:解决特定问题的高层可复用策略/模板,不聚焦内部细节而指导跨场景行为交互(类似"配方")
关注"what"与"why"——你希望该智能体展现出什么样的行为或能力,以及为什么该智能体在特定场景下是有效的
LangGraph将智能体架构分为三大类:
3.1 多智能体系统
- 网络式:多智能体协作完成任务
- 监督式:LLM协调调度各智能体
- 层次化团队:协调嵌套智能体团队解决问题
3.2 规划智能体
- 计划执行式:基础规划与执行智能体
- 无观察推理:通过将观察存为变量来减少重复规划
- LLM编译器:流式执行规划生成的DAG任务
3.3 反思与批判
- 基础反思:引导智能体反思并修正输出
- 反思式:批判性分析缺失/冗余信息,从而为后续步骤提供指导
- 思维树:基于评分树搜索候选方案
- 语言智能体树搜索:结合反思与奖励的蒙特卡洛树搜索
- 自我发现智能体:分析智能体,了解其自身能力
以下是各类智能体设计模式的详述:
4. 多智能体系统
4.1 多智能体网络
通过路由机制将任务分配给专业智能体,采用分治法处理复杂任务。
多智能体网络架构
4.2 多智能体监督
跟网络架构类似,但采用监督智能体(而非路由器)来协调各智能体。
多智能体监督架构
4.3 层次化智能体团队
当单个智能体无法完成任务时,监督智能体协调多个由多智能体组成的团队。
层次化智能体团队架构
5. 规划智能体
5.1 计划执行式
规划智能体生成子任务序列,专业智能体执行子任务,结果返回规划智能体进行动态调整,最终反馈给用户。
5.2 无观察推理
Xu等人提出的ReWOO架构引入了一个集成多步规划器与变量替换的智能体,目的是优化工具使用。这一方案跟规划-执行架构类似,但省去了传统模型的逐步观察步骤。ReWOO的每一步并未包含有观察步骤。整个规划是预先制订好的,不受后续观察的影响。
规划智能体构建子任务计划,工作智能体执行后直接向用户反馈。
5.3 LLMCompiler
通过有向无环图(DAG)的流式执行加速任务处理,并减少LLM调用以节省成本。
包含有三大核心组件:
- 规划器:流式生成任务DAG
- 任务获取单元:即时调度执行可运行任务
- 聚合器(Joiner):响应用或触发二次规划
6. 反思与批判
6.1 基本型反思架构(Basic Reflection)
基本型反思智能体会提示大语言模型(LLM)回顾历史行为,从而持续学习改进。典型结构含生成器与批判器双智能体,比方说作者智能体生成文本后,由评审智能体提出反馈意见,循环迭代直至达到预设次数。
6.2 反思式架构(Reflexion)
Shinn等人提出的Reflexion架构通过语言反馈与自我反思进行学习。智能体会显式批判自身对任务的响应来提升最终输出质量(需牺牲执行时间),并整合工具调用能力。
核心组件:
<ol>
行动器(含自反思能力的智能体)
外部评估器(任务专用,如代码编译步骤)
存储反思结果的情景记忆
</ol>
6.3 思维树
Yao等人提出的思维树(ToT)算法,通过反思评估结合搜索机制(默认广度优先,也可用深度优先等)优化LLM智能体决策。
三阶段流程:
<ol>
扩展:生成多个候选解决方案
评分:量化方案质量
剪枝:保留最优K个方案
</ol>
若未达预期,返回到扩展阶段
6.4 语言智能体树搜索
Zhou等人提出的LATS算法,结合反思评估与蒙特卡洛树搜索,性能优于ReACT、Reflexion等同类技术。
四阶段流程:
<ol>
选择:基于奖励值选择最优行动(若达终止条件则响应,否则继续搜索)
扩展与模拟:并行执行5个潜在最优行动
反思评估:观测结果并评分(可结合外部反馈)
回溯更新:根据结果更新根路径评分
</ol>
6.5 自我发现智能体
该架构帮助LLM自主探索复杂问题的最优解决路径。
- 首先,通过选择与重组基础推理步骤,为每个问题生成定制化方案
- 接着,按方案逐步解决问题
如此一来,LLM即整合了多推理工具实现自适应,效率远超单一方法
核心差异:
- 推理模块:按特定顺序组合基础推理步骤
- 无需人工:自主生成策略,无需任务标注
- 任务自适应:类人式规划最优解
- 可迁移性:策略可跨语言模型复用
总结:通过融合多推理方法自主生成任务无关的规划策略
7. 结论
本文系统探讨了智能体架构的演进——从传统反应式、审慎式模型到混合式、神经符号式及认知式架构,并通过LangGraph实现展示了规划、协作、反思等设计模式。掌握这些架构原理对构建可扩展、模块化的目标驱动型AI至关重要。未来AI发展将依赖协调性、反思性、目标明确的智能体群体协同解决复杂任务,而非孤立的智能。
延伸阅读:
AI智能体(一):介绍
AI智能%9
|