随着大语言模型的能力提升,智能体(Agent)已成为自动化任务和复杂流程管理的核心工具。传统推理方式已难满足多轮决策、工具调用和高效自我修复等需求。在人工智能平台 PAI 中,本文介绍以 ReAct 轨迹为基础的数据构造与模型蒸馏方案,通过结构化任务和持续挖掘高难度样本,显著提升小模型的 Agent 能力和实际落地效能。该方案已在 Qwen3 系列小模型上验证,助力 PAI 用户以更低成本快速训练和部署高性能 Agent 模型。
基于 Qwen3 系列底座,PAI 团队推出一套面向 Agent 训练的开源成果,通过数据飞轮,将真实任务与合成任务结合,并从失败样本中持续挖掘并不断合成新的难样本,推动模型能力持续迭代。更多技术细节请点击:智能体时代的数据飞轮:Agentic小模型的迭代进化
01
Agent 数据构造与模型蒸馏解决方案主要涉及如下步骤:
1. 部署教师模型
在 PAI-Model Gallery 选择能力更强的教师大模型并完成部署,获取可调用的推理服务地址(Endpoint/API)。后续数据合成会批量调用该服务生成高质量回复。
2. 安装 EasyDistill 算法库
在用于运行链路的开发/训练环境中安装 EasyDistill 及依赖,确保具备数据合成与蒸馏训练的统一工具集。
3. 执行数据合成链路
将准备好的种子数据作为输入,调用教师模型构建 Agent 训练数据。
4. 执行模型蒸馏链路
使用合成后的蒸馏数据对学生模型进行训练,让学生模型学习教师模型的 Agent 能力,产出模型并部署到实际应用场景。
5. 模型在线部署
使用 PAI-EAS 将训练后的模型部署至 PAI-EAS,从而支持线上业务。
02
在开始执行操作前,请确认您已完成以下准备工作:
-
已开通 PAI(DSW、DLC、EAS)后付费,并创建默认工作空间,详情请参见开通PAI并创建默认工作空间 [1]。 -
已创建 OSS 存储空间(Bucket),用于存储训练数据和训练获得的模型文件。关于如何创建存储空间,详情请参见控制台创建存储空间 [2]。
03
04
EasyDistill(GitHub地址 [4])是阿里云 PAI 团队针对大模型蒸馏任务开源的算法套件。其核心优势是支持端到端的多范式蒸馏链路,极大简化了数据合成、链路搭建、实验复现的复杂度。在你的开发环境(如 PAI-DSW Notebook)中,克隆 EasyDistill 代码库,并且安装其依赖:
git clone https://github.com/modelscope/easydistill
05
阶段一:Agent任务合成
首先,需要以 JSONL(每行一个 JSON)格式准备 persona 种子。例如:
{"id": "uuid1", "persona": "A passionate fan of Afrikaans music and die-hard supporter of Spoegwolf"}{"id": "uuid2", "persona": "An AI research scientist focused on natural language understanding."}
每一行包含唯一 id 及 persona 描述。您可以根据业务需要,大量编写或采集不同风格/角色/场景的人设。在 EasyDistill 框架中,我们也提供了示例 Persona 种子文件(如configs/persona_5K.jsonl)。
EasyDistill 的数据合成链路以配置文件(如configs/agentkd_data_gen.json)驱动。该配置决定了数据来源、目标输出路径、任务生成 Agent 所采用的大模型、API 接口等信息。主要参数如下:
-
paths.data_file: 指向刚才准备的 persona 输入 JSONL 路径。 -
logging.task_file_path: 指定生成的虚拟 agent 任务输出地址(如data/virtual_tool_use_tasks.jsonl)。 -
step_models: 设定三步任务生成流程所需的模型(如ToolSetGenAgent、PolicyTaskAgent、FinalTaskAgent),分别负责工具集生成、策略轨迹生成及最终任务合成。 -
api_configs: 配置各环节调用的教师模型 API 和密钥,比如将 DeepSeek、GLM 等大模型的API填入。 -
processing: 数据合成的参数,例如max_workers为任务并发数,max_tasks为最大生成的 Agent 任务数。
一个典型的配置片段示例如下:
{"job_type": "agentkd_data_gen","inference": {"step_models": {"ToolSetGenAgent": {"model_name": "deepseek-v3.2","max_tokens": 40960,"temperature": 0.9},"PolicyTaskAgent": {"model_name": "deepseek-v3.2","max_tokens": 40960,"temperature": 0.9},"FinalTaskAgent": {"model_name": "deepseek-v3.2","max_tokens": 40960,"temperature": 0.9}},"processing": {"max_workers": 8,"max_tasks": 100},"logging": {"task_file_path": "data/virtual_tool_use_tasks.jsonl"},"paths": {"data_file": "configs/persona_5K.jsonl"},"api_configs": {"deepseek-v3.2": {"api_base": "YOUR_DEEPSEEK_API_BASE","api_key_env": "YOUR_DEEPSEEK_API_KEY"},"default": {"api_base": "http://localhost:8000/v1","api_key_env": "EMPTY"}}}}
配置完成后,只需一行命令即可自动并行化生成大批高质量轨迹训练数据:
# 使用python拉起任务python easydistill/agentkd/data_gen.py --config configs/agentkd_data_gen.json# 使用easydistill拉起任务easydistill --config configs/agentkd_data_gen.json
EasyDistill 会自动读取 persona 种子,借助部署的 LLM 教师模型,产出经过 persona 增广的训练样本。输出的data/virtual_tool_use_tasks.jsonl即为后续链路的直接输入。其中,输出的data/virtual_tool_use_tasks.jsonl每条样本都描述合成的候选 Agent 任务集,以及对应的工具,示例如下:
{"id": "62a623c3-55cc-48c0-a03b-250711d486e7","checked_tools": [{"name": "get_deployment_status","description": "Queries the current status of a service deployment by service name.","parameters": {"type": "object","properties": {"service_name": {"type": "string","description": "Name of the deployed service (e.g., 'api-gateway')"}},"required": ["service_name"]},"outputs": {"type": "object","properties": {"status": {"type": "string","description": "Current status: 'active', 'failed', 'rolled_back', 'not_found'"},"deployed_version": {"type": "string","description": "Version tag currently deployed"},"last_updated": {"type": "string","description": "Timestamp of last deployment (ISO format)"}}}},...],"policy": "...","tasks_and_backgrounds": [{"task": "We need to respond to the recent outage in the API gateway by rolling back the deployment, fixing the issue, and notifying the leads.","tool_return_expected": {"normal_path": [{"tool_name": "get_deployment_status","input": {"service_name": "api-gateway"},"expected_output": {"status": "active","deployed_version": "v2.5.1","last_updated": "2024-04-05T08:32:10Z"}},...],"hack_path": []},"user_background": "I'm a project manager overseeing incident response for a critical production system...","hack_success_user_background": "","additional_parameters": "","test_policy": "This test case does not violate any policy","user_escape_strategy": "This test case does not violate any policy","evaluation": "The task is completed only if: ..."},...]}
阶段二:Agent任务求解
在完成虚拟 Agent 任务数据合成后,下一步需要让强大的教师大模型对这些任务进行求解,模拟完整的 Agent 问题求解过程。这一阶段不仅能进一步丰富训练样本的决策轨迹与工具交互信息,同时为后续的模型蒸馏提供更真实、更贴近应用场景的参考数据。
任务求解同样通过 EasyDistill 配置(如configs/agentkd_solve_task.json)实现,示例如下:
{"job_type": "agentkd_solve_task","inference": {"step_models": {"SolveAgent": {"model_name": "deepseek-v3.2","max_tokens": 10240,"temperature": 0.9},"MockToolAgent": {"model_name": "deepseek-v3.2","max_tokens": 10240,"temperature": 0.9}},"processing": {"max_workers": 8,"max_tasks": 100},"logging": {"repeat_times": 1,"already_processed_path": "logs/solved_tasks.jsonl","solve_path": "logs/solve_output/"},"paths": {"data_file": "data/virtual_tool_use_tasks.jsonl"},"api_configs": {"deepseek-v3.2": {"api_base": "YOUR_DEEPSEEK_API_BASE","api_key_env": "YOUR_DEEPSEEK_API_KEY"},"default": {"api_base": "http://localhost:8000/v1","api_key_env": "EMPTY"}}}}
配置就绪后,在命令行中执行:
# 使用python拉起任务python easydistill/agentkd/solve_task.py --config configs/agentkd_solve_task.json# 使用easydistill拉起任务easydistill --config configs/agentkd_solve_task.json
EasyDistill 会自动读取虚拟任务文件,依次分配至部署的大语言模型进行求解。每个任务处理完毕后,会在制定目录下输出包含完整推理过程和工具交互明细的结构化 JSON 文件(如logging.solve_path)。
阶段三:Rubrics评价与样本过滤
在合成的 Agent 任务被教师大模型求解后,实际用于学生模型训练的数据还需进一步质控。这一阶段利用 Rubrics 评价器,对生成的每条解决轨迹进行自动化打分和挑选,确保流入训练集的都是高质量、合规、可解释的 Agent 轨迹。这样可以有效剔除因模型误判、异常流程生成的不合理“噪声解”,保证教学数据干净、精准。
Rubrics 筛选功能由 EasyDistill 的agentkd_rubrics_filter实现,相应配置文件(如configs/agentkd_rubrics_filter.json)主要参数:
-
inference.paths.solution_path:需指定任务求解输出根目录(步骤二的输出),如data/solve_output/ -
dataset.labeled_path:筛选后符合训练入集标准数据的输出路径,例如data/filtered_train.jsonl -
inference.step_models.RubricsAgent:执行评分与过滤的评价大模型Agent配置
配置示例:
{"job_type": "agentkd_rubrics_filter","dataset": {"labeled_path": "data/tool_use_training_data.json"},"inference": {"step_models": {"RubricsAgent": {"model_name": "deepseek-v3.2","max_tokens": 10240,"temperature": 0.3,"solution_top_k": 3}},"processing": {"max_workers": 8,"max_tasks": null},"logging": {"already_processed_path": "logs/rubrics_processed.jsonl"},"paths": {"solution_path": "logs/solve_output/"},"api_configs": {"deepseek-v3.2": {"api_base": "YOUR_DEEPSEEK_API_BASE","api_key_env": "YOUR_DEEPSEEK_API_KEY"},"default": {"api_base": "http://localhost:8000/v1","api_key_env": "EMPTY"}}}}
Rubrics 评价流程同样支持一键启动:
# 使用python拉起任务python easydistill/agentkd/rubrics.py --config configs/agentkd_rubrics_filter.json# 使用easydistill拉起任务easydistill --config configs/agentkd_rubrics_filter.json
系统会自动对每个任务的所有大模型求解逐一用 Rubrics 评价(如根据预设的成功标准、行动链路完整性、工具调用有效性等),得出 PASS/FAIL 判定,自动筛选表现最佳的 PASS 方案,并转换成训练数据格式。
经过该环节后,便形成了高度可靠、严格把控的 Agent 任务对话训练集,有力支撑后续的高质量蒸馏与小模型能力进化。其数据格式为:
[{"conversations": [{ "from": "system", "value": "..." },{ "from": "human", "value": "..." },{ "from": "gpt", "value": "..." },...]}]
06
在经过严密的 Rubrics 评价与过滤后,高质量的 Agent 任务轨迹数据已准备就绪。最后一步是利用这些数据,对目标学生小模型进行监督微调(SFT, Supervised Fine-Tuning)式的蒸馏训练,让小模型充分学习到教师大模型在思考-行动-工具使用全流程上的能力,从而大幅提升实际 Agent 行为效能。
蒸馏训练同样通过配置文件(如 configs/agentkd_distill.json)控制,主要参数有:
-
dataset.labeled_path:由 Rubrics 阶段输出的合格训练集路径。 -
models.student:设定待蒸馏的学生模型(如某小型LLM权重)。 -
training:详细的训练超参数,包括输出目录(output_dir)、训练轮次(num_train_epochs)、学习率(learning_rate)、批次大小等。
配置片段典型示例:
{"job_type": "agentkd_distill","dataset": {"labeled_path": "data/tool_use_training_data.json"},"models": {"student": "Qwen/Qwen2.5-7B-Instruct","trust_remote_code": true},"training": {"output": {"output_dir": "output/tool_use_sft","logging_steps": 10,"save_steps": 500,"overwrite_output_dir": true},"dataset": {"cutoff_len": 8192,"dataloader_num_workers": 4},"num_train_epochs": 3,"per_device_train_batch_size": 1,"gradient_accumulation_steps": 8,"gradient_checkpointing": true,"bf16": true,"learning_rate": 1e-5,"warmup_ratio": 0.1}}
准备好配置文件后,只需一条命令即可启动端到端学生模型蒸馏:
# 使用python拉起任务python easydistill/agentkd/train.py --config configs/agentkd_distill.json# 使用easydistill拉起任务easydistill --config configs/agentkd_distill.json
此时,EasyDistill 将自动读取过滤后的数据,按照 SFT 蒸馏范式进行模型训练。过程中,学生模型会最大程度拟合同类型大模型的 ReAct 推理链路、工具交互行为及策略分解等能力。值得说明的是,以上 EasyDistill 配置提供了标准的 trl 算法库训练脚本,您也可以自行选用其他框架进行模型训练,例如 ms-swift、LlamaFactory 等。
至此,一套完整的基于高质量 Agent 任务轨迹的训练方案就全部跑通。你可以将新模型直接在 PAI-EAS 等环境上线应用,持续赋能真实业务流程;或进一步拓展到更大规模的任务挖掘、高难度场景覆盖,为企业级 Agent 产品提供坚实模型基础。
07
PAI-EAS 提供了一站式大模型部署解决方案,可一键部署训练后的大模型模型,免去手动部署时复杂的环境配置、性能调优和成本管理。
您可以参考PAI-EAS部署开源模型的解决方案完成部署(https://help.aliyun.com/zh/pai/user-guide/deploy-an-llm/)。
[2] https://help.aliyun.com/zh/oss/getting-started/create-buckets-6
[3] https://help.aliyun.com/zh/pai/use-cases/one-click-deploy-deepseek-v3-2
[4] https://github.com/modelscope/easydistill
更多推荐


