本文通过一个完整的 LangChain 实例,讲解 AI Agent 的核心工作机制,并从 ReAct 推理范式出发,展示 Agent 如何进行思考、工具调用与记忆管理。

在上一篇博客中,我们已经介绍了 AI Agent 所依赖的前置知识,包括大模型、工具调用和基础推理能力。本篇将进一步通过一个完整可运行的示例,来说明:一个 AI Agent 到底是如何被构建出来的,它在执行过程中究竟在做什么。

自己构建一个Agent?Agent到底再干嘛?_自己本地搭建ai模型agent开发是什么意思-CSDN博客https://blog.csdn.net/2401_84080967/article/details/157618055?spm=1001.2014.3001.5502

一 )ReAct 模式

在构建 Agent 之前,首先需要理解一个非常重要的推理范式:ReAct(Reasoning and Acting)。

1.1 什么是 ReAct?

ReAct 并不是某种框架或组件,而是一种 推理-行动循环模式。在这种模式下,大模型不再一次性生成答案,而是按照如下流程不断循环:

  • 思考 Thought  分析当前问题,判断下一步该做什么
  • 行动 Action 调用某个工具或执行某个操作 
  • 观察 Observation 获取工具返回的结果
  • 答案 Final Answer 当信息足够时,输出最终结论

这种模式的核心价值在于:将语言模型的推理能力与外部工具的执行能力结合起来。

ReAct 并不是一个固定的模块划分,而是一种让 LLM 在 思考(Thought)—行动(Action)—观察(Observation) 之间循环的推理模式,直到模型认为可以给出最终答案(Final Answer)。

二 )什么是 Agent ? 

2.1 Agent 的本质

一个 AI Agent 并不等同于一次 LLM 调用,它通常具备以下特征:

  • 能够根据目标进行 多步推理
  • 能够 自主选择并调用工具
  • 能够在多轮交互中 维护状态(记忆)

基本可以这么认为,ReAct 负责怎么想,Agent 负责怎么做,ReAct 规定好的解决用户问题的流程,一个问题被解决必须经过 ReAct 规定好步骤;至于 ReAct 规定好的每一步怎么完成,需要通过 LLM 来实现。

2.2 使用 LangChain 构建第一个 Agent

Agent 是一种通用的系统设计思想,而 LangChain 只是其中一个实现框架,本文这里使用 LangChain 框架进行构建 Agent,对于 LangChain 相关技术的详细探讨之后会出有详细的博客进行讲解。

① 定义一个 LLM

首先定义一个用于推理和决策的大模型,这里使用 Azure OpenAI 提供的 Chat 模型,该 LLM 将作为 Agent 的“大脑”,负责分析问题并决定是否调用工具。

from langchain.agents import initialize_agent
from langchain.agents import AgentType
from langchain_openai import AzureChatOpenAI
from langchain_community.agent_toolkits.load_tools import load_tools
from dotenv import load_dotenv
import os

load_dotenv("peizhi.env")

endpoint = os.getenv("ENDPOINT")
deployment = os.getenv("DEPLOYMENT")
api_key = os.getenv("SUBSCRIPTION_KEY")
api_version = os.getenv("API_VERSION", "2025-01-01-preview")

if not all([endpoint, deployment, api_key]):
    raise RuntimeError("ENDPOINT/DEPLOYMENT/SUBSCRIPTION_KEY 未配置,检查 peizhi.env")

# 定义 llm
llm = AzureChatOpenAI(
    azure_endpoint=endpoint,
    api_key=api_key,
    api_version=api_version,
    azure_deployment=deployment,
    temperature=0.2,
)

为 Agent 配置可调用工具

serpapi_api_key = os.getenv("SERPAPI_API_KEY")
tool_names = ["llm-math"]
if serpapi_api_key:
    tool_names.insert(0, "serpapi")
    tools = load_tools(tool_names, llm=llm, serpapi_api_key=serpapi_api_key)
else:
    tools = load_tools(tool_names, llm=llm)
    print("提示:未配置 SERPAPI_API_KEY,已跳过 serpapi 工具;如果需要联网搜索,把 SERPAPI_API_KEY=... 写到 peizhi.env")

这里举例使用了 "llm-math" 能力和 "serpapi" 实时上网的能力,Agent 的关键能力之一,是能够调用外部工具。这里配置两个工具:

  • serpapi:用于实时搜索

  • llm-math:用于数学计算

这些工具本质上是 LLM 可调用的函数接口,Agent 会在推理过程中自行决定是否使用它们。

③ 实例化一个 Agent

agent = initialize_agent(
    tools,  
    llm,
    agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,  # 这里有不同的类型
    verbose=True,  # 是否打印日志
    handle_parsing_errors=True,
)

print(agent.invoke({"input": "Iphone 15 价格的平方是多少?"}))

ZERO_SHOT_REACT_DESCRIPTION 表示使用 ReAct 推理范式,并通过工具描述让模型零样本理解如何使用工具。

2.3 执行过程分析

当输入问题:

Iphone 15 价格的平方是多少?

Agent 的执行流程如下:

  1. Thought:判断需要先获取年龄信息

  2. Action:调用搜索工具

  3. Observation:得到售价为 5999

  4. Thought:需要进行数学计算

  5. Action:调用计算工具

  6. Observation:得到结果 35999001

  7. Final Answer:输出最终答案

LangChain 框架首先使用LLM分析问题,然后采取行动 Action ,搜索年龄,通过观察 Obsservation 得到售价为 5999 元;然后 Thought,Action 调用计算工具 Calculate ,观察计算结果为 35988001 ;然后 Thought ,发现不需要 采取行动 Action ,即直接得到 Final Answer。

三) 给 Agent 添加记忆 Memery

如果说前面的 Agent 只能完成一次任务,那么 Memory 让 Agent 具备了持续交互能力。主要的实现方式就是通过 Langchain 中的 memory 组件来实现

from langchain.memory import ConversationBufferMemory

# 记忆组件
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# 修改:初始化 Agent 时传入 memory 参数
agent = initialize_agent(
    tools,  
    llm,
    agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
    verbose=True,
    handle_parsing_errors=True,
    memory=memory,  # 新增:传入记忆组件
)

# 测试1:初始问题
print("===== 第一次提问 =====")
result1 = agent.invoke({"input": "Iphone 15 价格的平方是多少?"})
print(result1)

# 测试2:基于上下文的提问(验证记忆是否生效)
print("\n===== 第二次提问(依赖上下文) =====")
result2 = agent.invoke({"input": "刚才我问了什么问题?"})
print(result2)

将该 memory 注入 Agent 后,模型就可以在后续问题中引用之前的上下文。测试结果表明,第二次提问可以正确基于第一次的计算结果进行推理,说明记忆机制已经生效。

测试结果:

AI Agent 的核心不在于对话本身,而在于通过 ReAct 推理范式,将大模型的思考能力与工具执行和记忆机制结合,构建一个真正可持续决策与行动的智能体。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐