最近 AI 领域最火的概念之一,莫过于 Agentic AI。我们正从那种只会一问一答的聊天机器人,快速迈向能够独立思考、规划、甚至执行复杂任务的 AI 代理。你可以把它想象成一个数字助理,它不光会聊天,还能真的帮你把事儿办了。
但问题也随之而来。传统的大模型(LLM)应用开发方式,往往缺乏记忆、难以适应新情况,并且在处理需要多个工具协作的复杂任务时显得力不从心。写出来的 Agent 经常像个不受控制的“野孩子”,行为难以预测,调试起来更是头疼。
这时候,LangGraph 就派上用场了。它是一个帮助开发者为 Agent 系统设计结构化、可靠工作流的框加。说白了,它给 AI Agent 的行为套上了一个“图”结构的缰绳,让 AI 不再是天马行空,而是沿着我们设计的路径去思考和行动。
这篇文章,我们就来聊聊什么是 Agentic AI,LangGraph 是如何帮助我们构建这种应用的,并一步步带你上手实践。
什么是 Agentic AI?它和普通 chatbot 有啥区别?
我们来设想一个场景:你对一个 AI 说,“帮我规划一个去云南的周末旅行”。
一个普通的聊天机器人,可能会给你甩一堆热门景点的列表。一个加了 RAG(检索增强生成)功能的,可能会好一点,能给你整理一个简单的行程草稿。
但 Agentic AI 完全是另一个层面的东西。它更像一个能解决问题的初级助理。它会把你的大目标拆解成一个个小任务:
- 目标导向规划:它会把“规划旅行”拆解成查机票、订酒店、看天气、推荐活动等子任务。
- 多步推理:如果你补充说,“预算要友好,而且我是个素食主义者”,它不会懵。它能在多个步骤间进行推理,筛选符合价格的酒店,同时检查餐厅评价,最后把这些信息整合成一个为你量身定制的方案。
- 自主决策:如果在执行中发现你看中的酒店没房了,它不会停下来等你指示。它会自主调整计划,自动选择下一个最优选项。
- 工具调用:它能接入外部工具,比如调用实时航班查询 API、从地图服务抓取餐厅评论,或者检查天气预报。这让它的能力远远超出了自身训练数据的限制。
简单对比一下:
- 传统 Chatbot:像个酒店前台,只能回答“早餐八点开始”这类预设好的问题。
- RAG Chatbot:像个图书管理员,能帮你查资料并总结,但不会采取行动。
- Agentic AI:像个经验丰富的旅行规划师,听懂你的需求,思考步骤,调用资源,适应变化,最后交付一个完整、可执行的成果。

LangGraph:给 Agent 的“野马”套上图的“缰绳”
LangGraph 是一个基于 LangChain 构建的开源框架,它允许开发者把 AI 的工作流设计成图(Graph)。
为什么图这么重要?因为传统的 AI Agent 往往行为不可预测,开发者很难精确控制它的思考路径。LangGraph 通过引入图结构,把 Agent 的工作流程可视化、结构化了。
在这个图里:
- 节点(Nodes):代表工作流中的一个具体步骤,比如调用 LLM 进行推理、使用某个工具(像计算器或搜索引擎)、或者更新内存。
- 边(Edges):代表节点之间的逻辑流向。你可以定义,在某个节点完成后,下一步应该去哪个节点。

这种方式解决了几个核心痛点:
- 状态化和结构化:上下文和记忆可以在整个图的执行过程中被保留和传递。
- 确定性推理路径:让 Agent 的行为更加可靠,更容易调试。
- 可视化:开发者能清楚地看到系统是如何一步步进行推理的。
LangGraph vs. LangChain
很多人会问,既然有了 LangChain,为什么还需要 LangGraph?
简单来说,LangChain 提供了构建 LLM 应用的“积木块”,而 LangGraph 则提供了把这些积木块组织起来的“蓝图”。LangChain 的 Agent 实现有时过于自由,容易失控。LangGraph 则通过图结构强制施加了约束,特别适合构建需要循环、分支和复杂逻辑的 Agentic 系统。

上手实践:构建一个简单的计算器 Agent
废话不多说,我们来写点代码。下面这个例子里,我们要构建一个 Agent,它能判断用户的问题是普通对话还是数学计算。如果是数学计算,它就调用计算器工具;否则,直接回答。
1. 定义状态(State)
首先,我们要定义一个“状态”对象,它像一个共享的记事本,在图的各个节点之间传递信息。
# State 是一个字典,用来在图的节点间传递数据
class State(dict):
question: str # 用户问题
expression: str # 需要计算的表达式
answer: str # 最终答案
2. 初始化 LLM 和工具
我们需要一个 LLM 来做决策,以及一个计算器工具。
from langchain_openai import ChatOpenAI
from langchain_community.tools import Calculator
# 确保你已经设置了 OPENAI_API_KEY 环境变量
llm = ChatOpenAI(model="gpt-4o-mini")
calculator = Calculator()
3. 定义节点(Nodes)
我们创建两个节点:一个 LLM 节点用来决策,一个计算器节点用来执行计算。
# LLM 节点:负责决策
def call_llm(state: State):
q = state["question"]
# 一个简单的提示,让 LLM 判断是否需要用计算器
prompt = f"请回答问题。如果问题是数学计算,请以 'USE_CALCULATOR: <表达式>' 的格式回应。\n\n问题: {q}"
response = llm.invoke(prompt)
# 如果 LLM 决定用计算器
if "USE_CALCULATOR:" in response.content:
expression = response.content.split("USE_CALCULATOR:")[1].strip()
# 更新状态,把表达式传给下一个节点
return {"expression": expression}
else:
# 否则直接给出答案
return {"answer": response.content}
# 计算器节点:负责执行
def use_calculator(state: State):
result = calculator.run(state["expression"])
return {"answer": f"计算结果是 {result}"}
4. 构建图(Graph)
现在,把节点和它们之间的逻辑流(边)组装起来。
from langgraph.graph import StateGraph, END
# 创建一个状态图
workflow = StateGraph(State)
# 添加节点
workflow.add_node("llm_node", call_llm)
workflow.add_node("calculator_node", use_calculator)
# 设置图的入口点
workflow.set_entry_point("llm_node")
# 添加条件边(Conditional Edges)
# 这是 LangGraph 的核心,根据 llm_node 的输出状态,决定下一步去哪
workflow.add_conditional_edges(
"llm_node",
# 这个 lambda 函数检查状态中是否有 'expression' 字段
lambda state: "calculator_node" if "expression" in state else END,
{
"calculator_node": "calculator_node", # 如果有,就去 calculator_node
END: END # 如果没有,就结束 (END)
}
)
# 从计算器节点到结束
workflow.add_edge("calculator_node", END)
# 编译图,得到一个可执行的应用
app = workflow.compile()
5. 运行 Agent
让我们用两个不同的问题来测试它。
# 测试 1: 普通问题
result1 = app.invoke({"question": "日本的首都是哪里?"})
print(result1["answer"])
# 输出: 东京是日本的首都。
# 测试 2: 数学问题
result2 = app.invoke({"question": "456 乘以 789 等于多少?"})
print(result2["answer"])
# 输出: 计算结果是 359784
你可以看到,我们的 Agent 成功地根据问题的类型,选择了正确的执行路径。这就是 LangGraph 的威力:将复杂的逻辑流程,用清晰的图结构固定下来。

搭建你的开发环境
要在自己的机器上跑起来,你需要做一些简单的环境配置。
-
安装 Python:确保你的系统里有 Python 3.9 或更高版本。
-
创建虚拟环境(推荐):
python3 -m venv langgraph-env source langgraph-env/bin/activate -
安装依赖库:
pip install --upgrade pip # langgraph, langchain, openai 是核心库 # pygraphviz, matplotlib 等是可选的,用于可视化你的图 pip install langgraph langchain langchain_openai langchain_community pygraphviz matplotlib networkx graphviz -
配置 API Key: 你需要一个 LLM 的 API Key,比如 OpenAI 的。把它设置成环境变量。
export OPENAI_API_KEY="your_api_key_here"到这里,你的环境就准备好了。
结语
Agentic AI 正在把我们与 AI 的交互方式推向一个新的高度。它不再是简单的信息检索工具,而是真正开始具备解决问题的能力。但能力越强,责任越大,对系统的可靠性和可控性的要求也越高。
LangGraph 正是为此而生。它把软件工程中成熟的“图”和“状态机”思想引入到 AI Agent 的开发中,让我们可以构建出行为更加确定、更容易调试和维护的复杂 AI 系统。我个人认为,这代表了 AI 应用开发的一个重要方向:从“炼丹”式的调参,走向更加严谨和工程化的开发模式。
如果你对这个领域感兴趣,下一步可以尝试:
- 接入更多的工具:比如搜索引擎、数据库查询工具等。
- 设计更复杂的图:尝试构建一个包含多个循环和分支的 Agent。
- 探索多 Agent 协作:让不同的 Agent 在一个图中协同工作,解决更大的问题。
希望这篇文章能帮你敲开 Agentic AI 和 LangGraph 的大门。
关于
关注我获取更多资讯