Agent效果优化——LLM基础Function Call能力强化

价值

Function Call指LLM通过结构化指定调用外部函数/API,将自然语言意图转为可执行命令的能力。
解决LLM实效性低(搜索:新闻、天气、股票)、专业领域能力(比如计算器、定酒店、定机票等)差等问题

主流应用场景

  1. 实时数据查询:天气/股票API调用(动态更新结果)
  2. 自动化任务执行:定酒店+机票+行程规划(多智能体协同)
  3. 企业系统执行:CRM客户查询+ERP库存更新(跨系统无缝对接)
  4. 复杂计算处理:数学运算/专业领域分析(法律条文/医疗诊断)

常见问题

调用参数错误

生成幻觉API

依赖关系混乱

优化方案

数据

LLM原生Function Call能力

1. 拆解当前场景大模型Function Call数据通用形式

用户输入
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
tools = [{
"type": "function",
"function": {
"name": "get_current_temperature",
"description": "Get current temperature at a location.",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The location to get the temperature for, in the format \"City, State, Country\"."
}
},
"required": ["location"],
},
},
}]

messages = [
{'role': 'system', 'content': '你是**'},
{'role': 'user', 'content': "现在北京的天气怎么样?"}
]
调用模型
1
2
3
4
5
response = client.chat.completions.create(
model=model_name,
messages=messages,
tools=tools
)

模型调用时增加tools字段,注册工具信息

模型输出
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"role": "assistant",
"content": ""为了获取当前天气,我需要调用'get_current_temperature'这个工具""",
"tool_calls": [
{
"type": "function",
"function": {
"name": "get_current_temperature",
"arguments": {"location": "北京"}
}
}
]
}

将输出解析为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
缺工具提供 给我推荐个地方去避暑,再预定一张机票 缺工具提供
缺参数信息 我过生日那天北京天气咋样? 缺参数信息
复杂任务 我是个北方人,没怎么看过海,想找个有海的地方度过我的暑假,但是也别太热别太潮,最好玩儿的地方能多一些 复杂任务
  1. 指令设计:构建明确需要工具调用的用户问题,如”今天北京天气如何?”
  2. 隐式需求:设计含蓄表达工具需求的问题,如”我需要穿外套出门吗?”(隐含天气查询)
  3. 多工具协同:设计需要多个工具配合完成的复杂任务,如”给我推荐个地方去避暑,再预定一张机票”
  4. 参数缺失场景:构建缺少关键参数的问题,如”我过生日那天北京天气咋样?”,训练模型主动询问缺失信息
  5. 复杂场景描述:设计包含多重需求的复杂描述,如”我是个北方人,没怎么看过海,想找个有海的地方度过我的暑假,但是也别太热别太潮,最好玩儿的地方能多一些”

答案构建

答案构建:数据构建最关键的部分,质量直接影响模型输出效果

方法类型与操作逻辑

方法类型 操作逻辑
基础方法 基于LLM构建/人工标注
进阶方法 聚合多个来源结果 → 投票筛选/一致性校验 → 保留高置信度答案
特殊任务 搭建带可执行API的模拟环境 → 智能体在环境中交互 → 记录真实调用路径作为答案

模拟环境交互构建法

Agent在模拟环境中与可执行API交互的过程:

  1. 从任务意图出发,由模拟人类提出初始问题
  2. 测试Agent分析问题并选择合适的API调用
  3. 环境配置提供实际可执行的API接口
  4. 记录多轮交互过程,包括API调用及结果
  5. 将真实交互路径作为高质量答案样本

校验

校验环节确保Function Call的可靠性:

  1. 格式验证:检查工具调用JSON格式是否符合规范
  2. 参数验证:验证提取的参数是否符合工具要求
  3. 逻辑验证:确认工具调用与用户意图一致
  4. 结果验证:评估工具调用结果是否满足用户需求

产出数据

最终产出的高质量Function Call训练数据包含:

  1. 用户指令:触发工具调用的问题
  2. 工具定义:明确的工具名称、描述和参数规范
  3. 标准回复:包含工具调用JSON和自然语言解释的完整回复
  4. 工具结果:模拟的工具执行结果(用于后续对话)

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


Agent效果优化——LLM基础Function Call能力强化
https://summerchengh.github.io/tech-blog/2025/06/18/大模型-Agent-效果优化-函数调用/
Author
Your Name
Posted on
June 18, 2025
Licensed under