由于本章节内容较多,将会拆分成两篇文章进行讲解。第一篇是理论篇,主要介绍Agentic框架机器对比、核心概念和原理;第二篇是实战篇,将通过实际案例演示如何使用LangGraph构建聊天机器人,并探讨其在实际应用中的优势。
本篇为实战篇。
5. LangGraph实战
5.1 安装
在终端中运行以下命令安装LangGraph:
1pip install -U langgraph
5.2 创建基础聊天机器人
1. 导入库
javascript
1from typing import Annotated
2from typing_extensions import TypedDict
3from langgraph.graph import StateGraph, START, END
4from langgraph.graph.message import add_messages
2. 定义状态结构
arduino
1class State(TypedDict):
2 messages: Annotated[list, add_messages]
3
4graph_builder = StateGraph(State)
3. 初始化LLM
ini
1from langchain_anthropic import ChatAnthropic
2
3llm = ChatAnthropic(model="claude-3-5-sonnet-20240620")
4. 创建聊天机器人节点
arduino
1def chatbot(state: State):
2 response = llm.invoke(state["messages"])
3 return {"messages": [response]}
4
5graph_builder.add_node("chatbot", chatbot)
5. 定义入口和终点
sql
1graph_builder.add_edge(START, "chatbot")
2graph_builder.add_edge("chatbot", END)
6. 编译图
ini
1graph = graph_builder.compile()
7. 可视化图结构
css
1from IPython.display import Image, display
2
3try:
4 display(Image(graph.get_graph().draw_mermaid_png()))
5except Exception:
6 pass

8. 运行聊天机器人
css
1while True:
2 user_input = input("User: ")
3 if user_input.lower() in ["quit", "exit", "q"]:
4 print("Goodbye!")
5 break
6
7 for event in graph.stream({"messages": [("user", user_input)]}):
8 for value in event.values():
9 print("Assistant:", value["messages"][-1].content)
5.3 高级技巧:工具集成
增强聊天机器人能力,使其支持网络搜索(需Tavily API密钥):
scss
1from langchain_community.tools.tavily_search import TavilySearchResults
2
3tool = TavilySearchResults(max_results=2)
4tools = [tool]
5llm_with_tools = llm.bind_tools(tools)
6
7def chatbot(state: State):
8 return {"messages": [llm_with_tools.invoke(state["messages"])]}
9
10graph_builder.add_node("chatbot", chatbot)
11
12tool_node = ToolNode(tools=[tool])
13graph_builder.add_node("tools", tool_node)
14
15graph_builder.add_conditional_edges("chatbot", tools_condition)
16graph_builder.add_edge("tools", "chatbot")

- 为聊天机器人添加记忆
通过检查点系统实现对话历史记忆:
ini
1from langgraph.checkpoint.memory import MemorySaver
2
3memory = MemorySaver()
4graph = graph_builder.compile(checkpointer=memory)
5
6config = {"configurable": {"thread_id": "1"}} # 每个thread_id对应独立对话历史
7
8while True:
9 user_input = input("User: ")
10 # ...(同上)
11 for event in graph.stream({"messages": [("user", user_input)]}, config):
12 # ...(同上)
- 人机协同(Human in the Loop)
在工具调用前暂停流程,允许人工审核:
ini
1graph = graph_builder.compile(
2 checkpointer=memory,
3 interrupt_before=["tools"] # 在调用工具前中断
4)

- LangGraph实际应用场景
-
智能客服
记忆用户订单历史,处理退货或升级问题。
-
研究助手
自动检索论文,总结关键发现。
-
个性化教育
动态调整学习计划,推荐资源。
-
业务流程自动化
文档审批、数据分析和项目管理。
- 结论
AI Agent 框架正在重塑AI系统的构建方式,使自主 Agent 能够动态推理、规划和交互。通过对比主流框架并深入剖析LangGraph的图结构与状态管理机制,我们展示了如何构建具备记忆、工具集成和人机协同能力的复杂系统。随着技术进步,这类框架将成为开发自适应、交互式AI应用的核心工具,推动从静态流程到动态智能的范式转变。
学习资源推荐
如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。
本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI。