12 节课解锁 AI Agents,让AI替你打工(四):框架之实践篇

由于本章节内容较多,将会拆分成两篇文章进行讲解。第一篇是理论篇,主要介绍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")
  1. 为聊天机器人添加记忆

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

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        # ...(同上)
  1. 人机协同(Human in the Loop)

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

ini 复制代码
1graph = graph_builder.compile(

2    checkpointer=memory,

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

4)
  1. LangGraph实际应用场景

  • 智能客服

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

  • 研究助手

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

  • 个性化教育

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

  • 业务流程自动化

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

  1. 结论

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

学习资源推荐

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

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在智泊AI

相关推荐
bryceZh2 小时前
Agent-Skills使用指南
agent·cursor
_Johnny_4 小时前
PAC 分流配置文件使用指南
agent·proxy·pac
jerrywus4 小时前
我写了个 Claude Code Skill,再也不用手动切图传 COS 了
前端·agent·claude
Lsx_5 小时前
前端视角下认识 AI Agent 和 LangChain
前端·人工智能·agent
Tadas-Gao5 小时前
缸中之脑:大模型架构的智能幻象与演进困局
人工智能·深度学习·机器学习·架构·大模型·llm
一念杂记5 小时前
在线接收国外验证码的虚拟号码服务平台,支持API二次开发~
程序员
laplace01237 小时前
mcp和skills区别
agent·rag·mcp·skills
jerrywus9 小时前
一句话生成整套 API:我用 Claude Code 自定义 Skill + MCP 搞了个接口代码生成器
agent·claude
数据智能老司机9 小时前
用于构建多智能体系统的智能体架构模式——可解释性与合规性的智能体模式
人工智能·llm·agent