FunctionGemma 微调指南
Source: Google Developers Blog
请提供您想要翻译的具体文本内容,我会将其翻译成简体中文并保持原有的格式、Markdown 语法以及技术术语不变。谢谢!
Jan 16, 2026
在 Agentic AI 的世界里,调用工具的能力是将自然语言转化为可执行软件操作的关键。上个月,我们发布了 FunctionGemma,这是我们针对函数调用专门微调的 Gemma 3 270M 模型的特化版本。它旨在帮助开发者构建快速且具成本效益的代理,将自然语言转化为可执行的 API 操作。
具体的应用往往需要专业模型。在本文中,我们演示如何微调 FunctionGemma,以处理 工具选择歧义——即模型在需要调用一个或多个看似相似的函数时进行选择。我们还推出了 FunctionGemma Tuning Lab,这是一款演示工具,使得在不编写任何训练代码的情况下即可完成此过程。
为什么要为工具调用进行微调?
如果 FunctionGemma 已经支持工具调用,为什么仍然需要微调?
答案在于 上下文和策略。通用模型并不知道你的业务规则。微调的常见用例包括:
- 消除选择歧义 – 当用户询问 “旅行政策是什么?” 时,基础模型可能会默认进行 Google 搜索。而企业模型则应搜索内部知识库。
- 超专业化 – 训练模型掌握公共数据中不存在的细分任务或专有格式,例如处理 domain‑specific mobile actions(如控制设备功能)或解析内部 API 以构建高度复杂的监管报告。
- 模型蒸馏 – 使用大模型生成合成训练数据,然后微调一个更小、更快的模型,以高效运行特定工作流。
案例研究:内部文档 vs. Google 搜索
让我们来看一个来自技术指南的实际示例,演示如何使用Hugging Face TRL库对 FunctionGemma 进行微调。
挑战
目标是训练模型区分两种特定工具:
search_knowledge_base– 内部文档search_google– 公共信息
当被问到 “用 Python 编写一个简单递归函数的最佳实践是什么?” 时,通用模型会默认使用 Google。
当被问到 “差旅餐饮报销上限是多少?” 时,模型需要知道这是一个内部政策问题。
解决方案
为了评估性能,我们使用了 bebechien/SimpleToolCalling 数据集,其中包含需要在上述两种工具之间做出选择的示例对话。
该数据集被划分为训练集和测试集。将测试集单独保留可以让我们在 未见 数据上评估模型,确保模型学习的是底层路由逻辑,而不是仅仅记住示例。
⚠️ 关于数据分布的关键说明
数据的划分方式与数据本身同等重要。
from datasets import load_dataset
# Load the raw dataset
dataset = load_dataset("bebechien/SimpleToolCalling", split="train")
# Convert to conversational format
dataset = dataset.map(
create_conversation,
remove_columns=dataset.features,
batched=False,
)
# 50 % training / 50 % testing split (no shuffling)
dataset = dataset.train_test_split(test_size=0.5, shuffle=False)
在指南中,特意使用了 50/50 划分 且 shuffle=False,以突出模型在大量未见数据上的提升。
警告: 如果你的源数据按类别排序(例如,先是所有
search_google示例,随后是所有search_knowledge_base示例),关闭洗牌会导致模型只在一种工具上进行训练,而在另一种工具上进行测试,从而导致性能灾难性下降。
最佳实践:
- 确保源数据已经混合,或
- 当顺序未知时设置
shuffle=True,这样模型在训练期间能够看到所有工具的平衡表示。
结果
模型使用 SFTTrainer(监督微调)进行 8 个 epoch 的微调。训练数据明确教会模型哪些查询属于哪个领域。

损失(错误率)在开始时急剧下降,表明模型快速适应了新的路由逻辑。
微调后,模型的行为发生了显著变化。它现在严格遵循企业政策。例如,当被问到:
“创建新的 Jira 项目的流程是什么?”
微调后的模型会正确输出:
call:search_knowledge_base{query:Jira project creation process}
因此,通过恰当的数据处理和针对性的微调,模型能够可靠地将查询路由到相应的内部或外部知识源。
Source: …
介绍 FunctionGemma 调优实验室
并不是每个人都想管理 Python 依赖、配置 SFTConfig,或从头编写训练循环。现在推出 FunctionGemma 调优实验室。

FunctionGemma 调优实验室是托管在 Hugging Face Spaces 上的用户友好演示。它简化了教会模型你的特定函数模式的整个过程。
关键特性
- 无代码界面 – 在 UI 中直接定义函数模式(JSON),无需 Python 脚本。
- 自定义数据导入 – 上传包含 用户提示、工具名称 和 工具参数 的 CSV。
- 一键微调 – 使用滑块调整学习率和 epoch,立即开始训练。默认设置适用于大多数使用场景。
- 实时可视化 – 实时观看训练日志和损失曲线,监控收敛情况。
- 自动评估 – 实验室会在训练前后自动评估性能,立即反馈改进效果。
开始使用调优实验室
要在本地运行实验室,使用 Hugging Face CLI 克隆仓库并启动应用:
hf download google/functiongemma-tuning-lab --repo-type=space --local-dir=functiongemma-tuning-lab
cd functiongemma-tuning-lab
pip install -r requirements.txt
python app.py
就这样——你已经可以使用自己的函数模式微调 FunctionGemma 了!
结论
无论您是选择使用 TRL 编写自己的训练脚本,还是使用 FunctionGemma Tuning Lab 的演示可视化界面,微调都是释放 FunctionGemma 完全潜能的关键。它可以将通用助手转变为具备以下能力的专用代理:
- 遵循严格的业务逻辑
- 处理复杂的专有数据结构
感谢阅读!