跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI算法

大模型智能体(Agent)核心概念与架构解析

综述由AI生成详细解析了大模型智能体(Agent)的核心概念与架构。智能体是在大语言模型基础上,增加了规划、记忆和工具使用能力的通用问题解决器。文章深入探讨了规划的三种模式(子任务分解、思维链 CoT、思维树 ToT)及 ReAct 推理行动机制,阐述了短期与长期记忆的实现原理,并重点介绍了 Function Calling 作为连接外部工具的关键技术。通过 MetaGPT 调研员案例展示了智能体的实际应用,并提及了主流开发框架。随着 LLM 能力提升,智能体将在重构软件形态和提升生产效率方面发挥重要作用。

游戏玩家发布于 2025/2/7更新于 2026/5/3021 浏览
大模型智能体(Agent)核心概念与架构解析

大语言模型 vs 人类

大语言模型非常强大,就像人类的大脑一样拥有思考的能力。如果人类只有大脑,没有四肢,没有工具,是没办法与世界互动的。如果我们能给大模型配备上四肢和工具呢?大模型是不是就会打破次元壁,从数字世界走向现实世界,与现实世界实现梦幻联动呢?

大语言模型(后文将用 LLM 指代)可以接受输入,可以分析推理、可以输出文字、代码、媒体。然而,其无法像人类一样,拥有规划思考能力、运用各种工具与物理世界互动,以及拥有人类的记忆能力。

  • LLM:接受输入、思考、输出
  • 人类:LLM(接受输入、思考、输出)+ 记忆 + 工具 + 规划

如果我们给 LLM 配备上:与物理世界互动的工具、记忆能力、规划思考能力。LLM 是否就可以像人类一样,能够自主思考并规划完成任务的过程,能检索记忆,能使用各种工具提高效率,最终完成某个任务。

智能体是什么

智能体的英文是 Agent,AI 业界对智能体提出了各种定义。个人理解,智能体是一种通用问题解决器。从软件工程的角度看来,智能体是一种基于大语言模型的,具备规划思考能力、记忆能力、使用工具函数的能力,能自主完成给定任务的计算机程序。

由 LLM 驱动的智能体系统

图 1. 由 LLM 驱动的智能体系统

如图 1 所示,在基于 LLM 的智能体中,LLM 充当着智能体的'大脑'的角色,同时还有 3 个关键部分:

规划(Planning)

智能体会把大型任务分解为子任务,并规划执行任务的流程;智能体会对任务执行的过程进行思考和反思,从而决定是继续执行任务,或判断任务完结并终止运行。

记忆(Memory)

短期记忆,是指在执行任务的过程中的上下文,会在子任务的执行过程产生和暂存,在任务完结后被清空。长期记忆是长时间保留的信息,一般是指外部知识库,通常用向量数据库来存储和检索。

工具使用(Tool use)

为智能体配备工具 API,比如:计算器、搜索工具、代码执行器、数据库查询工具等。有了这些工具 API,智能体就可以与物理世界交互,解决实际的问题。

智能体能做什么

如果你还觉得智能体这个概念有点抽象,没关系,现在我们来点好玩的,一起来看看智能体能玩出什么花样?

智能体之调研员

调研员智能体,可以根据用户的调研问题,从搜索引擎上搜索资料并总结,然后生成调研报告。这里使用 MetaGPT 框架中的调研员示例来展示一个智能体的实际作用及其构成。

运行一下试试

  • 输入调研课题:调研特斯拉 FSD 和华为 ADS 这两个自动驾驶系统
python3 -m metagpt.roles.researcher "特斯拉FSD vs 华为ADS"
  • 智能体执行调研

从搜索引擎进行搜索并获取 Url 地址列表

图 2. 从搜索引擎进行搜索并获取 Url 地址列表

(注:此处原图包含冯·诺依曼与奥本海默相关背景说明,属历史计算机架构对比参考)

浏览网页并总结网页内容

图 3. 浏览网页并总结网页内容

生成调研报告

图 4. 生成调研报告

  • 输出调研报告:MetaGPT 生成并保存了调研报告

调研报告文件

文件:特斯拉FSD vs 华为ADS.md

调研报告详情

图 5

拆解调研员

调研员智能体构成

回到前文所说的,如果仅有 LLM 这个大脑,是无法完成整个调研流程的。在调研员智能体中,为 LLM 大脑配备了规划、工具、记忆的能力,使得他能独立完成调研任务,下面列出其基本构成,构成分三部分:角色、工具、记忆。在角色中,会注册各种工具,定义思考规划的方式,以及本身具备的短期记忆能力。

调研员智能体结构

图解调研员智能体

智能体协作流程

图 6

智能体的关键构成

智能体架构图

img

智能体如上图所示,在基于 LLM 的智能体中,LLM 充当着智能体的'大脑'的角色,同时还有 3 个关键部分:规划(Planning)、记忆(Memory)、工具使用(Tool use)。

规划(Planning)

规划,可以为理解观察和思考。如果用人类来类比,当我们接到一个任务,我们的思维模式可能会像下面这样:

  • 我们首先会思考怎么完成这个任务。
  • 然后我们会审视手头上所拥有的工具,以及如何使用这些工具高效地达成目的。
  • 我们会把任务拆分成子任务(就像我们会使用 TAPD 做任务拆分)。
  • 在执行任务的时候,我们会对执行过程进行反思和完善,吸取教训以完善未来的步骤。
  • 执行过程中思考任务何时可以终止。

这是人类的规划能力,我们希望智能体也拥有这样的思维模式,因此可以通过 LLM 提示工程,为智能体赋予这样的思维模式。在智能体中,最重要的是让 LLM 具备以下两个能力:

子任务分解

通过 LLM 使得智能体可以把大型任务分解为更小的、更可控的子任务,从而能够有效完成复杂的任务。

思维链(Chain of Thoughts, CoT)

思维链已经是一种比较标准的提示技术,能显著提升 LLM 完成复杂任务的效果。当我们对 LLM 这样要求「think step by step」,会发现 LLM 会把问题分解成多个步骤,一步一步思考和解决,能使得输出的结果更加准确。这是一种线性的思维方式。

思维链的 prompt 可以像是如下这样(这里只是一个极简的 prompt,实际会按需进行 prompt 调优):

template = "Answer the question: Q: {question}? Let's think step by step:"

思维树(Tree-of-thought, ToT)

对 CoT 的进一步扩展,在思维链的每一步,推理出多个分支,拓扑展开成一棵思维树。使用启发式方法评估每个推理分支对问题解决的贡献。选择搜索算法,使用广度优先搜索(BFS)或深度优先搜索(DFS)等算法来探索思维树,并进行前瞻和回溯。

思维树示意图

图 7

反思和完善

智能体在执行任务过程中,通过 LLM 对完成的子任务进行反思,从错误中吸取教训,并完善未来的步骤,提高任务完成的质量。同时反思任务是否已经完成,并终止任务。

ReAct

ReAct(Reasoning and Acting),《ReAct: Synergizing Reasoning and Acting in Language Models》这篇论文提出一种用于增强大型语言模型的方法,它通过结合推理(Reasoning)和行动(Acting)来增强推理和决策的效果。

  • 推理(Reasoning):LLM 基于「已有的知识」或「行动(Acting)后获取的知识」,推导出结论的过程。
  • 行动(Acting):LLM 根据实际情况,使用工具获取知识,或完成子任务得到阶段性的信息。

为什么结合推理和行动,就会有效增强 LLM 完成任务的能力?这个问题其实很好回答,我们用上面的「调研员智能体」举例,我提出了问题:「特斯拉 FSD 对比华为 ADS」,下面列出几种不同规划模式的推演:

  • 仅推理(Reasoning Only):LLM 仅仅基于已有的知识进行推理,生成答案回答这个问题。很显然,如果 LLM 本身不具备这些知识,可能会出现幻觉,胡乱回答一通。
  • 仅行动(Acting Only):大模型不加以推理,仅使用工具(比如搜索引擎)搜索这个问题,得出来的将会是海量的资料,不能直接回到这个问题。
  • 推理 + 行动(Reasoning and Acting):LLM 首先会基于已有的知识,并审视拥有的工具。当发现已有的知识不足以回答这个问题,则会调用工具,比如:搜索工具、生成报告等,然后得到新的信息,基于新的信息重复进行推理和行动,直到完成这个任务。其推理和行动的步骤会是如下这样:

ReAct 流程示意

ReAct 执行细节

图 8

通过巧妙的 prompt 提示设计,使得 LLM 重复地执行推理和行动,最终完成任务。ReAct 的 prompt 模版的大致思路为:

ReAct Prompt 模板

记忆(Memory)

记忆是什么?当我们在思考这个问题,其实人类的大脑已经在使用记忆。记忆是大脑存储、保留和回忆信息的能力。记忆可以分为不同的类型:

  1. 短期记忆(或工作记忆):这是一种持续时间较短的记忆,能够暂时存储和处理有限数量的信息。例如,记住一个电话号码直到拨打完毕。
  2. 长期记忆:这是一种持续时间较长的记忆,可以存储大量信息,从几分钟到一生。长期记忆可以进一步分为显性记忆和隐性记忆。显性记忆,可以有意识地回忆和表达的信息,显性记忆又可以分为情景记忆(个人经历的具体事件)和语义记忆(一般知识和概念)。隐性记忆,这种记忆通常是无意识的,涉及技能和习惯,如骑自行车或打字。

仿照人类的记忆机制,智能体实现了两种记忆机制:

  • 短期记忆:在当前任务执行过程中所产生的信息,比如某个工具或某个子任务执行的结果,会写入短期记忆中。记忆在当前任务过程中产生和暂存,在任务完结后被清空。
  • 长期记忆:长期记忆是长时间保留的信息。一般是指外部知识库,通常用向量数据库来存储和检索。这通常涉及到 RAG(Retrieval-Augmented Generation)技术,允许智能体访问私有数据或历史对话记录。

工具使用(Tool use)

LLM 是数字世界中的程序,想要与现实世界互动、获取未知的知识,或是计算某个复杂的公式等,都离不开工具。所以我们需要为智能体配备各种工具以及赋予它使用工具的能力。

工具是什么?它可以是锤子、螺丝刀,也可以是函数(function)、软件开发工具包(sdk)。工具是人类智慧的具象化,扩展我们的能力,提升工作效率。在智能体中,工具就是函数(Function),工具使用就是调用函数(Call Function)。

在 LLM 中实现函数调用,使用到 LLM 的这个能力:

Function Calling

Function Calling 是一种实现大型语言模型连接外部工具的机制。通过 API 调用 LLM 时,调用方可以描述函数,包括函数的功能描述、请求参数说明、响应参数说明,让 LLM 根据用户的输入,合适地选择调用哪个函数,同时理解用户的自然语言,并转换为调用函数的请求参数(通过 JSON 格式返回)。调用方使用 LLM 返回的函数名称和参数,调用函数并得到响应。最后,如果需要,把函数的响应传给 LLM,让 LLM 组织成自然语言回复用户。

function calling 具体工作流程如下图所示:

Function Calling 流程

图 9

不同 LLM 的 API 接口协议会有所不同,下文将以OpenAI 的 API 协议为例,说明如何实现 Function Calling。

函数描述

我们可以按照智能体的需要来实现函数,比如前文的「调研员」智能体,为其实现了这些函数:WebBrowseAndSummarize:浏览网页并总结网页内容;ConductResearch:生成调研报告等。如果是一个智能家居的智能体,可能会需要这些函数:开关灯、开光空调、获取环境信息等。函数的实现在这里不展开赘述,一个函数可以自行编码实现,也可以通过调用外部 API 实现。

假设你的函数已经被实现,我们需要向 LLM 描述这个函数,函数描述的必备要素:

  • 函数名
  • 函数的功能描述
  • 函数的请求参数说明
  • 函数的响应参数说明(可选)

「查询最近天气」的函数描述:

函数描述示例

调用 LLM 获得函数的请求参数

Function Calling 是通过请求 LLM 的 chat API 实现的,在支持 Function Calling 模型的 chat API 参数中,会有一个 functions 参数 (或 tools,不同 LLM 的参数会有所不同) ,通过传入这个参数,大模型则会知道拥有哪些参数可供使用。并且会根据用户的输入,推理出应该调用哪些函数,并将自然语言转成函数的请求参数,返回给请求方。下面以 OpenAI 的 SDK 举例:

from openai import OpenAI

def chat_completion_request(messages, tools=None, tool_choice=None, model="gpt-3.5-turbo"):
    try:     
        response = client.chat.completions.create(        
            model=model,            
            messages=messages,            
            tools=tools,            
            tool_choice=tool_choice,        
        )       
        return response    
    except Exception as e:     
        print("Unable to generate ChatCompletion response")        
        print(f"Exception: {e}")        
        return e

if __name__ == "__main__":
    messages = []    
    messages.append({"role": "system", "content": "不要假设将哪些值输入到函数中。如果用户请求不明确,请要求澄清"})    
    messages.append({"role": "user", "content": "未来 5 天深圳南山区的天气怎么样"})    
    chat_response = chat_completion_request(        
        messages, tools=tools    
    ) 
 
 tool_calls = chat_response.choices[0].message.tool_calls 
 print("===回复===") 
 print(tool_calls)

LLM 将会返回 get_n_day_weather_forecast 函数的调用参数:

===回复===
[ChatCompletionMessageToolCall(id='call_7qGdyUEWp34ihubinIUCTXyH', function=Function(arguments='{"location":"深圳市南山区","format":"celsius","num_days":5}', name='get_n_day_weather_forecast'), type='function')
]
// 格式化看看:chat_response.choices[0].message.tool_calls:
[
  {   
    "id": "call_7qGdyUEWp34ihubinIUCTXyH",    
    "function": {      
      "arguments": {       
        "location": "深圳市南山区",        
        "format": "celsius",        
        "num_days": 5      
      },      
      "name": "get_n_day_weather_forecast"    
    },    
    "type": "function"  
  }
]

调用函数

调用方获得 LLM 返回的函数调用信息(函数名称和调用参数)后,自行调用函数,并得到函数执行的响应。如果有需要,还可以把函数执行的响应追加到 chat API 的对话中传给 LLM,让 LLM 组织成自然语言回复用户。

函数调用结果

执行结果:

===get_n_day_weather_forecast===
[{'date': '2023-04-01', 'location': '深圳市南山区', 'temperature': '20°C', 'description': '晴朗'}, {'date': '2023-04-02', 'location': '深圳市南山区', 'temperature': '21°C', 'description': '多云'}, {'date': '2023-04-03', 'location': '深圳市南山区', 'temperature': '22°C', 'description': '晴朗'}, {'date': '2023-04-04', 'location': '深圳市南山区', 'temperature': '23°C', 'description': '多云'}, {'date': '2023-04-05', 'location': '深圳市南山区', 'temperature': '24°C', 'description': '晴朗'}]
===回复===
未来 5 天深圳南山区的天气情况如下:
- 4 月 1 日:晴朗,温度 20°C
- 4 月 2 日:多云,温度 21°C
- 4 月 3 日:晴朗,温度 22°C 
- 4 月 4 日:多云,温度 23°C 
- 4 月 5 日:晴朗,温度 24°C

请注意天气预报仅供参考,实际情况可能会有所变化。

智能体的开发框架

现在(2024 年 5 月)如果你想要开发一个 AI 智能体,已经比大模型爆发的初期方便太多了,随着 AI 应用需求的持续火热,智能体框架层出不穷。智能体开发框架,会抽象和封装那些被高频使用的模块,如记忆能力、规划能力、RAG 能力、大模型调用等。使用智能体框架,可帮助你快速搭建智能体。

根据社区整理,无论是开源的还是闭源的,智能体应用框架在各个领域,比如自定义智能体、编码、研究、数据分析、多智能体等等,都有比较有代表性的产品可供选择。

智能体框架概览

图 10

MetaGPT 是一个多智能体框架,多智能体框架可以帮你开发一个由多个不同职责的智能体组合起来的多智能体。举个例子,如果我们想开发一个多智能体软件团队,该软件团队可以根据用户需求交付代码,其内部会通过测试代码、评审代码来提升代码质量。该多智能体将包含:开发(coder)、测试(tester)、评审人(reviewer)这三个不同职责的智能体,他们各司其职,互相协作完成任务。下图的左侧是多智能体的协作流程,右侧是单智能体的工作流程。

多智能体协作流程

图 11

展望

随着大模型的百花齐放,LLM 会支持更长的上下文、更大的参数规模,其推理能力也会愈发强大。因此,基于大模型搭建的智能体(AI Agent)的能力边界也在不断突破。通过智能体技术,我们可以创建各种各样的 AI 应用,比如:Copilot、DB-GPT 等等,一些 AI 应用已经成为工作生活中不可缺少的存在。相信 AI 应用的将会快速全面地重构我们曾经习以为常的软件形态和交互方式,以及提升人类的生产效率。

学习 AI 大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习 AI 大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握 AI 大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。再者,学习 AI 大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。因此,学习 AI 大模型是一项有前景且值得投入的时间和精力的重要选择。

目录

  1. 大语言模型 vs 人类
  2. 智能体是什么
  3. 规划(Planning)
  4. 记忆(Memory)
  5. 工具使用(Tool use)
  6. 智能体能做什么
  7. 智能体之调研员
  8. 运行一下试试
  9. 拆解调研员
  10. 调研员智能体构成
  11. 图解调研员智能体
  12. 智能体的关键构成
  13. 规划(Planning)
  14. 子任务分解
  15. 思维链(Chain of Thoughts, CoT)
  16. 思维树(Tree-of-thought, ToT)
  17. 反思和完善
  18. ReAct
  19. 记忆(Memory)
  20. 工具使用(Tool use)
  21. Function Calling
  22. 函数描述
  23. 调用 LLM 获得函数的请求参数
  24. 调用函数
  25. 智能体的开发框架
  26. 展望
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • ESP-SparkBot 开源 AI 桌面机器人 ESP32-S3 核心方案解析
  • Python 调用 Web Scraper API 抓取 Glassdoor 数据全流程实战
  • 百度否认大模型泡沫论,AI 业务持续盈利
  • C++ string 类基础刷题实战:输入、查找与反转
  • Gitee+PicGo 搭建 Markdown 笔记图床方案
  • 使用 SCP 命令在 Windows 与 Linux 系统间传输文件
  • FPGA 千兆以太网 SGMII 接口配置实战
  • JetBrains Copilot Agent Mode + MCP 配置与实战指南
  • C++ 通用数组类封装实现
  • CosyVoice 安装 openai-whisper 报错 ModuleNotFoundError: No module named'pkg_resources'
  • 哈佛学霸的学习力培养与专注力提升指南
  • Java 驱动的无人共享宠物洗澡物联网系统架构
  • Git 分支管理规范与流程指南
  • 从 vw/vh 到 clamp(),前端响应式设计的痛点与进化
  • Python 调用 ChatGPT、通义千问与讯飞星火文本总结实测对比
  • Web Worker:前端多线程开发的隐形引擎
  • 基于 Django 框架搭建 WebApi 项目实战
  • PaddleOCR-VL-WEB 核心优势与本地部署推理教程
  • 无人机 RemoteID 合规指南:ArduRemoteID 开源方案详解
  • VS Code 远程连接服务器后 GitHub Copilot 无法使用解决方案

相关免费在线工具

  • 加密/解密文本

    使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • Gemini 图片去水印

    基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online