当前位置: 首页
AI教程
Agent开发工具01实战指南

Agent开发工具01实战指南

热心网友 时间:2026-05-29
转载
```html 大语言模型(LLM)本身不具备直接操控外部资源的能力,例如无法读取你本地存储的文件。那么,如何让它实现这些功能呢?关键在于为它“绑定”相应的工具。在 Langchain 框架中,这一操作非常简洁——只需使用 `model.bindTools` 即可完成绑定。接下来,自然是定义所需的工具。
## 工具 大语言模型本身并不具备工具的功能,比如读取文件的特性。 agent开发-tool-01 如果你希望大模型不仅能回答你的问题,还能读取本地的文件,就需要为它绑定上对应的工具。在 `langchain` 中,绑定的方式很简单——直接调用 `model.bindTools` 即可。 接下来,我们来探讨如何定义工具。 ## 定义工具 在定义工具时,首先要弄清楚它的“使用说明书”是什么样的。工具本质上是一个函数,既然是函数,就必须接收参数,也就是有入参。因此,你需要明确三件事:名称、描述、入参。 ```ja vascript const obj = { // 工具的名称 name: 'read_file', // 对这个工具的人类语言描述 description: '对这个工具的人类语言描述', // 工具入参 schema: z.object({ filePath: z.string().describe('要读取的文件路径'), }), } ``` 编写完说明书后,接下来就是工具本身——也就是那个函数。逻辑非常简单:传入文件路径,读取内容并返回。 ```ja vascript // 很简单,就是一个函数,函数中的逻辑如下,实现了读取文件内容并返回 const fun = async ({ filePath }) => { const content = await fs.readFile(filePath, 'utf-8'); console.log(` [工具调用] read_file("${filePath}") - 成功读取${content.length}字节`); return `文件内容:\n${content}`; } ``` 最后一步,用 langchain 的 `tool` 函数把上面这两个参数传进去,工具就算定义好了。 ```ja vascript tool(fun, obj) ``` ## 调用工具 在前面绑定好工具之后,我们调用了模型的 `invoke` 函数。但请注意,模型并不会直接去执行工具,而是返回当前用户问题可以使用的工具列表。 - 用户问:“你好”。模型返回一个工具空数组——它自己判断,这次请求不需要调用任何工具。 - 用户问:“读取某个文件”。大模型会检索自身,看是否有合适的工具。如果有,就在返回数据中把可用的工具带出来。 数组中的每一个工具都包含:工具的实际入参(模型通过第一次用户的提问识别到的)、工具的唯一 id(每次调用都会随机生成一个新的)、工具的名称。 当模型返回了工具调用数组,我们需要遍历这个数组,依次调用每一个工具函数。注意,调用工具不是使用 `模型的 invoke`,而是 `工具的 invoke`。 ```ja vascript // invoke的参数就是工具的入参,这个入参可以从模型返回的数组中获取 const result = await tool.invoke(toolCall.args); ``` 拿到工具的结果之后,用 langchain 的 `new ToolMessage` 来新建一条消息: ```ja vascript new ToolMessage({ content: toolResults[index], tool_call_id: toolCall.id, }) ``` 最后,将所有消息再次发送给模型,模型输出最终回答。 ### Q&A **Q1:为什么需要 `new ToolMessage`,而不是将工具返回结果直接拼接到前面用户的提问后面?** **A1:** (1)像 GPT-4、Claude 这类支持 function calling 的模型,在训练过程中大量接触的对话格式就是这种结构化模式: ``` User → Assistant(tool_calls) → ToolMessage → Assistant(回复) ``` 也就是说,模型在训练时学会了:收到带有 tool_call_id 的 ToolMessage = 这是我刚才调用的工具返回的结果,需要借助这些内容来作答。如果改用字符串拼接,将工具结果塞进 HumanMessage 或普通文本中,这种模式在训练数据里非常罕见,模型就没有明确的“如何使用”的经验。 (2)角色与用途清晰 在结构化消息体系里,每一条消息的语义都非常明确: | 消息类型 | 模型的理解 | | --- | --- | | HumanMessage | 用户说了什么、想实现什么 | | AIMessage + tool_calls | 我决定调用这些工具 | | ToolMessage | 这些工具返回的结果,是对我上一轮决策的反馈 | | AIMessage | 基于工具结果给出最终回答 | 模型会将 ToolMessage 视为“我主动调用的工具的结果”,而不是“用户新说的话”。如果采用字符串拼接,工具结果很容易被当作普通上下文或用户输入,导致模型不清楚这是自己刚才调用的工具的结果,从而处理方式产生偏差。 (3)注意力与因果关系 在多轮对话中,模型对不同消息类型的处理权重各不相同。ToolMessage 在训练阶段被视作“对上一次 tool_calls 的回应”,因此模型会更自然地把注意力集中在:用这些结果来回答用户最初的问题。这样能够维持清晰的因果链条,避免干扰。 ```
来源:https://juejin.cn/post/7626578013837328425

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
AI助力职场新人:劳动合同书撰写实用指南与范文

AI助力职场新人:劳动合同书撰写实用指南与范文

适合需求: 劳动合同书撰写全攻略 说白了,劳动合同书就是职场人的“入场券”——它不只是一纸法律保障,更是开启新工作的通行证。但不少刚入职场的朋友,一提到起草劳动合同书就头大,感觉像在解读高深莫测的法律条文,从哪儿下手、条款怎么拟定,心里完全没底。其实,掌握劳动合同书撰写要点,就能轻松避坑。 范文 D

时间:2026-05-29 07:28
Retouch4me专业级AI修图插件,简化照片后期提升工作效率

Retouch4me专业级AI修图插件,简化照片后期提升工作效率

Retouch4me 专业级 AI 修图插件产品介绍许多摄影师对后期修图又爱又恨——不是不愿精修,而是耗时巨大。Retouch4me 的出现,有效缩短了从按下快门到交付成片的周期。这套基于人工智能的修图工具集,专为专业摄影师及图像后期工作者设计,既可作为 Photoshop 插件使用,也能独立运行,

时间:2026-05-29 07:28
AIVO与传统GEO核心区别:战术适配到全域认知治理

AIVO与传统GEO核心区别:战术适配到全域认知治理

摘要 去年大家还在聊GEO,今年风向已经变了。在大语言模型主导搜索与交互的时代,AIVO正在接棒GEO,成为品牌在AI世界里的新标准。简单说,GEO是解决“内容被AI搜到”的问题,属于战术层面的适配;而AIVO升级到了“让品牌在AI认知中站稳脚跟”的战略治理。这篇文章会从技术原理、架构逻辑、核心能力

时间:2026-05-29 07:28
职场合同模板需求多 AI生成专业合同省时省力

职场合同模板需求多 AI生成专业合同省时省力

适用需求场景: 合同,是职场中人人都会遇到的必备工具。无论是刚步入职场的新人,还是经验丰富的资深从业者,签署合同时面临的挑战其实大同小异——如何起草一份既符合法律规定又能充分保障自身权益的文书?撰写合同不仅需要具备基础的法律知识,还要小心规避各类条款陷阱,稍有不慎便可能埋下后续纠纷的隐患。尤其对于中

时间:2026-05-29 07:27
HeyLibby 电子书阅读与数字图书馆的快速上手指南

HeyLibby 电子书阅读与数字图书馆的快速上手指南

heyLibby是什么?AI销售助手核心解析 在销售行业中,大量宝贵时间往往耗费在“筛选潜在客户”与“反复沟通”上,尤其对于小团队和个体创业者而言,这类重复劳动尤为沉重。heyLibby正是为解决这一痛点而生——一款专注于销售自动化的AI助手,由深耕AI技术的团队打造,主要服务小型企业和个体经营者。

时间:2026-05-29 07:27
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 日榜
  • 周榜
  • 月榜
热门教程
更多
  • 游戏攻略
  • 安卓教程
  • 苹果教程
  • 电脑教程