Agent效果优化——LLM基础Function Call能力强化
价值
Function Call指LLM通过结构化指定调用外部函数/API,将自然语言意图转为可执行命令的能力。
解决LLM实效性低(搜索:新闻、天气、股票)、专业领域能力(比如计算器、定酒店、定机票等)差等问题
主流应用场景
- 实时数据查询:天气/股票API调用(动态更新结果)
- 自动化任务执行:定酒店+机票+行程规划(多智能体协同)
- 企业系统执行:CRM客户查询+ERP库存更新(跨系统无缝对接)
- 复杂计算处理:数学运算/专业领域分析(法律条文/医疗诊断)
常见问题
调用参数错误
生成幻觉API
依赖关系混乱
优化方案
数据
LLM原生Function Call能力
1. 拆解当前场景大模型Function Call数据通用形式
用户输入
1 | |
调用模型
1 | |
模型调用时增加tools字段,注册工具信息
模型输出
1 | |
将输出解析为content和tool_calls两个字段,模型输出调用工具信息及参数
数据构建流程
工具构建
工具是Agent能力的基础,构建高质量的工具定义是提升函数调用效果的关键。

真实工具 VS LLM虚构工具
| 维度 | 真实工具 (Real-world Tools) | LLM虚构工具 (Hallucinated Tools) |
|---|---|---|
| 本质 | 调用外部真实存在的API或服务(如天气接口、数据库),依赖现实数据源 | 工具功能及结果完全由LLM生成,无真实后端支持,本质是模型内部推理的延伸 |
| 流程 | 1. 用户指令 → 2. LLM解析请求 → 3. 调用外部API → 4. LLM基于返回结果继续生成 | 1. 用户指令 → 2. LLM生成工具调用请求 → 3. LLM伪造工具调用结果 → 4. LLM基于返回结果继续生成 |
| 优势 | ✅ 返回结果高真实性:结果与现实严格一致(如实时股价) ✅ 工具贴近真实场景:符合用户实际使用需求 ✅ 对抗幻觉:依靠外部证据,减少虚构 |
✅ 零调用成本:无需API费用,仅消耗Token ✅ 高定制性:自由定义工具逻辑(如模拟专家决策) ✅ 稳定性高:无第三方依赖 |
| 挑战 | ❌ 开发复杂:需处理API认证、错误重试 ❌ 调用成本高:频繁使用需支付API费用 ❌ 外部依赖风险:API服务若宕机则失效 |
❌ 结果不可信:易编造不存在的事实 ❌ 逻辑矛盾:可能违反常识 ❌ 滥用风险:生成误导性内容需人工审核 |
| 适用场景 | 高精度的垂类任务:金融分析、医疗诊断 | 基础常见任务:旅游攻略、天气查询 |
虚构工具构建方法:
- 从开源API库中获取真实工具描述信息
- 利用LLM语料中划分大量文本,从中提取场景,进一步构建API描述
[1] Liu, Weiwen et al. “ToolACE: Winning the Points of LLM Function Calling.” ArXiv abs/2409.00920 (2024): n. pag.
任务构建
任务构建是Function Call数据流程中的关键环节,涉及如何设计用户指令以触发工具调用:
任务构建直接方法
- 直接使用大模型针对工具List合成问题,以及基于对话历史信息构建任务
任务构建进阶方法
- 依据Function Call数据类型分布均衡构建
- 加入persona和场景设计,借助指令进化方法,使得Agent数据的任务变得更加接近真实使用场景,逐渐增加问题难度和多样性
- 合并已有的简单任务,逐步构建复杂任务
示例
| 任务类型 | 示例 | 问题 |
|---|---|---|
| 简单直接任务 | 今天北京天气如何? | get_weather get_tourist_guide |
| 缺工具提供 | 给我推荐个地方去避暑,再预定一张机票 | 缺工具提供 |
| 缺参数信息 | 我过生日那天北京天气咋样? | 缺参数信息 |
| 复杂任务 | 我是个北方人,没怎么看过海,想找个有海的地方度过我的暑假,但是也别太热别太潮,最好玩儿的地方能多一些 | 复杂任务 |
- 指令设计:构建明确需要工具调用的用户问题,如”今天北京天气如何?”
- 隐式需求:设计含蓄表达工具需求的问题,如”我需要穿外套出门吗?”(隐含天气查询)
- 多工具协同:设计需要多个工具配合完成的复杂任务,如”给我推荐个地方去避暑,再预定一张机票”
- 参数缺失场景:构建缺少关键参数的问题,如”我过生日那天北京天气咋样?”,训练模型主动询问缺失信息
- 复杂场景描述:设计包含多重需求的复杂描述,如”我是个北方人,没怎么看过海,想找个有海的地方度过我的暑假,但是也别太热别太潮,最好玩儿的地方能多一些”
答案构建
答案构建:数据构建最关键的部分,质量直接影响模型输出效果
方法类型与操作逻辑
| 方法类型 | 操作逻辑 |
|---|---|
| 基础方法 | 基于LLM构建/人工标注 |
| 进阶方法 | 聚合多个来源结果 → 投票筛选/一致性校验 → 保留高置信度答案 |
| 特殊任务 | 搭建带可执行API的模拟环境 → 智能体在环境中交互 → 记录真实调用路径作为答案 |
模拟环境交互构建法
Agent在模拟环境中与可执行API交互的过程:
- 从任务意图出发,由模拟人类提出初始问题
- 测试Agent分析问题并选择合适的API调用
- 环境配置提供实际可执行的API接口
- 记录多轮交互过程,包括API调用及结果
- 将真实交互路径作为高质量答案样本
校验
校验环节确保Function Call的可靠性:
- 格式验证:检查工具调用JSON格式是否符合规范
- 参数验证:验证提取的参数是否符合工具要求
- 逻辑验证:确认工具调用与用户意图一致
- 结果验证:评估工具调用结果是否满足用户需求
产出数据
最终产出的高质量Function Call训练数据包含:
- 用户指令:触发工具调用的问题
- 工具定义:明确的工具名称、描述和参数规范
- 标准回复:包含工具调用JSON和自然语言解释的完整回复
- 工具结果:模拟的工具执行结果(用于后续对话)
Reducing Tool Hallucination via Reliability Alignment
效果评估
Berkeley Function-Calling Leaderboard
基准测试平台
Tao-bench
基于数据库状态的自动化评估(替代主观人类判断)和pass^k指标
参考
ToolACE: Winning the Points of LLM Function Calling
An LLM Compiler for Parallel Function Calling
Reducing Tool Hallucination via Reliability Alignment
Search-R1: Training LLMs to Reason and Leverage Search Engines with Reinforcement Learning
Agentic Reasoning and Tool Integration for LLMs via Reinforcement Learning
ToolRL: Reward is All Tool Learning Needs
Magnet: Multi-turn Tool-use Data Synthesis and Distillation via Graph Translation
APIGen-MT: Agentic Pipeline for Multi-Turn Data Generation via Simulated Agent-Human Interplay
Nemotron-Research-Tool-N1: Tool-Using Language Models with Reinforced Reasoning
ToRL: Scaling Tool-Integrated RL