`create_agent` 没报错,但 Agent 就是不调工具
📅 2026/7/4 3:17:29
👁️ 次浏览
学会写 Tool 之后我以为 Agent 会顺理成章地工作把模型和工具丢给create_agent它就能自己决定什么时候调用什么。结果它根本没按我想的走。有时候自己硬答有时候调了 Tool 但参数不对有时候甚至连 Tool 看都不看一眼。create_agent明明没报错但效果就是不对。这篇文章记录我理解 Agent 到底怎么思考的过程。一、我当时想干什么我已经有了两个 Tooladd(a, b)做加法search(query)模拟搜索我想让 Agent 完成这样的任务“3 5 等于几再搜索一下 LangChain 最新动态。”期望 Agent 自己判断先调用add再调用search最后综合回答。我写的代码fromlangchain.agentsimportcreate_agentfromlangchain_core.toolsimporttoolfromlangchain_openaiimportChatOpenAItooldefadd(a:int,b:int)-int:计算两个数的和returnabtooldefsearch(query:str)-str:搜索信息returnf关于{query}的搜索结果...llmChatOpenAI(modeldeepseek-chat,temperature0,openai_api_key你的 api key,openai_api_basehttps://api.deepseek.com/v1,)agentcreate_agent(modelllm,tools[add,search],)看起来没问题但运行后 Agent 有时候直接心算358根本不调add。二、我写的代码后来我加了一个system_prompt事情开始好转agentcreate_agent(modelllm,tools[add,search],system_prompt你是一个助手遇到数学问题必须调用 add 工具遇到信息查询必须调用 search 工具。,)resultagent.invoke({messages:[{role:user,content:3 5 等于几再搜索一下 LangChain 最新动态。}]})print(result[messages][-1].content)Agent 开始按规则调用工具了。我还试了结构化输出frompydanticimportBaseModelclassAnswer(BaseModel):答案结构定义summary:strconfidence:floatagentcreate_agent(modelllm,tools[search],response_formatAnswer,)resultagent.invoke({messages:[{role:user,content:总结 AI 最新趋势}]})answerresult[structured_response]print(answer.summary,answer.confidence)这样 Agent 的输出就被约束成了固定格式不会胡说八道。三、我遇到的坑坑 1以为 Agent 会自觉调 Tool我最开始的代码没写system_prompt以为 Agent 看到add工具就会用。结果模型有时候直接心算答案。后来我理解了Agent 本质上是一个循环——模型决定是继续推理还是调用工具。模型做决定时主要依据是system prompt 里的指令Tool 的 name 和 description当前对话上下文如果 system prompt 不明确模型就会偷懒用自己内部知识回答。坑 2Tool 描述和实际功能不匹配我早期写search的 docstring 是tooldefsearch(query:str)-str:搜索returnf关于{query}的搜索结果...然后问今天天气怎么样Agent 调用了search(今天天气)但返回的是模拟数据。我想让它返回真实天气但工具本身不支持。这教会我一件事Agent 的能力边界 Tool 的能力边界。你给它的工具只能做模拟搜索它就不可能给你真实天气。不要期望 Agent 弥补工具的缺陷。坑 3response_format和 Tool 调用冲突我一开始想同时做两件事让 Agent 调用search然后返回一个Answer结构。代码类似这样agentcreate_agent(modelllm,tools[search],response_formatAnswer,# 希望最终输出结构化)结果发现如果 Agent 调用了 ToolTool 的返回内容可能不会被自动塞进Answer的summary字段。response_format约束的是最终回复不是中间 Tool 的结果。要解决这个问题我学会了分两步先让 Agent 调用 Tool 拿到结果再用 Chain 或第二次调用把结果整理成结构化输出坑 4模型本身不支持 function calling我用某个模型测试时Agent 死活不调工具。换到deepseek-chat后正常。原因是不是所有模型都擅长 function calling。有些小模型或旧模型看不懂 Tool 的 schema自然不会按规则调用。如果你的 Agent 不调工具先确认模型是否支持工具调用。四、搞清楚后的结论create_agent不是魔法它只是搭了一个循环框架。真正决定 Agent 行为的是四个东西是否System Prompt行为准则Agent 决策Model推理能力Tools可调用的工具Response Format输出约束调用工具执行 ToolTool 结果回到上下文直接回答这四个参数的关系参数作用如果配错会怎样model负责推理的大脑模型不支持工具调用Agent 不会调 Tooltools能调用的外部能力工具描述不清Agent 乱调或漏调system_prompt告诉 Agent 什么时候该调工具不写的话Agent 会偷懒response_format约束最终输出格式不能替代 Tool 调用后的二次加工五、我的收获Agent 不是有了工具就会用是你得告诉它什么时候用、为什么用。我以前觉得写好 Tool、传给create_agent剩下的事交给模型就行。实际不是。Agent 就像一个刚入职的员工你给了它电话、电脑、系统账号但它不一定会按流程办事。你需要写清楚 SOPsystem prompt给它能力匹配的工具tools还要选一个有判断力的大脑model。理解这一点后我写 Agent 的顺序变了先想清楚要 Agent 做什么再设计 Tool每个 Tool 职责单一写 system prompt 明确调用规则最后加 response_format 约束输出这个顺序比直接create_agent(model..., tools...)稳得多。下一篇我会写记忆——为什么我加了InMemorySaverAgent 还是不记得上一句说了什么。
【私房菜集 HarmonyOS ArkTS 实战系列 02】主 Tab 宿主:用 ArkUI 搭出首页、探索、收藏、我的第一篇已经把「私房菜集」的 Stage 模型、页面注册、EntryAbility 和工程分层梳理清楚。本篇继续进入用户真正每天看到的主界面:Index.ets 如何承载首页、探索…
📅 2026/7/4 3:17:29
Equalizer APO终极指南:5步实现Windows系统级音频均衡与实时处理优化 【免费下载链接】equalizerapo Equalizer APO mirror 项目地址: https://gitcode.com/gh_mirrors/eq/equalizerapo
你是否经常觉得Windows电脑的音频效果平平无奇?无论是游戏中…
📅 2026/7/4 3:17:29
1.在idea中plugins中安装jrebel2.下载破解exe
通过网盘分享的文件:2025jrebel 链接: https://pan.baidu.com/s/1ZvzbOWBI_grXkVaeDJKn5A 提取码: tfrp
3.打开exe.
4.点击
5.输入参考2025版本- JRebel 插件安装与配置教程 : 包括许可证服务器部署指南_jrebel 激活…
📅 2026/7/4 3:17:29
文章目录 前言 一、从"事后判断"到"事前事中":SFT 数据工程的认知跃迁 二、训练前的质量评估:四种方法叠加印证 三、困惑度过滤:找到"最近发展区" 四、奖励模型打分与 LLM-as-Judge 五、交叉一致性检验:让问题在训练前暴露 六、训练中的数据…
📅 2026/7/4 4:17:34
欢迎阅读本篇学习笔记。
本篇作为个人计算机专业的学习记录,这里将系统梳理栈和队列的相关知识点,从基础概念到代码实现逐步展开,便于后续的复习巩固。如有不足,欢迎大家在评论区交流指正,感谢大家的阅读与支持&#x…
📅 2026/7/4 4:17:34
永磁同步电机弱磁控制与SVPWM过调制的协同优化策略 在电动车驱动和工业伺服系统中,永磁同步电机(PMSM)的高效运行始终是工程师关注的核心问题。当电机转速超过基速时,传统控制策略面临电压饱和的瓶颈。本文将揭示如何通过弱磁控制与SVPWM过调制技术的协同…
📅 2026/7/4 4:17:34
5个关键技巧:零成本批量下载E-Hentai漫画的终极指南
还在为E-Hentai漫画下载而烦恼吗?今天我要分享一个革命性的解决方案——E-Hentai Downloader,这个开源工具能让你完全免费地批量下载漫画,无需消耗任何GP点数!作为一…
📅 2026/7/4 4:17:34
第1步骤:数据集下载
(1)Modelnet40数据下载
数据集下载地址:总共有1.6个G。
https://shapenet.cs.stanford.edu/media/modelnet40_normal_resampled.zip
(2)数据存放位置
数据集位置:然后数据全部放在data/modelnet40_normal_resampled/路径下面,如下所示:里面的…
📅 2026/7/4 4:17:34
本文纲要
一、枚举
为什么需要枚举枚举的定义格式枚举的特点枚举的常用方法
二、注解
注解的优势注解概述与Java内置注解自定义注解特殊属性value自定义注解练习元注解
枚举
1 ) 为什么需要枚举
在程序中经常需要表示一组固定的值,例如四季(春、夏、秋、…
📅 2026/7/4 4:15:33
Axure RP中文界面终极解决方案:3分钟告别英文困扰 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn
还在为Axure RP的英…
📅 2026/7/4 0:00:50
1. MC6470与STM32F745VG的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的协同工作能力直接决定了系统的响应速度和定位精度。MC6470作为一款6自由度惯性测量单元(6DOF IMU),与STM32F745VG这款基于ARM Cortex-M7内核的高性能微控制器组合&…
📅 2026/7/4 0:00:50
1. 项目概述:为什么要在本地跑 SAM Audio?这不只是“能用”,而是“必须用”SAM Audio——全称是 Segment Anything Model for Audio,不是 Meta 那个视觉领域的 SAM(Segment Anything Model)的简单移植&…
📅 2026/7/4 0:00:50
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/7/2 17:37:53
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/2 17:37:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/3 4:46:22
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/2 9:49:12
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/3 10:20:06