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

【Agent智能体15 | 工具使用-现代的LLM请求调用工具的语法】

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

下面的例子都使用AISuite 开源库,让大语言模型调用工具。

注意:大模型本身不直接调用工具,它只是请求“你”去调用工具。但是在开发代理型工作流的开发者中,有时会直接说大模型调用了工具,虽然这并不是技术上的真实过程,这样说只是为了方便

定义工具 (Defining the tool)


图片使用的代码库是aisuite,演示了如何让模型调用一个简单的 Python 函数

  • 定义工具 (Defining the tool)
    左侧: Python 函数get_current_time(),用于获取当前时间。

    • 注释(Docstring)"""Returns the current time as a string"""。在 AI Agent 的开发中,这段描述至关重要。底层的框架会自动读取这段文字,把它发给大模型大模型正是依靠这句话来理解“这个工具是干什么用的”以及“什么时候该用它”。
  • 调用语法 (Syntax)
    右侧展示了如何将刚刚定义好的工具传递给大语言模型(这里调用的是openai:gpt-4o)。

    • tools=[get_current_time](工具列表):你只需把左侧写好的 Python 函数名放在列表中传给大模型。框架会自动把函数转化为模型能看懂的 JSON 格式描述
    • max_turns=5(最大轮次):作用是“限制 LLM 连续请求工具的次数,防止出现循环”。实际情况中这种死循环一般很少发生。
  • 总结
    The function get_current_time is automatically described to the LLM to enable it to decide when to use it.总结了整个过程的核心机制:

    • 系统会自动将函数描述给 LLM,赋予 LLM 自主决策的能力。当你问模型“现在几点了”时,模型会自己判断需要调用get_current_time这个工具来获取答案,而不是瞎编一个时间。

AI Agent 框架在后台工作的底层机制(无参)

底层会直接生成一个详细描述函数的JSON架构,这是实际传递给大模型的内容

这个图展示了从Python 函数JSON Schema的自动映射过程。

大模型原生并不直接运行 Python 代码,它们通过 API 接收标准的 JSON 格式数据。

aisuite这类框架是如何在后台做自动转换的:

  • 红框(函数名映射):Python 代码定义的函数名get_current_time,被框架自动提取,并填入了右侧 JSON Schema 中的"name"字段。

    • 这告诉大模型:“这里有一个工具,它的代号叫这个”。
  • 绿框(功能描述映射):Python 代码中的文档字符串"""Returns the current time as a string""",被自动提取并填入了右侧 JSON 的"description"字段。

    • 作用:大模型就是通过阅读这句 description,来理解这个工具的具体功能,从而决定在何时调用它。

“the name and description get added automatically”(名称和描述会被自动添加)

  • 作为开发者,你只需要像左下角那样,简单地把get_current_time放入tools列表中传给框架。你不需要手动去手写右上方那一坨繁琐的 JSON Schema 字典,框架(如aisuiteLangChainOpenAI SDK)会在底层替你完成这些翻译和组装工作。

三者的关系

  • get_current_time:开发者编写的真实代码实体。 它包含了具体的业务逻辑(获取系统时间)和人类可读的注释说明(Docstring)
    • 大语言模型(LLM)本身是一个文本处理引擎,它在云端的服务器里,并不能直接运行你本地或服务器上的 Python 代码
  • JSON Schema:给大模型看的内容
    • 大模型不懂如何直接运行 Python,它只认一种标准化的数据格式 - JSON
    • 它是大模型的“API 接口文档”。通过这种标准化的 JSON 格式,大模型就能清楚地知道这个函数的作用以及需要调用的场景
    • JSON Schema 就是get_current_time这段 Python 代码在 AI 世界里的名片
  • aisuite库 API:连接两者的中转站:
    • 没有aisuite(或者 OpenAI 原生 SDK 等框架),你需要自己手动写代码把 Python 函数转成那一大坨复杂的 JSON,不仅繁琐,而且容易出错。
    • 作用:aisuite作为中间商。当你把get_current_time丢进tools=[get_current_time]时,aisuite会在后台自动完成以下工作:
      • 解析你的 Python 函数名和注释。
      • 组装成大模型需要的 JSON Schema 格式。
      • 打包发送给大模型。
      • 并且,如果大模型回复“我要调用这个工具”,aisuite还会负责执行这个 Python 函数,并把运行结果再次发回给大模型

AI Agent 框架在后台工作的底层机制(带参)

这个图展示了如何给工具加上“参数(Parameters)”,让大语言模型(LLM)能够更灵活地传递信息给工具。

  • 自动映射的三要素

    左侧是你写的 Python 代码,右侧是框架自动生成的 JSON Schema 。框架做了自动翻译工作:

    • 红框(函数名):将 Python 函数名get_current_time映射到 JSON 的name字段。

    • 绿框(整体描述):将文档字符串映射到 JSON 的description,告诉大模型这个工具现在的用途是“获取指定时区的当前时间”。

    • 蓝框(参数 ):

      • 左侧:Python 函数的括号里多了一个参数(timezone)
      • 右侧:在 JSON 中生成了一个非常详细的"parameters"字典。这里面不仅告诉大模型需要提供timezone这个参数,还规定了它的数据类型("type": "string"),并且给出了具体的格式示例(例如'America/New_York')。
  • 为什么需要这个蓝框?(大模型的思考过程)

    有了这段详细的 JSON 参数说明,大模型在处理你的问题时,就能完成参数提取的工作。

    举个例子,假设你问大模型:“东京现在几点了?”

    1. 大模型阅读右侧的 JSON 说明书。
    2. 它判断出需要调用get_current_time工具。
    3. 关键步骤:结合蓝框里的要求和你的问题,大模型会自动把“东京”转换成符合规范的时区字符串(如Asia/Tokyo)。
    4. 大模型向框架发送请求:“请执行get_current_time,并把参数设为Asia/Tokyo”。

用一个例子简单说一下具体的执行流程:

用户输入:“请问现在纽约几点了”

  • 第一步aisuite框架开始进行翻译工作
    • aisuite拿到你的get_current_time函数,然后把它翻译成了JSON Schema(AI的说明书)
    • aisuite将用户的提问跟这个JSON数据一起打包发送给LLM
    • 此时LLM得到的数据是这样的:
      • 用户消息:“请问现在纽约几点了?”
      • 工具 (JSON格式):[{"name": "get_current_time", "description": "获取指定时区的时间", "parameters": {"timezone": "string"}}]
  • 第二步:LLM开始思考
    • “用户问的是纽约时间。”
    • 看工具列表:正好有一个叫get_current_time的工具,可以查时区时间。
    • LLM决定不直接回答,而是aisuite发送一个“调用请求”。
    • 大模型回复给aisuite的数据:
      • 动作:call_function
      • 工具名:get_current_time
      • 提取到的参数:{"timezone": "America/New_York"}
  • 第三步::aisuite收到指令之后,执行工具
    • aisuite会在你的本地电脑/服务器上,真正执行你的Python 代码
    • 假设代码运行完毕,返回了字符串"09:30:15"
    • aisuite再次把这个结果发送给大模型
  • 第四步:LLM进行最终回答
    • 大模型拿到了具体的时间数据,结合用户的原始问题,生成了一句自然流畅的人类语言。
      1. 大模型输出:“现在纽约的时间是上午 09:30:15。”
      2. aisuite将这句话返回给你的程序,展示在屏幕上。

总结

这篇博文展示了现代进行工具调用的一些基本语法与底层逻辑。文本用的是开源代码库aisuite为例进行了详细拆解,但还有许多类似且成熟的框架(例如 LangChain、LlamaIndex 或 OpenAI 原生 SDK 等)。无论你未来在开发中选择哪一种框架,它们背后的核心价值和运转机制都是类似的。

总而言之,工具调用并不神秘,它就是一个标准化数据格式(JSON)的自动映射与协同执行过程。

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

http://www.jsqmd.com/news/931066/

相关文章:

  • 手写一款高兼容、零BUG图片预览组件|前端
  • 多因子检测试剂盒(Multiplex Assay Kit)磁珠读数异常原因及解决方案
  • 基于WIO Terminal的智能交通灯模拟系统:从传感器到状态机的嵌入式实践
  • 2026 广州黄金回收避坑,五家口碑好店,收的顶专业合规排名第一 - 奢侈品回收测评
  • 7-Zip-zstd深度实战:六大现代压缩算法如何革新你的文件管理体验
  • 如何掌控你的惠普OMEN游戏本:OmenSuperHub完全使用指南
  • 2026年薪酬设计:这3个公平性原则让团队心服口服
  • 2026最新济南短视频运营平台排行:5家机构实力实测对比 - 奔跑123
  • 083、医学影像 CT/MRI 窗宽窗位应用不当?DICOM 解析、HU 值映射与多窗显示方案
  • 一文说清仓库管理三管三理:仓库管理到底管什么?理什么?
  • [开源] 住院床位实时智能调度系统:面向护士长的多目标优化分配工具,支持 CLI 快速决策、Web 可视化监控与 API 集成调用
  • 用Python和Tensorly复现经典PARAFAC论文:从荧光光谱数据到三维张量分解实战
  • 山东采暖炉品牌排行:实测性能与服务维度客观对比 - 奔跑123
  • 2026 年论文降 AI 工具硬核横评:16 款实测谁在保命谁在毁稿
  • Sora 2新闻视频制作终极清单:23项元数据埋点要求、8类信源溯源字段、7种政要形象生成禁令(内部培训绝密版)
  • Kali 实战教程:手把手教学断网攻击实操
  • 第4章:MCU最小系统设计——从一颗光杆芯片到它能跑起来
  • Sora 2到底值不值得现在上手?一线影视/广告/教育团队的30天实测结论与迁移成本预警(含ROI测算表)
  • [开源] 科室二次分配公平感模拟器:用博弈论算出护士长敢拍板的奖金方案,让夜班、年资、技术难度全进模型
  • NCMconverter:如何轻松解锁网易云音乐NCM格式音频文件
  • 零基础速存!最新 Kali Linux 全套详细教程,从下载安装到上手使用完整指南
  • 为什么你的Sora 2物理模拟总“飘”?3步校准重力场、碰撞响应与材质摩擦系数,即刻生效
  • 浏览器市场与用户画像分析 实验报告
  • DLSS Swapper:一键升级游戏性能的终极解决方案
  • 【Sora 2景观设计视频避坑白皮书】:权威发布住建部合作项目验证的4类合规风险、3项版权红线及实时渲染替代方案
  • 纸电路入门:用导电胶带和纽扣电池点亮创意世界
  • 3分钟搞定千首歌曲:ZonyLrcToolsX智能歌词下载终极指南
  • DLSS Swapper:游戏性能优化的智能管家与自动化革命
  • 告别线性财务:构建数据驱动财务体系的四步实践指南
  • 抽沙船能抽硬沙吗? - 舒雯文化