通过强化推理探索语言模型的工具使用能力
1. 前置知识
1.1 Tool Calling
大语言模型知识被冻结在训练数据中。
- 知识陈旧: 无法获知最新信息。
- 计算能力弱: 无法精确执行数学运算。
- 无法与外部世界交互: 不能发邮件、订机票。
Tool Calling是让大模型(LLM)能够识别何时、如何调用外部工具或函数以完成特定任务的能力。这种能力使模型可以超越静态知识库的限制,与外部世界交互,并实现更复杂的功能。
授权 LLM 使用外部工具 (API),将其转变为解决实际问题的“智能代理 (Agent)”。
-
例子1: 你问模型“今天北京的天气怎么样?”,模型自己无法实时知道,但它可以调用一个“天气查询API” 。
def get_weather(city=”Beijing”, date=”2025-06-18”)
-
例子2: 你让模型“计算 (123 * 456) / 789”,模型可以调用一个“计算器”或“Python解释器”来保证结果的精确性 。
-
核心挑战
- 参数精确性:正确提取和格式化参数
- 工具选择:从多个可用工具中选择最合适的
- 多步推理:组合多个工具完成复杂任务
- 结果整合:将工具输出融入后续推理过程
1.2 任务数据分类
标准数据集
标准数据集(The Normal Data)由固定的问答对组成,其中每个问题都对应一个正确的函数调用。该数据集分为以下类别:单轮对话、多轮对话、相似API调用、偏好选择和原子操作。
- **单轮对话:**用户与助手之间仅进行一轮交互。根据响应中的函数调用数量,进一步细分为单轮单次函数调用和单轮并行函数调用。
- **多轮对话:**用户与助手之间进行多轮交互。对话可分为两种类型:
- (切换) 对话通过更换话题推进;
- (调整) 对话通过细化或修改原始问题逐步演进。
- 例子
- user: 我想分析庄家的害虫和病害的风险,现在庄稼处在分枝的阶段
- system: 请提供当前的温湿度条件
- user: 温度28℃,湿度80%
- tool: [PestInfestationRiskAnalyzer( crop_information={"crop_type": "rice", "growth_stage": "tillering"}, climate_conditions={"temperature": 28, "humidity": 80})]
- system: 根据分析,在当前的气候条件下,您的庄稼处在一个中等风险的状态下。请采取预防措施。
- user: 我还想了解我的生产设备的维护要求。设备ID为Device123。
- system:请提供该设备的传感器读数,包括温度、振动和湿度。
- user:设备当前读数为温度75°C,振动等级5,周围湿度50%。
- **相似API:**候选API之间表现出显著相似性,尤其聚焦于相同主题。要求其必须有效区分不同API并准确筛选出最合适的选项。
- **偏好数据:**除候选API外,系统还会向助手提供补充性用户画像数据。这类信息要求助手具备挖掘用户特定要素的能力——包括历史交互记录、兴趣偏好或其他个性化属性——从而生成合理的参数取值。
- Can you update my preferred notification method and also check if my current email address and home location are properly updated in the system?
- **原子数据:**原子数据特指仅包含特定参数类型的API集合,例如参数仅涉及数字、列表等类型的候选函数。该设计旨在探究函数参数类型是否会影响模型处理数据填充的能力。我们将原子数据划分为五类:数值型、枚举型、列表型、布尔型和对象型。