2026年AI 编程 6:LangGraph Agent 模式 - 让 AI 自主使用工具

AI 编程 6:LangGraph Agent 模式 - 让 AI 自主使用工具作者 WangQiaomei 版本 1 0 2026 3 16 核心亮点 AI 自主分析问题 选择工具 执行操作 输出结果 告别 只会嘴说不会动手 的尴尬 你是否遇到过 AI 能看懂数学题 但算不对复杂运算 AI

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。



作者:WangQiaomei版本:1.0(2026/3/16)

核心亮点:AI 自主分析问题→选择工具→执行操作→输出结果,告别 "只会嘴说不会动手" 的尴尬!

你是否遇到过:

  • AI 能看懂数学题,但算不对复杂运算?
  • AI 知道要查天气,却不会调用天气 API?
  • AI 想分析数据,却不会用 Excel / 数据库工具?

LangGraph Agent 模式 完美解决这个问题:✅ 让 AI 拥有 "动手能力",自主选择并调用工具完成任务✅ 支持多轮工具调用(比如先加法→再乘法)✅ 通用架构,换工具就能适配天气、股票、翻译等场景

本文以 "AI 自主计算数学题" 为例,手把手教你搭建能 "使用工具" 的智能体!


预览

查看代码

用户输入:(3 + 5) × 12 = ?

回到AI节点确认结果

需要工具吗?

执行add(3,5)=8 → multiply(8,12)=96

输出最终答案:96

 flowchart TD A["用户输入:(3 + 5) × 12 = ?"] --> B["llm_call(AI思考节点)"] B["分析问题,决定调用add+multiply工具"] --> C{需要工具吗?} C -->|✅ 是| D["tool_executor(工具执行节点)"] D["执行add(3,5)=8 → multiply(8,12)=96"] --> B["回到AI节点确认结果"] C -->|❌ 否| E["输出最终答案:96"] 

用户输入:(3 + 5) × 12 = ?

回到AI节点确认结果

需要工具吗?

执行add(3,5)=8 → multiply(8,12)=96

输出最终答案:96

工作流炸裂亮点

  • 自主决策:AI 自己判断该用什么工具,无需人工指令
  • 闭环迭代:工具执行完自动返回 AI 验证,确保结果正确
  • 无限扩展:加减乘除只是开始,API / 数据库 / 爬虫都能接!

python

运行

GPT plus 代充 只需 145 # -*- coding: utf-8 -*- """ 作者:WangQiaomei 版本:1.0(2026/3/18) """ # ==================== 1. 定义AI可用的工具(核心!) ==================== # @tool装饰器:把普通函数变成AI能看懂、能调用的工具 @tool def multiply(a: int, b: int) -> int: """Multiply `a` and `b`. (AI靠这个描述理解工具用途) Args: a: First int b: Second int """ return a * b @tool def add(a: int, b: int) -> int: """Adds `a` and `b`. Args: a: First int b: Second int """ return a + b @tool def divide(a: int, b: int) -> float: """Divide `a` and `b`. Args: a: First int b: Second int """ return a / b # 把工具绑定到LLM,让AI知道"我有这些工具可用" tools = [add, multiply, divide] tools_by_name = {tool.name: tool for tool in tools} llm_with_tools = llm.bind_tools(tools) # 关键一步! # ==================== 2. 定义全局状态 ==================== class State(TypedDict): # 消息列表自动累加,支撑多轮工具调用 messages: Annotated[list, operator.add] # ==================== 3. 核心节点函数 ==================== def llm_call(state: State): """AI思考节点:分析问题,决定调用哪个工具""" response = llm_with_tools.invoke(state["messages"]) return {"messages": [response]} def tool_executor(state: State): """工具执行节点:执行AI指定的工具调用""" last_message = state["messages"][-1] results = [] # 遍历AI要求调用的所有工具 for tool_call in last_message.tool_calls: tool_name = tool_call["name"] tool_args = tool_call["args"] # 找到工具并执行 tool_fn = tools_by_name[tool_name] result = tool_fn.invoke(tool_args) # 封装工具执行结果,让AI能识别 results.append(ToolMessage( content=str(result), tool_call_id=tool_call["id"] )) return {"messages": results} # ==================== 4. 条件路由:控制流程走向 ==================== def should_continue(state: State): """判断是否需要继续调用工具""" last_message = state["messages"][-1] # 没有工具调用请求 → 结束流程 if not last_message.tool_calls: return "end" # 有工具调用请求 → 执行工具 return "continue" # ==================== 5. 构建Agent工作流 ==================== agent_builder = StateGraph(State) # 添加核心节点 agent_builder.add_node("llm_call", llm_call) # AI思考 agent_builder.add_node("tool_executor", tool_executor) # 工具执行 # 配置流程走向 agent_builder.add_edge(START, "llm_call") # 开始 → AI思考 agent_builder.add_conditional_edges( "llm_call", should_continue, { "continue": "tool_executor", # 需要工具 → 执行工具 "end": END # 无需工具 → 结束 } ) agent_builder.add_edge("tool_executor", "llm_call") # 工具执行完 → 回到AI # 编译工作流 agent = agent_builder.compile() # 可视化工作流(可选,需要网络) try: display(Image(agent.get_graph().draw_mermaid_png())) except Exception as e: print(f"可视化失败(不影响运行):{e}") # ==================== 6. 运行测试 ==================== if __name__ == "__main__": # 测试题:让AI自主计算 (3 + 5) × 12 question = "What is (3 + 5) * 12?" # 执行Agent result = agent.invoke({"messages": [HumanMessage(content=question)]}) # 输出结果 print(f" 问题:{question}") print(f" 答案:{result['messages'][-1].content}") 

1. @tool 装饰器:AI 工具的 "身份证"

python

运行

 @tool def add(a: int, b: int) -> int: """Adds `a` and `b`.(AI靠这个注释理解工具用途)""" return a + b 
  • ✨ 作用:把普通 Python 函数标记为 AI 可调用工具
  • ✨ 关键:函数注释必须清晰,AI 靠这个判断该什么时候用这个工具

2. llm.bind_tools (tools):给 AI"装备库"

python

运行

GPT plus 代充 只需 145 llm_with_tools = llm.bind_tools(tools) 
  • ✨ 核心:告诉 AI"你现在有加法、乘法、除法这三个工具可用"
  • ✨ 效果:AI 思考时会自动判断该调用哪个工具,无需你手动指定

3. 条件路由:Agent 的 "决策大脑"

python

运行

 def should_continue(state: State): if not last_message.tool_calls: return "end" # 没工具要调用 → 结束 return "continue" # 有工具要调用 → 执行 
  • ✨ 作用:实现 Agent 的闭环迭代,直到任务完成
  • ✨ 场景扩展:可自定义迭代次数限制,避免无限循环

plaintext

GPT plus 代充 只需 145  问题:What is (3 + 5) * 12?  答案:The result of $(3 + 5) imes 12$ is 96. 
  • AI 会先调用add(3,5)得到 8,再调用multiply(8,12)得到 96
  • 最终返回格式化的答案,全程无需人工干预!

表格

场景 改造思路  天气查询 把工具换成「调用天气 API」,让 AI 自主查指定城市天气  股票分析 把工具换成「获取股票数据」,让 AI 自主分析涨跌  翻译工具 把工具换成「调用翻译 API」,让 AI 自主翻译多语言 藺 爬虫工具 把工具换成「网页爬虫」,让 AI 自主爬取指定内容

  1. API Key 替换:一定要把代码中的你自己的API_KEY换成阿里云百炼的真实 Key
  2. 工具注释清晰:AI 靠注释理解工具用途,注释写得越清楚,工具调用越准确
  3. 参数类型匹配:工具函数的参数类型(如 int/float)要和 AI 传入的参数一致
  4. 迭代次数限制:复杂场景建议添加max_iterations,避免 Agent 无限循环调用工具

Agent 模式是 LangGraph 最具颠覆性的玩法,核心价值在于:

  1. 让 AI 从 "语言模型" 升级为 "智能体",拥有 "思考 + 行动" 能力;
  2. 工具化架构无限扩展,适配几乎所有实际业务场景;
  3. 闭环迭代确保结果准确,比单纯的 LLM 输出靠谱 10 倍!

下次遇到需要 AI"动手" 的场景,别再手动写逻辑了,直接用 Agent 模式让 AI 自己搞定!

想要进阶教程?留言告诉我:✅ 如何添加工具调用次数限制✅ 如何接入第三方 API 工具(如天气 / 股票)✅ 如何给 Agent 添加记忆功能

小讯
上一篇 2026-03-20 15:44
下一篇 2026-03-20 15:42

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/243858.html