2026年LangGraph实战教程: 用Python构建AI Agent
随着AI Agent技术进入主流应用, 掌握Agent框架成为AI工程师必备技能。本教程带你使用Python和LangGraph构建一个具备Web搜索和计算能力的AI助手。
环境准备
pip install langgraph langchain-openai langchain-community tavily-pythonimport os
os.environ["OPENAI_API_KEY"] = "your-key"
os.environ["TAVILY_API_KEY"] = "your-key"第一步: 定义State
from typing import TypedDict, Annotated, List
from langgraph.graph import StateGraph, END
from langchain_core.messages import HumanMessage, AIMessage, SystemMessage
import operator
class AgentState(TypedDict):
messages: Annotated[List, operator.add]
next_step: str第二步: 构建工具函数
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_core.tools import tool
@tool
def web_search(query: str) -> str:
search = TavilySearchResults(max_results=3)
results = search.invoke(query)
return "\n".join([r["content"][:500] for r in results])
@tool
def calculate(expression: str) -> str:
try:
return f"Result: {eval(expression)}"
except Exception as e:
return f"Error: {str(e)}"
tools = [web_search, calculate]第三步: 构建LangGraph图
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-4o", temperature=0)
model_with_tools = model.bind_tools(tools)
def agent_node(state: AgentState) -> dict:
response = model_with_tools.invoke(state["messages"])
return {"messages": [response]}
def tool_node(state: AgentState) -> dict:
last_msg = state["messages"][-1]
for tc in last_msg.tool_calls:
if tc["name"] == "web_search":
result = web_search.invoke(tc["args"])
elif tc["name"] == "calculate":
result = calculate.invoke(tc["args"])
return {"messages": [AIMessage(content=str(result))]}
workflow = StateGraph(AgentState)
workflow.add_node("agent", agent_node)
workflow.add_node("tool", tool_node)
workflow.set_entry_point("agent")
def should_continue(state):
last = state["messages"][-1]
if hasattr(last, "tool_calls") and last.tool_calls:
return "tool"
return "end"
workflow.add_conditional_edges("agent", should_continue, {"tool": "tool", "end": END})
workflow.add_edge("tool", "agent")
app = workflow.compile()第四步: 运行Agent
result = app.invoke({
"messages": [
SystemMessage(content="You are a helpful AI assistant."),
HumanMessage(content="Search latest AI funding news for May 2026")
]
})
print(result["messages"][-1].content)进阶: 添加记忆功能
from langgraph.checkpoint import MemorySaver
memory = MemorySaver()
app_with_memory = workflow.compile(checkpointer=memory)
config = {"configurable": {"thread_id": "session_1"}}最佳实践
- 安全优先: 设置工具权限边界, 参考微软AI Agent安全工具
- 可观测性: 使用LangSmith记录推理过程
- 降级策略: 工具调用失败时设计优雅降级
- 成本控制: 设置最大推理步数防无限循环
LangGraph v0.5+已支持分布式执行和子Agent模式。掌握这些基础将为AI工程发展奠定基础。
©️版权声明:若无特殊声明,本站所有文章版权均归AI工具集原创和所有,未经许可,任何个人、媒体、网站、团体不得转载、抄袭或以其他方式复制发表本站内容,或在非我站所属的服务器上建立镜像。否则,我站将依法保留追究相关法律责任的权利。