全新概念!Agent distillation是什么?

❝
一句话概括,本文堪称大模型能力榨汁机——把LLM的工具调用技能榨成浓缩汁,灌进小模型的保温杯里,从此小模型也能在数学题和冷知识问答现场蹦迪
第一阶段:识别核心概念
论文的motivation分析
这篇论文关注的是如何将大型语言模型(LLM)“变小”,也就是将其强大的推理与问题解决能力压缩到更小的语言模型(sLM)当中。现有的做法通常只做“静态”的知识或推理链(CoT)的蒸馏,但对于需要访问外部知识或者需要精准算术计算的复杂任务,小模型往往记不住所有知识、也不够稳定,容易出现“胡编乱造”或计算错误。 论文的主要动机是在小模型中同时保留“自主解决问题”和“调用工具(检索或代码执行)”这两种关键能力,让小模型可以像一个“代理人”(Agent)一样,先思考、再决策是否要检索信息或执行代码,最后得出答案。这样就不用单纯依赖模型内部的记忆,从而提高任务的正确率与泛化能力。
论文主要贡献点分析:
列出论文声称的主要创新点
- Agent Distillation:将大型语言模型在工具使用(如检索和代码执行)过程中的“交互式推理”行为,系统地蒸馏到小模型中。这不仅传递了静态的推理过程,还传递了“如何做动作、如何观察反馈、如何再次思考与行动”的能力。
- First-thought Prefix(首思前缀):在让大模型生成“交互式推理”示例时,用一种特殊提示来帮助大模型先以类CoT的方式进行初步思考,然后再进入Agent式的工具调用。这种做法可以让蒸馏过程得到更高质量的示例。
- Self-consistent Action Generation(自一致动作生成):在小模型推断时,让其一次生成多个候选工具动作,通过“多数投票”或“排除执行错误”来保证最后选定的代码或检索动作尽量有效,从而提高小模型在测试时的稳健性。
找出支撑这些创新的关键技术或方法
- 利用大模型产生“多轮思考与动作”的示例(Agent Trajectories),而不是仅仅产生一步到位的Chain-of-Thought文本。
- 在蒸馏阶段,有针对性地去除观察信息(如搜索结果文本、代码执行结果)在损失函数中的影响,只让小模型专注模仿“思考-执行工具”的过程。
- 采用特殊的提示策略(首思前缀)来优化大模型的示例质量,并在小模型推断阶段加入多次采样和投票机制(自一致动作生成)。
论文有哪些显著性的结果,不一定是数值上,也可以是重大意义
- 小模型在事实问答和数学推理等多项任务上,取得了超越以往单纯CoT蒸馏的效果。
- 论文的实验表明,哪怕只有几亿参数的小模型,只要掌握了使用检索和代码来辅助推理,也能在某些复杂问题上接近或超过更大模型的水平。
- 这种“让小模型学会做Agent”的思路,打开了小模型在更多真实场景中应用的可能性,例如在隐私要求更高或者资源更有限的场景,让小模型可离线部署并具备动态查找和计算能力。
理解难点识别:
分析哪些概念/方法是理解论文的关键
- Agent Distillation 本身:如何让一个小模型在推理过程中动态调用检索和代码。
- First-thought Prefix:一种针对提示语的技巧,用来把大模型原本的“逐步思考”与“交互式行动”结合在一起。
- Self-consistent Action Generation:在小模型推断时,如何通过采样多个工具调用提议,并选出最合适或最一致的动作。
找出这些概念中最具挑战性的部分
- 如何让小模型真正学会“观察反馈、根据反馈再修正下一步”的交互式推理流程,而不仅仅是学到表面形式。
- 如何在蒸馏过程中确保大模型产生的“交互示例”足够高质量,因为如果教师示例本身不佳,小模型也学不到真正的能力。
确定需要重点解释的核心概念
这里最值得深入展开的概念是Agent Distillation,因为这是整篇论文的核心:将大型模型的“行动逻辑”提炼到小模型里,从而实现与环境交互的过程式推理。围绕这一概念,还会涉及到“首思前缀(First-thought Prefix)”和“自一致动作生成(Self-consistent Action Generation)”这两个关键方法。
概念依赖关系:
梳理核心概念之间的关系
- Agent Distillation是总目标,所有技术点都围绕如何更好地把“能与工具交互的推理能力”从大模型转移到小模型。
- First-thought Prefix主要是为了解决教师端输出质量的问题,确保大模型在示例中既有“连贯的思考过程”也有“正确的工具调用顺序”,从而让学生模型学到更加正确的范式。
- Self-consistent Action Generation则针对学生模型在推断阶段可能会输出错误或不完整代码/检索指令的问题,通过多次采样和结果筛选来提高最终答案的质量。
综上,最需要深入解释的核心概念就是Agent Distillation,以及其中的两大技巧(首思前缀和自一致动作生成)如何支撑小模型学到完整的“思考—行动—观察”能力。
第二阶段:深入解释核心概念
设计生活化比喻:
选择一个日常场景或者容易理解的活动
为了帮助读者理解“Agent Distillation”在做什么,先设想一个日常情景——“带队旅行的导游和见习导游”。
用这个比喻来展示核心机制是如何工作的
-
在这个比喻中,**大型语言模型(LLM)**就好比一位经验丰富的老导游:
-
- 老导游(大模型)不仅知道很多景点的信息(内部知识),还能够在遇到不确定时,主动向当地旅游局(相当于检索工具)查询最新的景点资料;
- 如果需要精确安排路线(相当于精确计算),老导游还可以写出一段小程序或脚本来计算时间、费用等(相当于调用代码工具),并且会根据实时结果再修正安排。
-
而**小型语言模型(sLM)**就像一个见习导游:
-
- 见习导游虽然已经学过一些旅游知识,但并不熟悉所有景点,也没有太多经验去灵活应对突发问题;
- 如果见习导游只学到“死记硬背式”的景点介绍,很可能对新问题就无能为力,或者在精确计算时容易出差错。
确保比喻简单且直观,最好是大多数人都熟悉的场景
因此,这里要做的就是:让经验丰富的老导游(教师大模型)带着见习导游(学生小模型)到各大景区实际“跑线路”,把“先思考、再查询、再计算、再查看结果、最后得出结论”的整套带队流程“传授”给见习导游。这套“传授流程”就是Agent Distillation想解决的问题:不仅教“内容”,更教“如何决策使用外部工具、如何根据反馈再次修正”等完整的交互式推理能力。
建立比喻与实际技术的对应关系:
列出比喻中的关键元素
继续从“导游”的角度,把论文中几个关键技术点对应到具体元素上。
说明每个元素对应的实际技术概念
-
Agent Distillation
-
- 对应比喻:老导游亲自带领见习导游边实地走景点、边示范如何在不同场景下合理调用外部信息(问当地旅游局/查工具)和做规划(写代码做行程计算)。
- 在技术上:Agent Distillation要求大模型在给出答案的同时,也显示自己“思考—行动—观察”的轨迹(比如:Thought: … → Code: … → Observation: … → Thought: …),并让小模型通过模仿这种交互式过程学会当“代理人”。
-
First-thought Prefix(首思前缀)
-
- 对应比喻:在每次带队出发之前,老导游会先给见习导游做一个“简单梳理或大纲”,“咱们今天要去哪些地方,先要确定重点,然后再开始一路实地踏勘”。
- 在技术上:首思前缀让大模型先用“CoT(类似于先列提纲、理清思路)”的形式讲一下思考开头,然后再正式进入“思考-行动-观察”的循环。这样能保证整个带队示范的质量更好,而不是一开始就盲目操作。
-
Self-consistent Action Generation(自一致动作生成)
-
- 对应比喻:在见习导游自己带队时,为了减少失误,他会在关键决策时多询问几个老同事(也算多次思考)看看是否有人发现问题,然后挑选出最可靠的做法再实施。
- 在技术上:让小模型在每一步(例如要调用检索工具或写一段计算代码时)可以一次生成多个“候选动作”,并利用“投票”或“排除出错”的机制,最终选一个最符合一致性、不会报错的执行路径,以此减少失误。
解释为什么这些对应关系是合理的
通过以上映射,我们可以把论文的关键点与导游的场景一一对号入座,形成直观的理解。
深入技术细节:
从比喻过渡到实际的技术原理
在这一部分,我们从比喻过渡到实际论文中的关键数学公式与技术实现。
解释相关的数学公式或算法,对于每个数学公式:
首先给出原始数学形式
论文中用于描述“Agent Distillation”的训练目标,最核心的是公式 (4)(原文):
-
原版公式含义
-
- 表示输入问题或任务;
- 是训练集中包含的各种任务;
- 表示大模型作为Agent时做出的“思考—动作—观察”序列(在论文中, 是 这样的循环:思考 、执行动作 、获得观察 );
- 表示教师大模型在Agent提示下如何生成这条完整的交互式轨迹;
- 表示学生模型在已经看到之前所有思考、动作和观察之后,生成当前思考与动作的概率;
- 整个公式的目标是最小化(即让学生模型尽可能模仿教师的轨迹),因此有一个负号 以及对数似然 的期望。
然后提供一个符号替换版本,用自然语言替换数学符号
-
符号替换版本(自然语言解释)
-
- “要让见习导游(学生模型)尽量模仿老导游在每一步的思考与决策,从而学到在任何可能出现的问题场景下,都能沿用同样的策略。具体做法是:把老导游真实带队时每一步的想法和行为,当作‘正确答案’,然后用学习算法使得见习导游输出这些想法和行为的概率最大。”
说得更通俗一点:
❝
对于训练集中每个问题 ,大模型会示范一段“多步思考和多次工具调用”的完整轨迹 。学生模型要通过学习,让自己在每一步输出“和示范中一样的思考与行动”。如此迭代,学生模型就会逐渐“内化”这种交互式推理。
论文中关于首思前缀的核心公式 (5)(原文):
-
原版公式含义
-
- 表示先用CoT提示生成大模型第一步的思考;
- 则表示从这个第一步思考出发,再进入Agent模式,生成后续的“思考-动作-观察”序列。
- 这样就能让Agent的第一步思考带有“稳健的结构化思路”,而不是一上来就盲目调用工具。
-
符号替换版本(自然语言解释)
-
- “先让老导游自言自语几句,把当天路线要点说清楚();然后再开始实际带队的过程 ,以保证带队过程中不会一开始就走偏。”
通过“首思前缀”,我们获得更高质量的教师示例,从而在蒸馏时让学生学到更可靠的起始思考方式。
将技术细节与比喻相互映射:
解释每个技术步骤在比喻中的体现
-
Agent Distillation(公式 (4))
-
- 在带队场景中,就是“见习导游”要完整模仿“老导游”的所有行为:从第一步思考到最后的决策如何带领游客行走、什么时候去查资料、什么时候编写计算脚本等。
- 公式里的对数似然最大化,就像“不断考核见习导游是否每一步都跟老导游的做法一样”。如果两者的思考或行为差别大,就会有更大的惩罚,鼓励见习导游下次更贴近老导游。
-
First-thought Prefix(公式 (5))
-
- 对照到比喻里就是“每天先让老导游用一小段‘出发前简报’的方式先给出梗概”,再正式开始边走边示范。这样见习导游也更容易学到一个“初步规划—然后按步骤执行”的连贯流程。
-
Self-consistent Action Generation
-
- 在比喻中,见习导游如果有多个方案,不确定该用哪种路线,就去咨询“多个老同事”或“多角度思考”,挑一个相对一致且可行的方案再实施。对应技术上即多次采样动作,然后根据执行反馈与一致性来决定采用哪个动作。
指出比喻的局限性
- 在导游场景下,或许看起来只有一个“老导游”和一个“见习导游”,但在实际训练中会有大量问题、庞大的训练数据。
- 在现实中,见习导游不会照着老导游的话“逐令逐句复述”,但在模型训练中,学生模型是“分步模仿”老师的令牌级输出。这种层面的技术细节比喻很难完全涵盖。
总结:
重申比喻与实际技术的核心联系
通过“导游”比喻,我们可以看到Agent Distillation不是仅仅教“结论”,而是教“如何在每一步做决策并利用外部工具/计算结果来辅助决策”。
强调这种对应关系如何帮助理解整个概念
- 公式 (4) 精确描述了学生模型如何通过最大化模仿教师的交互式步骤来学会整套带队能力;
- 公式 (5) 则说明了如何利用CoT风格的先发思考帮助教师示范更高质量的第一步,让后续带队轨迹更可靠;
- 最终,小模型通过这样的方式,大幅提升在未知环境中的应对能力(比如调用检索来获取新知识,调用代码来精确计算),而不是“死背答案”。
用比喻来总结最关键的数学原理
这个过程就是让“见习导游”全面复制“老导游”的带队策略,并在实际推断时还能“多角度思考”,最大程度降低出错几率。读者也由此能更好地理解为什么这套方法比单纯记忆知识或静态的CoT蒸馏更能“对付各种复杂任务”。
第三阶段:详细说明流程步骤
详细流程说明与示例
在这个阶段,我们要描述论文的整体思路:如何让“小模型”学习到“大模型”在使用工具(检索 & 代码执行)时的交互过程。
下文的流程可以分为三个主要阶段:
- 教师大模型生成训练示例(Agent Trajectories)
- 对学生小模型进行Agent Distillation(学习思考-行动的轨迹)
- 推断阶段,学生小模型在遇到新任务时如何运作(Self-consistent Action Generation可选)
以下以作者在论文中使用的场景为例:
- 任务场景包含数学推理(需要代码进行精确计算)和事实问答(需要检索获取最新信息)。
- 教师模型是一个较大参数量的Qwen2.5-32B-Instruct,学生模型则是Qwen2.5系列的小模型(如3B、1.5B等)。
教师大模型生成训练示例
输入:
- 训练集中的每个问题 (例如1000道HotPotQA的问题、2000道MATH的问题)
- 适合Agent使用的提示词(prompt),包括第一步可能加入的
First-thought Prefix
过程:
-
对每个问题 ,先根据是否需要首思前缀(FTP):
-
- 如果使用FTP,则让教师模型先用样式产生第一步思考,再用提示启动Agent模式。
- 如果不使用FTP,则直接进入提示,让模型开始“思考-动作-观察”循环。
-
教师模型会按照设定的最大步数(例如5步或10步)输出一个多轮序列:
-
- 这里是教师模型在第步的思考文本,是它想调用的工具指令(检索或代码),是外部环境(检索结果或代码执行结果)返回的观察。
-
对于完全错误的答案,可以在生成后进行过滤,保留正确或质量较高的“示范轨迹”数据。
输出:
- 训练示例集合,每个问题都带有教师大模型的“思考-行动-观察”示范(可带或不带首思前缀的版本)。
# 伪代码示例
for each x in train_dataset:
if use_first_thought_prefix:
# Step 1: CoT to get first thought y1
y1 = teacher_model.generate_cot(x, cot_prompt)
# Step 2: Agent continues from y1
tau = teacher_model.agent_mode(x, prefix=y1, agent_prompt)
else:
# Direct agent
tau = teacher_model.agent_mode(x, agent_prompt)
# Filter out wrong answers or low-quality trajectories
if is_correct(tau):
save_to_dataset(x, tau)
学生小模型Agent Distillation训练
输入:
- 从上一步得到的训练示例集合
- 学生模型(例如 Qwen2.5-3B)当前的初始参数或一个基础的指令微调版本
过程:
- 根据论文的公式 (4),我们不对中的观察计算损失,只让学生模型模仿教师的思考和动作。
- 具体做法是:对每个示例,在训练时把输入序列拼接成形如(注:此处的 等为变量值,非字符串) 但是在计算损失时,只针对 和 的token进行监督。
- 采用语言模型的常规自回归训练方法(如交叉熵损失),最大化学生模型生成这些思考与动作的似然度。
输出:
- 一个具有“Agent”能力的小模型:它已经学到当看到与问题类似的输入时,如何分步思考,以及如何决定是否调用检索或代码。
student_model = initialize_small_model(...)
for each (x, tau) in distillation_dataset:
# tau包含(r1, a1, o1), (r2, a2, o2), ...
input_sequence = format_into_sequence(x, tau)
# 这里不在损失中包含o_t (观察)
loss = compute_loss(student_model, input_sequence, mask_out_observations=True)
update_model_parameters(student_model, loss)
推断阶段:学生小模型的运作与Self-consistent Action Generation
经过上一步训练后,学生模型可以在推断时模拟“思考-行动”的交互式过程。若论文中提到的SAG(自一致动作生成)也要用上,则流程如下:
输入:
- 测试集中的新问题 (可能是从未见过的类型或跨领域问题)
- 学生模型蒸馏后的权重
过程:
-
初始化一个循环计数 。在每一步:
-
- 学生模型先产出一段“Thought: …”,再产出“Action: …”。
- 如果不使用SAG,则是贪心或低温度采样,直接拿这一次动作。
- 如果使用SAG,就同时采样多个动作候选,例如个 (),然后让一个轻量级的执行器(相当于Python解释器、检索API)帮我们测试哪一个执行更正确或与其他结果最一致。
-
执行完Action之后,会获得Observation(返回的搜索文档、代码执行结果等)。
-
学生模型在下一个step继续“Thought: … → Action: …”,直到达到终止条件(例如显式返回“Final Answer”或超过最大步数)。
-
将最终生成的回答输出给用户。
输出:
- 最终的答案、以及中间可能生成的代码或检索语句记录。
function inference_with_agent_distillation(student_model, x_test):
observation_history = []
for t in 1 to max_steps:
# 1) Generate multiple actions if using SAG
if use_SAG:
action_candidates = sample_n_actions(student_model, x_test, observation_history, n=8)
# 2) Evaluate each action candidate
valid_actions = []
for action in action_candidates:
if is_executable(action):
result = execute_action(action)
if is_valid_result(result):
valid_actions.append((action, result))
# 3) Pick action with majority voting or best consistency
chosen_action, chosen_result = select_best_action(valid_actions)
else:
# Normal single pass generation
chosen_action = model_generate_action(student_model, x_test, observation_history)
chosen_result = execute_action(chosen_action)
observation_history.append(chosen_result)
# Check if "Final Answer" is produced
if is_final_answer(chosen_result):
return chosen_result
return "No valid answer found"
流程的输入输出衔接
从上述三个子过程可以看到,每一步都有清晰的输入输出对接:
- 教师示例生成:输入训练任务,输出“思考—动作—观察”轨迹数据;
- 学生蒸馏训练:输入轨迹数据,输出带有Agent能力的学生模型;
- 推断阶段:输入新问题和蒸馏后的学生模型权重,输出最终答案(过程可使用SAG保证行动的一致性)。
读者若严格按照此流程,就能复现论文中所述方法,并在相应的数据集上进行训练与测试。
整体流程伪代码总结
下面给出一个更汇总的伪代码框架,涵盖所有主要环节:
# === Part A: Generate Teacher Trajectories ===
distillation_dataset = []
for x in train_dataset:
# Possibly do first-thought prefix
y1 = teacher_model.generate_cot(x) if use_first_thought_prefix else None
tau = teacher_model.agent_mode(x, prefix=y1)
if is_correct(tau):
distillation_dataset.append((x, tau))
# === Part B: Distill to Student Model ===
student_model = load_pretrained_small_model(...)
for epoch in 1..num_epochs:
for (x, tau) in distillation_dataset:
input_sequence = format_sequence_excluding_observation(x, tau) # Key: observations are not part of loss
loss = student_model.forward_and_compute_loss(input_sequence)
student_model.update(loss)
# === Part C: Inference with Self-consistent Action Generation ===
function agent_inference(student_model, x_test):
obs_history = []
for t in range(1, max_steps):
# multiple samples for the next action
candidate_actions = student_model.sample_actions(x_test, obs_history, n=8) # SAG specific
# filter or vote for best action
best_action, best_result = select_by_majority_or_no_error(candidate_actions) # SAG specific
obs_history.append(best_result)
if is_final_answer(best_result): # Check if model signals completion
return best_result
return "No valid answer found."
这样,任何没有看过原论文的读者,也能根据这段伪代码重建出完整的方法流程,实现从教师示例到学生模型推理的全过程。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐



所有评论(0)