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

LLM 如何把 What is 25 plus 17? 提取出表达式 25 + 17 并生成 tool_call

一、核心:文档字符串 + bind_tools 共同约束 LLM 完成转换 + tool_call

1. 工具 docstring 的作用(你这段注释就是关键指令)

python

运行

""" Evaluates basic mathematical expressions. Args: expression: A mathematical expression like "25 + 17" or "100 / 4" Returns: The calculated result as a string """

这段内容会完整打包进工具 JSON Schema 发给 LLM,给模型两个硬性规则:

  1. 这个工具只能接收标准数字运算符表达式,不能接收英文句子;
  2. 示例明确告知格式:"25 + 17""100 / 4",暗示plus要换成+divided换成/

2. bind_tools 强制模型输出结构化 tool_call

执行llm.bind_tools([calculator_tool])后:

  • LLM 不再允许自由文字回答计算题;
  • 必须输出tool_calls数组,包含工具名、参数字典;
  • 参数expression必须是纯算式字符串。

3. LLM 内部自动执行 4 步转换(无需手写代码处理文本)

输入 Prompt:

plaintext

Calculate the following using the calculator tool: What is 25 plus 17?

步骤 1:意图识别

句子包含计算语义,匹配calculator_tool

步骤 2:词汇映射(内置语言能力)

模型自动替换计算词汇:plus → +minus → -times → *divided by → /

步骤 3:清洗无关文本

删除虚词、疑问词:What is、问号、空格修饰,只保留数字与运算符。 输入文本What is 25 plus 17?→ 内部处理为25 + 17

步骤 4:组装标准 tool_call 结构

模型输出标准化 AIMessage,结构如下:

python

运行

AIMessage( content="", tool_calls=[ { "name": "calculator_tool", "args": {"expression": "25 + 17"}, "id": "auto-generated-uuid" } ] )

二、代码层面如何取出25 + 17

python

运行

# 调用绑定工具的LLM,传入自然语言问句 prompt = "Calculate the following using the calculator tool: What is 25 plus 17?" response = llm_with_calculator.invoke(prompt) # 判断是否生成了工具调用 if response.tool_calls: # 获取第一条工具调用 call_info = response.tool_calls[0] # 直接提取LLM转换好的纯表达式 math_expr = call_info["args"]["expression"] print(math_expr) # 输出:25 + 17 # 直接传入工具执行计算 res = calculator_tool.invoke(call_info["args"])

三、为什么不用自己写代码替换 plus→+?

  1. 语义泛化能力强复杂句子也能自动转换:sum of 12, 34 and 5"12 + 34 + 5"100 minus 6 multiplied by 7"100 - 6 * 7"
  2. Schema 强制规范输出 模型一定会输出标准算式,不会把英文问句塞进 expression,避免eval语法报错;
  3. docstring 示例起到示范作用 你写的like "25 + 17"是给模型的格式示范,大幅降低转换出错概率。

四、补充:如果想进一步强化转换规则(可选优化 docstring)

把词汇替换规则写进工具描述,模型转换准确率更高:

python

运行

@tool def calculator_tool(expression: str) -> str: """ Evaluates basic mathematical expressions. Convert math words to operators automatically: plus → +, minus → -, times → *, divided by → / Args: expression: Pure math expression like "25 + 17" or "100 / 4", NO natural language sentences Returns: The calculated result as a string """
http://www.jsqmd.com/news/1133811/

相关文章:

  • OpenBrowser:基于AI语义理解的智能浏览器自动化框架实战指南
  • ai模特mj生成一次搞定,批量电商图也能轻松制作
  • 鸿蒙数理化生体系:宏观–微观全域贯通统一理论
  • Python测试数据生成:Mock与Faker的实战应用与最佳实践
  • Spring Boot接口响应数据自动加密:基于ResponseBodyAdvice与AES的优雅实现
  • XGBoost 2.0 scale_pos_weight 实战:金融风控场景下召回率提升 15% 的调参指南
  • Java安全管理器构建在线评测系统安全沙箱:原理、实战与避坑指南
  • Java反射安全控制终极指南:setAccessible原理、风险与最佳实践
  • 基于Django的喀什地区景点推荐系统:技术栈、研究背景、核心代码与系统测试
  • 第1篇:一段 if-else 的代码,为什么成了“屎山”?
  • 团队共享 GPT5.5 API 额度设置方法
  • Symfony安全加固实战:防御会话劫持与CSRF攻击的深度指南
  • SpringBoot+Mybatis数据安全插件:基于拦截器实现字段自动加解密与脱敏
  • RootSIFT:改动最小,收益最大#
  • iOS平台JUnit测试实战:J2ObjC跨平台测试框架原理与配置指南
  • 基于Docker与Kubernetes的WebdriverIO自动化测试环境容器化实践
  • 手机号码定位神器:3分钟快速查询归属地完整指南
  • Wireshark+Fiddler手机抓包全攻略:从环境搭建到HTTPS解密与深度分析
  • PointPillars 3D检测实战:KITTI数据集训练与评估,mAP达73.3%(附PyTorch代码)
  • 【复现】基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法(Python代码实现)
  • AI模型测试:从确定性断言到统计判定的工程实践
  • 图文验证码系统设计:从原理到Spring Boot + Redis实战实现
  • 【操作系统】磁盘调度算法(FCFS/SSTF/SCAN/C-SCAN)
  • 语法全对,物理全错:2026年最危险的AI幻觉,正在污染你的仿真库
  • Android应用安全加固实战:代码混淆、资源加密、SO加固与完整性校验
  • Unity游戏汉化终极指南:XUnity Auto Translator让你畅玩全球游戏
  • GPT-5.5新特性对开源搜索引擎有什么冲击?GPT-5.5新特性对开源搜索引擎的冲击与机遇
  • 从CNN到Transformer:五大神经网络架构的本质与选型指南
  • Python爬虫如何绕过TLS指纹检测?curl_cffi实战指南
  • 基于智普清言与LangChain构建私有化AI知识库:从架构设计到部署实践