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

【Agent智能体14 | 工具使用-如何创建工具】

声明:本篇博客是以吴恩达的【Agent智能体】教程为基础,并对其中的内容做了笔记整理以及个人收获的总结。

本篇文章主要是梳理LLM实现函数调用的具体流程。

目前可以简单理解为工具其实就是LLM可用请求执行的代码或者函数,如下图:

将代码作为一种工具

现在主流的LLM都已经通过直接训练来使用工具了。但是如果需要自己写提示词,告诉LLM何时使用工具会是什么样子的流程

早期LLM还未直接训练使用工具的时候,是这样做的。虽然现在不完全采用这种方式了,但是有助于我们理解整个流程,例子如下:

例子1:调用函数,查现在是几点


这个工作流程展示了在 LLM 原生支持“函数调用(Function Calling)”之前,开发者是如何通过提示词工程(Prompt Engineering)和代码逻辑的配合,强行让大模型“学会”使用工具的
可以将这个流程拆解为三个主要阶段来理解:

  • 准备阶段:设定规则与定义工具
    在用户开始提问之前,系统需要做好两项准备工作:

    • 编写系统提示词(System Prompt,图左上):赋予 LLM 工具的使用说明书。
      • 这里明确告诉 LLM:“你现在有一个叫get_current_time的工具。如果你想用它,必须严格按照特定格式输出(即输出FUNCTION: get_current_time())。”
    • 定义实际运行的工具(代码实现,图右上):准备好真正能在后台执行的 Python 代码。
      • 当 LLM 发出请求时,这段代码负责获取真实的系统时间。
  • 第一轮对话:LLM 识别意图并“请求”调用工具
    流程图的前半部分。

    • 用户提问(红色框):用户问 “What time is it?”(现在几点了?)。
    • LLM 执行(第一个灰色框):LLM 接收到用户的提问,结合之前的系统提示词,它意识到自己不知道当前时间,必须借助工具。于是,它严格按照提示词规定的格式,输出了特定的字符串:FUNCTION: get_current_time()
    • 系统拦截(白框if "FUNCTION" in output:):这是关键的一步。
      • LLM 本身是不能直接运行代码的。包裹在 LLM 外层的应用程序(你的代码)会检查 LLM 的输出。一旦发现输出中包含约定的暗号(“FUNCTION”),系统就会拦截这段输出,不将其展示给用户。之后会执行工具…
  • 第二轮对话:执行工具并生成最终回复
    流程图的后半部分。

    • 执行工具(绿色框):应用程序拦截到暗号后,在本地真正执行了右上角那段 Python 函数get_current_time(),并得到了结果:08:00:00
    • 拼接上下文(第二个白底框):应用程序将工具返回的真实数据(08:00:00),连同之前的对话历史(用户的提问、工具调用的动作),重新打包在一起。
    • LLM 最终总结(第二个灰色框):应用程序将这份包含答案的“新考卷”再次发送给 LLM。此时 LLM 已经“看到”了现在的具体时间。
    • 输出自然语言:LLM 根据08:00:00这个数据,生成了最终回复:“It’s 8am.” 并展示给用户。

核心总结:

  • 这个图揭示了 LLM 使用工具的本质:LLM 负责“做决定”和“生成特定格式的文本”,而外部的代码程序负责“解析文本”、“执行真正的动作”并将结果“喂”回给 LLM。
  • 现在的模型(如 OpenAI 的 function calling API)虽然将这个过程封装得更优雅,不再需要你在提示词里写死这么复杂的正则表达式或格式要求,但其背后的“两段式对话(请求工具 -> 拿到结果再回复)”的核心思想是完全一致的。

另外要注意一个点:

  • 大模型本身不直接调用工具,它只是请求“你”去调用工具

例子2:带参数的工具调用(Function Calling with Arguments)

  • 工具与规则的升级(需要输入变量)

    • 代码端(右上角):Python 函数get_current_time不再是获取本地默认时间,而是需要接收一个timezone(时区)作为参数
    • 提示词(左上角):系统提示词相应地进行了修改,明确告诉 LLM:“如果想用这个工具,你必须在括号里填入特定的时区参数”,即FUNCTION: get_current_time("timezone")
  • LLM 的理解与“参数翻译”
    这是整个流程中最精彩的一环,也是大模型展现其“智能”的地方。

    • 用户提问:用户问的是 “What time is it inNew Zealand?”(新西兰现在几点了?)。用户使用的是日常的自然语言。
    • LLM 推理:LLM 接收到提问后,不仅判断出需要调用时间工具,更重要的是,它利用自身的常识储备,将模糊的地名“New Zealand”转换成了标准 API 需要的精确时区格式"Pacific/Auckland"
    • 输出指令:LLM 按照规则输出了FUNCTION: get_current_time("Pacific/Auckland")
  • 拦截、执行与回复
    接下来的流程就和之前类似了:

    • 应用程序拦截并解析:外层代码拦截到 LLM 的输出,提取出工具名称和参数。
    • 带参执行(绿框):真正执行了 Python 代码get_current_time("Pacific/Auckland"),得到结果04:00:00
    • 闭环输出:将这个结果拼接成上下文重新喂给 LLM,LLM 最终用自然语言回复用户:“It’s 4am in New Zealand”

现在的LLM已经被训练为可以使用特定的工具语法了,这可以让大模型非常明确的请求调用某个工具。详情见下一篇文章"现代的LLM请求调用工具的语法"

如果这篇文章对你有帮助,欢迎点赞、评论、关注、收藏。你们的支持是我前进的动力!

http://www.zskr.cn/news/1435210.html

相关文章:

  • Zotero Style插件:如何彻底改变你的文献管理体验
  • 2026鞍山防水补漏公司怎么选?三家主流品牌实力全方位对比 - 吉修匠
  • 别再只懂TF-IDF了!用Python sklearn实战TF-IWF,搞定同类文本关键词提取难题
  • 不只是抓包:用Ubertooth One和Wireshark搭建你的第一个蓝牙LE嗅探环境
  • novel-downloader:终极跨站点小说下载器深度实战指南
  • 论文写作高效落地:百考通AI全流程辅助功能实战解析
  • 免费开源AMD锐龙调试工具SMUDebugTool:释放处理器潜能的终极指南
  • ROS2多机通讯实战:当WiFi局域网遇上虚拟机,如何用集中式发现协议绕过UDP组播限制?
  • 电路设计从实验室到生活:创客实践与多元应用场景解析
  • 成都H型钢今日价格、价格行情、盛世钢联最新报价(2025年09月31日) - 四川盛世钢联营销中心
  • 重磅上新:靠谱的气力输送设备制造商 - 品牌推广大师
  • Havenlon 产品哲学(三):为什么自动化系统需要独立授权层(Enigma Auth Key)
  • 2026衡水防水补漏公司怎么选?三家主流品牌实力全方位对比 - 吉修匠
  • TSP问题实战:对比模拟退火、遗传算法与禁忌搜索在Python中的表现与调参心得
  • 2026年7月实测兰州黄金回收:6家门店比价,金价高位下谁更透明? - 黄金回收
  • 市面上有哪些是真正靠谱的AI智能降重工具(告别论文AI标记风险) - 降AI小能手
  • 2026 年潍坊防水堵漏修缮:行业现状、避坑指南与靠谱服务商选择 - 百航
  • 如何用Untrunc快速拯救损坏的MP4视频文件:终极修复指南
  • 20253916 2025-2026-2 《网络攻防实践》实践八报告
  • 抖音批量下载开源神器:5分钟搞定无水印下载完整指南
  • 2026年4月吉林黄金回收实测:金价高位下的六家门店真实数据与变现指南 - 黄金回收
  • 如何完全掌控你的数字记忆:WeChatMsg终极聊天数据管理方案
  • 西安黄金回收避雷指南|拒绝扣损耗压秤套路,认准东六路唐王珠宝足金足两 - 西安闲转记
  • 郑州市 中牟县 清洁收纳|维小达 日常保洁、开荒保洁、窗户保洁、收纳整理、暖气家电清洗一站式服务 - 维小达科技
  • 基于确定学习的人体生物信号建模识别及其应用方案【附数据】
  • 国内导轨式升降货梯厂家实力排行:多维度实测解析 - 奔跑123
  • 重庆黄金回收防骗指南:避开这些坑,安全变现你的黄金 - 黄金回收
  • 告别单用户排队!Win Server 2019远程桌面允许多用户同时登录的保姆级配置
  • 重磅盘点!2026年贵阳GEO公司TOP5到底是哪几家? - charlieruizvin
  • 丽水黄金回收避坑实测:6家正规门店价格与流程对比 - 黄金回收