第十五章:AI智能体(Agent)
学习目标
- 理解AI智能体(Agent)的概念和核心能力
- 掌握Agent的工作流程和关键组件
- 理解ReAct模式和Function Calling机制
- 能够使用LangChain构建简单的Agent
- 了解Agent的评估维度
前置要求
建议先学习第十一章:大语言模型(LLM)详解,了解LLM的基本原理,因为Agent的核心"大脑"通常就是一个LLM。
什么是AI智能体(Agent)?
AI智能体(AI Agent)是一种能够自主感知环境、做出决策并执行动作的AI系统。与普通LLM只能"对话"不同,Agent可以主动使用工具、调用API、规划任务,像一个"数字员工"一样完成复杂工作。
简单理解
普通LLM就像一个"被关在房间里只能说话的专家",而Agent就像一个"可以走出门、使用工具、与人协作的全能助手"。Agent = LLM + 工具 + 记忆 + 规划能力。
Agent的核心能力
感知
理解用户意图和环境状态
规划
将复杂任务分解为子任务
执行
调用工具和API完成任务
记忆
存储和回忆历史信息
Agent工作流程
接收任务
用户输入任务描述
理解与规划
LLM理解任务,制定执行计划
选择工具
根据任务需要选择合适的工具
执行动作
调用工具执行具体操作
观察结果
获取执行结果,判断是否完成
返回结果
向用户返回最终结果或继续下一步
Agent的关键组件
| 组件 | 功能 | 说明 |
|---|---|---|
| LLM(大脑) | 理解、推理、决策 | Agent的核心,负责理解任务和制定计划 |
| 工具(Tools) | 执行具体操作 | 如搜索、计算、API调用、文件操作等 |
| 记忆(Memory) | 存储信息 | 短期记忆(对话历史)和长期记忆(知识库) |
| 规划(Planning) | 任务分解与调度 | 将复杂任务拆解为可执行的子任务序列 |
常见的Agent类型
- ReAct Agent:基于推理(Reasoning)和行动(Acting)交替的Agent模式
- Plan-and-Execute Agent:先制定完整计划,再逐步执行
- Multi-Agent:多个Agent协作完成复杂任务
- AutoGPT:高度自主的Agent,可以自行设定目标和子任务
常见Agent框架:LangChain Agents、AutoGen、CrewAI、MetaGPT
ReAct模式详解
ReAct(Reasoning + Acting)是一种让LLM交替进行"思考"和"行动"的Agent模式。LLM先推理下一步该做什么(Thought),然后执行具体操作(Action),再观察结果(Observation),如此循环直到任务完成。
ReAct循环流程
Thought(思考)
分析当前状态,决定下一步操作
Action(行动)
调用工具执行具体操作
Observation(观察)
获取工具返回的结果
ReAct示例
用户:北京今天天气怎么样?需要带伞吗?
Thought 1:用户想知道北京今天的天气和是否需要带伞。我需要先查询北京的天气信息。
Action 1:调用天气查询工具,参数:城市="北京"
Observation 1:北京今天:多云转小雨,气温18-25°C,降水概率70%
Thought 2:天气显示有小雨,降水概率70%,建议带伞。
Action 2:返回最终答案
Final Answer:北京今天多云转小雨,气温18-25°C,降水概率较高(70%),建议出门带伞。
Function Calling机制详解
Function Calling是让LLM能够调用外部函数(工具)的机制。LLM本身只能生成文本,但通过Function Calling,它可以输出结构化的函数调用指令,由外部系统执行后返回结果。
Function Calling流程
定义工具
向LLM描述可用工具的名称、参数和功能
用户提问
用户输入问题
LLM决策
LLM判断是否需要调用工具,输出函数名和参数
执行函数
外部系统执行函数,返回结果给LLM
生成回答
LLM根据函数结果生成最终回答
Function Calling示例:天气查询
工具定义:
函数名:get_weather,参数:city(字符串,城市名称),返回:天气信息JSON
用户:上海今天天气如何?
LLM输出:调用 get_weather(city="上海")
系统执行:返回 {"temp": 28, "condition": "晴", "humidity": 65}
LLM回答:上海今天天气晴朗,气温28°C,湿度65%,适合外出活动。
使用LangChain构建简单Agent
from langchain_community.llms import Ollama
from langchain.agents import create_react_agent, AgentExecutor
from langchain.tools import tool
# 1. 定义工具
@tool
def search(query: str) -> str:
"""搜索互联网获取信息。输入:搜索关键词。"""
return f"搜索'{query}'的结果:这是模拟的搜索结果。"
@tool
def calculator(expression: str) -> str:
"""计算数学表达式。输入:数学表达式字符串。"""
try:
result = eval(expression)
return f"计算结果:{result}"
except Exception as e:
return f"计算错误:{e}"
tools = [search, calculator]
# 2. 定义Agent提示词模板
prompt = """回答以下问题,你可以使用以下工具:
{tools}
工具名称:{tool_names}
请按照以下格式回答:
Thought: 我需要思考下一步做什么
Action: 工具名称
Action Input: 工具输入参数
Observation: 工具返回的结果(系统自动填充)
... (Thought/Action/Observation可以重复多次)
Thought: 我现在知道最终答案了
Final Answer: 最终答案
开始!
Question: {input}
Thought:{agent_scratchpad}"""
# 3. 创建Agent
llm = Ollama(model="qwen2.5:7b")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
# 4. 运行Agent
result = agent_executor.invoke({
"input": "2024年有多少天?请先搜索2024年是否是闰年,再计算。"
})
print(result["output"])
Agent评估维度
评估Agent的质量需要从多个维度综合考量:
| 评估维度 | 指标 | 说明 |
|---|---|---|
| 任务完成率 | 成功率 | Agent正确完成任务的比例,是最核心的指标 |
| 工具调用准确率 | 正确调用次数/总调用次数 | Agent选择正确工具和参数的能力 |
| 响应时间 | 平均耗时 | 从接收任务到返回结果的时间,影响用户体验 |
| 步骤效率 | 实际步骤数/最优步骤数 | Agent是否用最少的步骤完成任务 |
| 错误恢复能力 | 从错误中恢复的比例 | 工具调用失败时,Agent能否调整策略继续执行 |
本章小结
- AI Agent是能够自主感知、规划、执行和记忆的AI系统,核心公式为 Agent = LLM + 工具 + 记忆 + 规划。
- ReAct模式通过Thought→Action→Observation的循环,让LLM能够交替推理和行动,是Agent最基础的工作模式。
- Function Calling是LLM调用外部工具的标准机制,通过结构化的函数定义和调用,让LLM能够获取实时信息和执行操作。
- LangChain提供了便捷的Agent构建框架,通过定义工具和提示词模板,可以快速搭建功能完整的Agent。
- Agent评估需关注任务完成率、工具调用准确率、响应时间、步骤效率和错误恢复能力等多个维度。
练习题
-
ReAct模式中的三个核心步骤是什么?
A. Input → Process → Output
B. Thought → Action → Observation
C. Plan → Execute → Evaluate
D. Encode → Decode → Translate答案:B。ReAct(Reasoning + Acting)的核心循环是:Thought(思考下一步)→ Action(执行操作)→ Observation(观察结果),如此反复直到任务完成。
-
Function Calling的主要作用是什么?
A. 让LLM生成更长的文本
B. 让LLM能够调用外部函数获取信息或执行操作
C. 让LLM的训练速度更快
D. 让LLM支持更多语言答案:B。Function Calling让LLM能够输出结构化的函数调用指令,由外部系统执行后返回结果,使LLM能够获取实时信息、执行计算等操作。
-
以下哪个不是Agent的核心组件?
A. LLM(大脑)
B. 工具(Tools)
C. 数据标注平台
D. 记忆(Memory)答案:C。Agent的核心组件包括LLM(大脑)、工具(执行操作)、记忆(存储信息)和规划(任务分解)。数据标注平台是训练阶段的工具,不是Agent的运行时组件。