在过去的几天,我一直在思考如何以更简单更高效地形式学习 LangChain 和 LangGraph 1.0 的特性,好在让我探索出了一条道路:在做中学!前几天我发表了一篇关于 AgengHub 的文章《FastAPI+Streamlit打造一套智能体应用GUI展示平台》,这篇文章中介绍的 AgentHub 将是我们学习 LangChain/LangGraph 的实战项目,而本文所属系列的文章将会是侧重于理论的学习。我计划是二者可以相辅相成。
Agents 将语言模型与工具结合,用来创建能够对任务进行推理、决定使用哪些工具,并通过迭代方式完成解决方案的系统。
ReAct Agent 采用循环工作模式:当模型收到用户请求后,先进行推理,然后决定调用工具执行动作,工具返回观察结果(observation),接着模型再次推理——要么直接给出最终答案结束,要么继续调用工具直到达到迭代次数上限,形成闭环。
ReAct 是 Reasoning(推理) + Acting(行动)的缩写。
create_agent 提供了一个可投入生产环境使用的 Agent 实现。
create_agent 使用 LangGraph 构建一个基于图的 Agent 运行时。一个图由节点(步骤)和边(连接)组成,用来定义 agent 如何处理信息。Agent 会在图中移动,执行诸如模型节点(调用模型)、工具节点(执行工具)或中间件等节点。
我们将在本文学习使用 create_agent 搭建一个 RAG Agent。
初始化模型
首先我定义了 Agent 的推理引擎—— LLM。
我习惯于使用以 OpenAI API 兼容格式调用阿里云提供的千问系列模型。
这里的几个参数为:
model:要使用的模型名称,比如 qwen3-max
temperature:控制模型输出多样性,取值范围为0-1,数值越高,模型输出越多样
base_url:模型提供商的 API 地址
api_key:访问密钥,本地部署的模型不需要这个参数
其次我初始化了嵌入模型(Embedding Model),嵌入模型将文本、图像等非结构化数据转化为高维向量,使计算机能够理解内容之间的语义相似度,从而支持搜索、推荐、聚类、问答等核心功能。
定义工具
现在我们可以定义工具,工具赋予 Agent 执行动作的能力。Agent 超越了简单的“仅模型+工具绑定”模式,提供了以下能力:
一次提示触发多个工具的顺序调用
在合适的情况下进行并行工具调用
根据前一步的结果动态选择工具
工具重试逻辑与错误处理
跨工具调用时的状态持久化
可以看到定义工具非常简单——在常规的 Python 函数基础上加一个@tool 装饰器。
定义完工具后我将工具添加到了工具列表 tools 中。
定义系统提示词
创建 Agent
现在我们可以创建智能体了。
运行 Agent
就是这样,非常简单。
本文源码:
https://github.com/realyinchen/learn_langchain_langgraph/blob/main/langchain/quickstart.ipynb

