微调LLM提升工具调用能力的ShareGPT数据格式 1. 引入我们做LLM微调最常见的是Alpaca格式的数据Alpaca是最简单、最通用的指令微调格式。它没有对话历史只有 指令 (Instruction) 输入 (Input) 输出 (Output)适合单轮指令学习。如果我们想微调LLM更好的做工具调用等Agent功能要怎么做呢2. ShareGPT格式相比 Alpaca 格式的数据集ShareGPT格式支持更多的角色种类例如 human、gpt、observation、function 等等。它们构成一个对象列表呈现在 conversations 列中。注意其中 human 和 observation 必须出现在奇数位置gpt 和 function 必须出现在偶数位置。默认所有的 gpt 和 function 会被用于学习参考1。如下是一个ShareGPT格式的多轮对话数据样例[{system:你是贴心中文助手回答简洁通俗,conversations:[{from:human,value:推荐一部国产动画},{from:gpt,value:《长安三万里》画面唯美诗词氛围感拉满。},{from:human,value:还有短篇吗},{from:gpt,value:《中国奇谭》每一集独立小故事。}]}]3. 带工具调用的ShareGPT格式根据参考2我们可以看到这样的数据格式[{conversations:[{from:human,value:我需要为John Doe生成一张发票。他购买了2个苹果每个$1以及3根香蕉每根$0.5。},{from:function_call,value:{\name\: \generate_invoice\, \arguments\: {\customer_name\: \约翰·多伊\, \items\: [{\name\: \苹果\, \quantity\: 2, \price\: 1}, {\name\: \香蕉\, \quantity\: 3, \price\: 0.5}]}}},{from:observation,value:{\invoice_id\: \INV12345\, \customer_name\: \约翰·多伊\, \items\: [{\name\: \苹果\, \quantity\: 2, \price\: 1, \total\: 2}, {\name\: \香蕉\, \quantity\: 3, \price\: 0.5, \total\: 1.5}], \total\: 3.5, \status\: \生成\}},{from:gpt,value:发票已成功生成。发票编号为INV12345。约翰·多伊的总金额为$3.5。发票包含2个苹果总金额为$2以及3根香蕉总金额为$1.5。}],tools:[{\name\: \generate_invoice\, \description\: \生成发票\, \parameters\: {\type\: \object\, \properties\: {\customer_name\: {\type\: \string\, \description\: \客户名称\}, \items\: {\type\: \array\, \items\: {\type\: \object\, \properties\: {\name\: {\type\: \string\, \description\: \The item name\}, \quantity\: {\type\: \integer\, \description\: \The quantity of the item\}, \price\: {\type\: \number\, \description\: \The price per unit\}}, \required\: [\name\, \quantity\, \price\]}}}, \required\: [\customer_name\, \items\]}}, {\name\: \generate_password\, \description\: \生成随机密码\, \parameters\: {\type\: \object\, \properties\: {\length\: {\type\: \integer\, \description\: \密码的长度\}}, \required\: [\length\]}}]}]这是一个带工具调用Function Calling的 ShareGPT 对话格式专门用来训练大模型学会调用工具 / 函数比如生成发票、查天气、调用 API。上面这个数据样例抽象出来它的结构是这样的[{conversations:[对话流程用户提问 → 模型调用工具 → 工具返回结果 → 模型回答],tools:[告诉模型你可以用哪些函数]}]4. 总结本文介绍了三种用于LLM微调的数据格式各有侧重1.Alpaca格式最简单通用的指令微调格式包含“指令输入输出”三元组适合单轮指令学习但不支持对话历史。2.ShareGPT格式支持多轮对话包含多种角色human、gpt、observation、function等对话以对象列表形式呈现在conversations列中其中human和observation必须出现在奇数位置gpt和function必须出现在偶数位置。3.带工具调用的ShareGPT格式在ShareGPT格式基础上扩展专门用于训练大模型进行工具调用Function Calling。数据包含conversations对话流程用户提问→模型调用工具→工具返回结果→模型回答和tools可用的函数列表两部分使模型能够学习如何调用外部工具/API。这三种格式从简单到复杂分别适用于不同的微调场景基础指令学习、多轮对话能力训练、以及工具调用/Agent功能开发。5. 参考https://github.com/hiyouga/LlamaFactory/blob/main/data/README_zh.mdhttps://github.com/hiyouga/LlamaFactory/blob/main/data/glaive_toolcall_zh_demo.json

相关新闻

最新新闻

百度网络研发工程师笔试题解析:TCP、Linux内核与网络调优实战

百度网络研发工程师笔试题解析:TCP、Linux内核与网络调优实战

讲真,看到“百度2019校招核心网络研发工程师笔试题(第三批)”这个标题,我第一反应是——又到了每年被网络基础虐一遍的时候了。这个岗位和普通后端不一样,它面向的是百度整个网络基础设施,从接入层到IDC互联…

2026/8/28 4:39:36
蓝桥杯Python真题解析:从因数分解到算法优化,掌握货物摆放问题核心

蓝桥杯Python真题解析:从因数分解到算法优化,掌握货物摆放问题核心

1. 项目概述:从一道真题看蓝桥杯Python赛道的核心能力最近在带学生备赛蓝桥杯,发现很多同学刷题时容易陷入一个误区:只追求AC(通过),却忽略了题目背后对算法思维、数学基础和代码效率的深度考察。今天我们就…

2026/8/28 4:39:36
Linux客户端开发核心:信号量、epoll与稳定性实战

Linux客户端开发核心:信号量、epoll与稳定性实战

许多做客户端开发的朋友一听到Linux方向,第一反应是“这岗位是不是主要在写驱动、搞内核”?实际上,以奇安信2020年这次客户端开发工程师(Linux开发)的岗位要求来看,方向非常明确:面向Linux平台的…

2026/8/28 4:39:36
蓝桥杯国赛C++算法实战:从高精度到动态规划的解题精要

蓝桥杯国赛C++算法实战:从高精度到动态规划的解题精要

1. 项目概述:一次国赛的深度复盘与实战拆解“蓝桥杯”国赛,对于每一个学习C/C的在校生和算法爱好者来说,都是一个极具分量的里程碑。它不像普通的课程作业,也不像一些商业项目,它的核心价值在于在极端有限的时空约束下…

2026/8/28 4:39:36
浏览器开源三维建模工具Partmode:从SolidWorks迁移的评估与实践

浏览器开源三维建模工具Partmode:从SolidWorks迁移的评估与实践

Partmode 这类“开源 浏览器”三维建模工具,其实已经在悄悄改变工程师的选型思路。本文将从背景概念、环境准备、核心功能拆解、完整验证流程、常见报错排查以及工程落地建议几个方面,完整梳理一套可参考的评估和使用路径,无论是想替代 Soli…

2026/8/28 4:39:35
安全MCU与BLE 5融合实战:从安全启动到射频调优

安全MCU与BLE 5融合实战:从安全启动到射频调优

最近手头拿到一颗集成了Bluetooth 5射频和高级安全引擎的MCU,这在以前基本要外挂一颗蓝牙模块、再配一颗独立安全芯片才能做到。拿到这颗料之后,我把安全启动、密钥管理、BLE 5的各种PHY模式、射频布板、还有工具链都完整趟了一遍,中间踩了不…

2026/8/28 4:34:35