第十五章: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架构:感知-思考-行动循环模型

Agent的核心能力

感知

理解用户意图和环境状态

规划

将复杂任务分解为子任务

执行

调用工具和API完成任务

记忆

存储和回忆历史信息

Agent工作流程

1

接收任务

用户输入任务描述

2

理解与规划

LLM理解任务,制定执行计划

3

选择工具

根据任务需要选择合适的工具

4

执行动作

调用工具执行具体操作

5

观察结果

获取执行结果,判断是否完成

6

返回结果

向用户返回最终结果或继续下一步

Agent工作流程:从感知到行动的完整执行循环

Agent的关键组件

组件 功能 说明
LLM(大脑) 理解、推理、决策 Agent的核心,负责理解任务和制定计划
工具(Tools) 执行具体操作 如搜索、计算、API调用、文件操作等
记忆(Memory) 存储信息 短期记忆(对话历史)和长期记忆(知识库)
规划(Planning) 任务分解与调度 将复杂任务拆解为可执行的子任务序列

常见的Agent类型

  • ReAct Agent:基于推理(Reasoning)和行动(Acting)交替的Agent模式
  • Plan-and-Execute Agent:先制定完整计划,再逐步执行
  • Multi-Agent:多个Agent协作完成复杂任务
  • AutoGPT:高度自主的Agent,可以自行设定目标和子任务

常见Agent框架:LangChain AgentsAutoGenCrewAIMetaGPT

ReAct模式详解

ReAct(Reasoning + Acting)是一种让LLM交替进行"思考"和"行动"的Agent模式。LLM先推理下一步该做什么(Thought),然后执行具体操作(Action),再观察结果(Observation),如此循环直到任务完成。

ReAct循环流程

ReAct 思考-行动-观察循环流程图
图15-1 ReAct循环:Thought(思考下一步)→ Action(调用工具执行)→ Observation(观察结果),循环往复直到任务完成
T

Thought(思考)

分析当前状态,决定下一步操作

A

Action(行动)

调用工具执行具体操作

O

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流程

1

定义工具

向LLM描述可用工具的名称、参数和功能

2

用户提问

用户输入问题

3

LLM决策

LLM判断是否需要调用工具,输出函数名和参数

4

执行函数

外部系统执行函数,返回结果给LLM

5

生成回答

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能否调整策略继续执行

推荐视频

如果你觉得文字讲解不够直观,推荐观看以下视频:

Agentic AI

作者:吴恩达

为什么推荐:Agent技术的权威讲解

点击观看

本章小结

  1. AI Agent是能够自主感知、规划、执行和记忆的AI系统,核心公式为 Agent = LLM + 工具 + 记忆 + 规划。
  2. ReAct模式通过Thought→Action→Observation的循环,让LLM能够交替推理和行动,是Agent最基础的工作模式。
  3. Function Calling是LLM调用外部工具的标准机制,通过结构化的函数定义和调用,让LLM能够获取实时信息和执行操作。
  4. LangChain提供了便捷的Agent构建框架,通过定义工具和提示词模板,可以快速搭建功能完整的Agent。
  5. Agent评估需关注任务完成率、工具调用准确率、响应时间、步骤效率和错误恢复能力等多个维度。

练习题

  1. ReAct模式中的三个核心步骤是什么?

    A. Input → Process → Output
    B. Thought → Action → Observation
    C. Plan → Execute → Evaluate
    D. Encode → Decode → Translate

    答案:B。ReAct(Reasoning + Acting)的核心循环是:Thought(思考下一步)→ Action(执行操作)→ Observation(观察结果),如此反复直到任务完成。

  2. Function Calling的主要作用是什么?

    A. 让LLM生成更长的文本
    B. 让LLM能够调用外部函数获取信息或执行操作
    C. 让LLM的训练速度更快
    D. 让LLM支持更多语言

    答案:B。Function Calling让LLM能够输出结构化的函数调用指令,由外部系统执行后返回结果,使LLM能够获取实时信息、执行计算等操作。

  3. 以下哪个不是Agent的核心组件?

    A. LLM(大脑)
    B. 工具(Tools)
    C. 数据标注平台
    D. 记忆(Memory)

    答案:C。Agent的核心组件包括LLM(大脑)、工具(执行操作)、记忆(存储信息)和规划(任务分解)。数据标注平台是训练阶段的工具,不是Agent的运行时组件。