LangGraph入门教程:用Python构建你的第一个AI Agent
2026年被称为"AI Agent元年",越来越多的开发者开始学习如何构建自主AI代理。LangGraph是LangChain团队推出的一个强大的Python框架,专门用于构建有状态、多步骤的AI Agent工作流。本文将带你从零开始创建一个简单的智能助手Agent。
环境准备
首先安装所需依赖:
pip install langgraph langchain-openai python-dotenv
定义工具函数
Agent需要工具来执行任务。我们定义一个简单的天气查询工具:
from langchain_core.tools import tool
@tool
def get_weather(location: str) -> str:
"""根据城市名查询天气信息"""
weather_data = {
"北京": "晴,25°C",
"上海": "多云,28°C",
"深圳": "雷阵雨,30°C",
}
return weather_data.get(location, f"无法获取{location}的天气信息")
tools = [get_weather]
构建Agent图
LangGraph的核心是状态图(StateGraph)。我们创建一个简单的对话Agent:
from typing import TypedDict, Sequence
from langgraph.graph import StateGraph, END
from langgraph.prebuilt import ToolExecutor
from langchain_openai import ChatOpenAI
class AgentState(TypedDict):
messages: Sequence
model = ChatOpenAI(model="gpt-4o", temperature=0)
tool_executor = ToolExecutor(tools)
workflow = StateGraph(AgentState)
def call_model(state):
messages = state["messages"]
response = model.invoke(messages)
return {"messages": [response]}
def call_tool(state):
messages = state["messages"]
last_message = messages[-1]
tool_calls = last_message.additional_kwargs.get("tool_calls", [])
results = []
for tc in tool_calls:
result = tool_executor.invoke(tc)
results.append(result)
return {"messages": results}
workflow.add_node("agent", call_model)
workflow.add_node("action", call_tool)
workflow.set_entry_point("agent")
workflow.add_conditional_edges("agent", ...)
workflow.add_edge("action", "agent")
app = workflow.compile()
运行Agent
编译完成后,用以下代码执行Agent:
result = app.invoke({
"messages": [{"role": "user", "content": "北京的天气怎么样?"}]
})
print(result["messages"][-1].content)
核心概念解析
LangGraph的关键概念包括:StateGraph(状态图定义)用于描述Agent的工作流结构;Node(处理节点)代表每个执行步骤;Edge(连接边)定义执行顺序;Conditional Edge(条件跳转)根据当前状态决定下一步走向。Agent通过"思考→执行→观察→再思考"的循环来完成任务,每次循环都会更新状态,直到满足终止条件。
掌握了这些基础后,你可以进一步学习添加记忆机制(MemorySaver)、多Agent协作(Send API)、Human-in-the-loop(中断与恢复)等进阶功能。LangGraph的最新版本还支持流式输出和分布式执行,适合构建复杂的生产级AI应用。
参考资源:LangGraph官方文档 | LangChain GitHub | Towards Data Science教程
©️版权声明:若无特殊声明,本站所有文章版权均归AI工具集原创和所有,未经许可,任何个人、媒体、网站、团体不得转载、抄袭或以其他方式复制发表本站内容,或在非我站所属的服务器上建立镜像。否则,我站将依法保留追究相关法律责任的权利。