本篇为实战篇。

5. LangGraph实战


5.1 安装

在终端中运行以下命令安装LangGraph:

1pip install -U langgraph

5.2 创建基础聊天机器人

1. 导入库

1from typing import Annotated
​
2from typing_extensions import TypedDict
​
3from langgraph.graph import StateGraph, START, END
​
4from langgraph.graph.message import add_messages

2. 定义状态结构

1class State(TypedDict):
​
2    messages: Annotated[list, add_messages]
​
34graph_builder = StateGraph(State)

3. 初始化LLM

1from langchain_anthropic import ChatAnthropic
​
2
​
3llm = ChatAnthropic(model="claude-3-5-sonnet-20240620")

4. 创建聊天机器人节点

1def chatbot(state: State):
​
2    response = llm.invoke(state["messages"])
​
3    return {"messages": [response]}
​
45graph_builder.add_node("chatbot", chatbot)

5. 定义入口和终点

1graph_builder.add_edge(START, "chatbot")
​
2graph_builder.add_edge("chatbot", END)

6. 编译图

1graph = graph_builder.compile()

7. 可视化图结构

1from IPython.display import Image, display23try:
​
4    display(Image(graph.get_graph().draw_mermaid_png()))
​
5except Exception:
​
6    pass

8. 运行聊天机器人

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密钥):

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")

  1. 为聊天机器人添加记忆

通过检查点系统实现对话历史记忆:

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        # ...(同上)

7. 人机协同(Human in the Loop)


在工具调用前暂停流程,允许人工审核:

1graph = graph_builder.compile(

2    checkpointer=memory,

3    interrupt_before=["tools"]  # 在调用工具前中断

4)

  1. LangGraph实际应用场景

  • 智能客服

    记忆用户订单历史,处理退货或升级问题。

  • 研究助手

    自动检索论文,总结关键发现。

  • 个性化教育

    动态调整学习计划,推荐资源。

  • 业务流程自动化

    文档审批、数据分析和项目管理。

  1. 结论

AI Agent 框架正在重塑AI系统的构建方式,使自主 Agent 能够动态推理、规划和交互。通过对比主流框架并深入剖析LangGraph的图结构与状态管理机制,我们展示了如何构建具备记忆、工具集成和人机协同能力的复杂系统。随着技术进步,这类框架将成为开发自适应、交互式AI应用的核心工具,推动从静态流程到动态智能的范式转变。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]