当前位置: 首页 > news >正文

Langgraph中的agent与工具调用

文章目录

  • 一、agent到底是怎么知道 “要调用工具” 的?
  • 二、Agent决定调用工具后,它会做什么?
  • 三、图引擎怎么知道 “要去调用工具”?
  • 四、循环

一、agent到底是怎么知道 “要调用工具” 的?

  1. AI 知道要调用工具 = 你给它看了【工具说明书】
  2. 图引擎知道要调用工具 = AI 返回了【tool_calls 标记】
  • 因为 你绑定工具时,等于给了它一本说明书!
llm_with_tools=llm.bind_tools(tools)
  • 这句代码的真实作用不是 “让 AI 执行工具”,
    而是:把所有工具的名字、参数、功能,全部塞给 LLM 当提示词!
    比如:
你可以调用以下工具:4.update_patient_record:更新患者信息5.order_lab_test:开检查单 需要时请输出工具调用指令
  • 所以:AI 看到用户问题-> AI 查自己的 “工具列表”->AI 判断:我解决不了,必须用工具!→ AI 自己决定:我要调用工具

二、Agent决定调用工具后,它会做什么?

说是调用,实质是返回一条 “带特殊标记的消息”**

{"tool_calls":[{"name":"order_lab_test","parameters":{...}}]}

举个例子:

response=doctor_chain.invoke({"messages":state["messages"]})print(f"回复类型:{type(response)}")print(f"response的结果:{response}")ifhasattr(response,'tool_calls')andresponse.tool_calls:# ← 这里print(f"🔧 LLM 决定调用工具:{response.tool_calls}")else:print(f"💬 LLM 直接回复,无工具调用")

三、图引擎怎么知道 “要去调用工具”?

因为你的判断函数 看的就是这个标记!

def should_continue_doctor(state): last_message = state["messages"][-1]# 看这里!!!iflast_message.tool_calls:return"continue"# → 去工具节点else:return"end"

图引擎它只看一条:
最后一条消息里有没有 tool_calls?
有 → 去工具节点
没有 → 结束

四、循环

defshould_continue_doctor(state):messages=state["messages"]ifnotmessages:returnEND last_message=messages[-1]# 1. 如果有工具调用 → 去工具节点ifhasattr(last_message,'tool_calls')andlast_message.tool_calls:return"doctor_tools"# 2. 不需要工具 → 结束本轮,回到路由returnEND# 医生的条件边builder.add_conditional_edges("doctor",should_continue_doctor,{"doctor_tools":"doctor_tools",# 去工具END:END# 结束})# 工具执行完 → 自动回到医生builder.add_edge("doctor_tools","doctor")
http://www.jsqmd.com/news/643145/

相关文章:

  • 小白必看!6个AI大模型核心概念,用大白话教你快速入门,看完就能装懂!
  • 【算法日记】Day 15 动态规划专题——树状DP基础(三)
  • 钢制柱形散热器适配场景与实用性如何?
  • 新乡银河机械餐厨垃圾干化设备,处理一吨成本约100元
  • 稳压二极管在5种常见电路中的实战应用(附电路图详解)
  • 从Prompt到铂金单曲,AIAgent音乐工作流全拆解,2026奇点大会TOP3开源框架横向测评,错过再等三年!
  • 保姆级教程:在Ubuntu 22.04上为GDB手动添加glibc 2.35的调试符号与源码
  • 美胸-年美-造相Z-Turbo在机器学习教学中的应用:可视化案例集
  • 5分钟上手Llama Factory:可视化训练平台快速部署与使用
  • StructBERT-Large效果展示:社交媒体热评语义聚类与话题发现真实案例
  • 论文降AI太耗时?零成本大模型指令与4款主流工具测评
  • Node.js后端服务调用Phi-3-mini:构建AI中间层REST API实战
  • Qwen3.5-9B GPU优化:梯度检查点+序列并行降低显存峰值方案
  • PyTorch底层揭秘:c10::ArrayRef和at::IntArrayRef如何优化张量操作性能
  • 北航毕设论文排版终极指南:告别格式焦虑的完整解决方案
  • 什么是增值税发票
  • 从生活案例到统计检验:正态分布、卡方分布、t分布、F分布及其检验方法全解析
  • 独立站建站平台怎么选?新手一看就懂的选型指南|帮你少走弯路
  • AI核心知识119—大语言模型之 监督微调 (简洁且通俗易懂版)
  • Cursor Free VIP:终极解决方案,突破Cursor AI限制,免费享受Pro功能
  • 比斯特自动化动力电池组半自动生产线的工艺革新与效率提升
  • Vue前端集成Hunyuan-MT 7B:实时翻译Web应用开发实战
  • AIAgent情感陪伴不是拟人化,而是神经符号融合——2026奇点大会首席科学家亲授4步验证法
  • Qwen3在网络安全领域的应用:音视频内容安全审核字幕生成
  • 小白也能用!MedGemma医学影像分析系统快速部署教程
  • 告别机械音!用Step-Audio-EditX的标签魔法,为你的视频配音注入灵魂(附情绪/方言标签大全)
  • 2026最新数据抓取实战:如何用 ChatGPT 实现网页数据抓取?
  • **发散创新:基于Rust的内存安全防御技术实战解析**在现代软件开
  • 一站式教程:轻松修复msvcr120.dll丢失问题,提升电脑性能
  • BERT文本分割-中文-通用领域部署避坑指南:常见报错与解决方法