大模型LLM 常见面试题
微调/预训练
什么是大模型微调?与预训练的核心区别是什么?
大模型微调(Fine-tuning of Large Models)是指在预训练模型的基础上,使用特定任务的数据对模型进行再训练,以适应特定应用场景的需求。与预训练(Pre-training)相比,微调的核心区别在于目标、数据来源和训练方式
目标不同:
- 预训练:旨在让模型学习通用的语言或知识表示,通常在大规模通用数据集上进行训练。
- 微调:旨在让模型适应特定任务,如情感分析、问答系统等,通常在特定任务的数据集上进行训练
数据来源不同:
- 预训练:使用大规模的通用数据集,如维基百科、书籍语料等。
- 微调:使用与特定任务相关的标注数据集。
训练方式不同:
- 预训练:通常采用无监督或自监督学习方式。
- 微调:通常采用监督学习方式,利用标注数据进行训练。
常见的微调任务有哪些?
大模型微调(fine-tuning)是指在预训练模型的基础上,使用特定任务的数据对模型进行再训练,以适应特定应用场景的需求。常见的微调任务主要包括以下几类:
- 文本分类:将文本分为不同的类别,如垃圾邮件识别、情感分析等。
- 命名实体识别(NER):识别文本中的实体,如人名、地名、组织机构等
- 问答系统(QA):根据给定的问题,从文本中找出答案。
- 文本生成:生成与输入相关的文本,如摘要生成、对话生成等
- 机器翻译:将一种语言的文本翻译成另一种语言
- 多模态任务:处理多种类型的数据,如图文匹配、图像描述生成等,
常见的微调方法有哪些?
大模型微调(fine-tuning)是指在预训练模型的基础上,使用特定任务的数据对模型进行再训练,以适应特定应用场景的需求,常见的微调方法主要包括以下几类:
- 全量微调(Supervised Fine-Tuning/Instruction Tuning):是直接对预训练模型的所有参数进行再训练,以使模型适应特定任务或领域需求,这种方式能获得最佳的任务性能,但计算与存储开销极大。
- 参数高效微调(PEFT): 仅更新少量参数,冻结其余权重,从而大幅降低训练和存储成本,同时在许多场景下能达到接近全量微调的效果。
- Adapter Tuning:在每层 Transformer 中插入小型适配器模块,只训练这些新加参数即可快速适配任务
- LoRA(Low-Rank Adaptation):为每层添加低秩分解矩阵,并仅训练这些矩阵,实现参数量级的极大压缩。
- Prefix Tuning:在输入前加入可训练的前缀向量,模型本体权重完全冻结,用于指令或上下文效果微调。
- Prompt Tuning:只训练用于任务提示的嵌入向量,不改变模型内部结构,以“提示”形式引导模型行为。
- P-Tuning:将提示设计为可微分的模板,通过梯度优化找到最优提示模板,效果优于人工提示。
- BitFit:仅对偏置项(bias)进行微调,训练参数极少,但在一些分类任务中可保持合理性能
- 量化与混合微调方案:
- QLORA:结合4-bit 权重量化与 LORA,利用低精度存储与低秩适配,单卡即可微调百亿级模型,性能接近全量微调
- IR-QLORA:在 QLORA 基础上加入信息保留量化与弹性连结技术,进一步提升量化后微调模型的准确性。
- 增强检索式微调:在 RAG 系统中集成 LORA/QLORA,并引入 AI Judge 反馈机制,实现对检索增强生成模型的持续优化。
PEFT 是什么?为什么需要 PEFT?
PEFT (Parameter-Efficient Fine-Tuning) 一种在微调预训练大模型时,仅训练少量新增参数(如适配器模块、低秩增量矩阵、可微前缀或提示嵌入等),冻结原始模型大部分权重的策略,从而在计算和存储成本大幅降低的前提下,仍能保持与全量微调相近的性能。
全量微调对显存、算力和存体的需求极高,读代速度慢,不利于多任务和在线更新,并且在小样本场景下易出现过投合;PEFT 通过仅更新数百万级别域更少的参数,实现高效微调和快速铁代,因此PEFT 能够显著节省计算资源和存储空间,加快训练收敛速度并减少过拟合风险,同时也能够大幅降低模型版本管理和分发成本。
我们通过一个生动形象的比输来理解下:在厨房里,如果想给蛋糕增添一丝风味,完全重做配方既费时又浪费食材,更聪明的做法是只加点甜品或果酱,就能马上尝出新滋味。PEFT 正是这样的策路:,在不动大模型“主体结构”的前提下,只调味 —— 即训练极少量的新增参数,便能让模型适应下游任务,而无须全量重训整个网络。
参数高效微调(PEFT)的核心思路是什么?列举 3 种典型方法
参数高效微调(PEFT)是一种迁移学习策略,通过冻结大部分预训练模型权重,仅训练极少量附加参数或模块,以显著降低算力和存储开销,同时保持与全量微调相近的性能。
相较于直接调整全部参数,这种方法能在数百万或更少的参数级别完成任务适应,极大提升了在资源受限环境中的可用性。
- Adapter:在每个Tansformer 层的中间插入一个小型瓶颈层,只微调这些瓶颈层的参数,其它参数全量冻结,既能灵活适应下游任务,又能大幅减少可训练参数
- LoRA(Low-Rank Adaptation):将预训练模型中关键权重矩阵(如 Query、value)拆分成低秩短阵的形式,仅训练这部分低秩矩阵,极大地降低了微调时的参数量和计算成本
- Prefix-Tuning:在模型的输入序列前端添加一段可训练的连续“前缀”向量,仅微调这些前缀,保留主体模型参数不变,既适用于生成任务,也能灵活迁移到多种场景
PEFT 和全量微调的区别?
- PEFT(参数高效微调):只微调预训练模型中极少量参数(如新增的 Adapter 模块、前缀向量等),其余参数保持冻结。这种方法显著降低了计算资源和存储需求,适用于资源受限或小样本场景。
- 全量微调(Fl Fine·Turing):对预训练模型的所有参数进行调整,以适应新任务,这种方法通常需要更多的计算资源和数据,但在任务与预训练模型差异较大时,可能获得更好的性能。
在进行 Fine-Tuning 时,如何选择适合的预训练模型?
在进行 fine-Tuning 时,选择合适的预训练模型需要綜合考虑任务类型、模型规模、数据域匹配、性能基准、生态支持和许可部署等多方面因素
- 任务类型和架构匹配:选择预训练模型时,首先需确定任务是文本分类、生成、问答还是图像识别等,并选择与任务需求相符的模型架构,比如 Transfomer 系列、CNN 或者多模态模型
- 模型规模与资源平衡:更大规模的模型通常具备更强表示能力,但会占用更多显存与计算资源,需根据实际硬件条件和延迟要求在模型大小与性能之间权衡。
- 预训练数据域相似度:优先选用在与目标任务数据域相近的语料或图像上预训练的模型,以提高迁移效果,例如在医学文本上预训练的 BiBERT 适用于生物医药领域任务
- 性能基准与评测结果:参考公开基准测试和论文报告,对比各模型在类似任务上的表现,选择在关键指标(如准确率、F1、BLEU、鲁棒性)上表现优异的模型。
- 生态系统和社区支持:优先使用社区活跃、文档完善、工具链支持良好的模型,如 Hugging face Transformers 提供的模型列表和 Trainer API,可降低集成和微调难度,
微调中常用的优化器有哪些?
在微调大模型的过程中,选择合适的优化器对于模型性能的提升是很重要的。以下是一些常用的优化器:
- Adam(Adaptive Moment Estimation):Adam是当前最常用的优化器之一,结合了动量(Momentum)和自适应学习率(Adaptive Learning Rate)的优点。它对不同参数采用不同的学习率,适用于大多数任务,尤其在参数较多或数据稀疏的场景中表现良好。
- SGD(Stochastic Gradient Descent)及其变体:SGD 是最基础的优化器,具有良好的泛化能力,其变体,如 SGD with Momentum 和 Nesterov Accelerated Gradient,通过引入动量项加速收敛,常用于需要精细控制学习率的任务
- RMSProp(Root Mean Square Propagation):RMSProp 通过对每个参数的梯度平方的指数加权平均来调整学习率,适用于处理非平稳目标的任务,如循环神经网络(RNN)训
- Adagrad(Adaptive Gradient Algorithm):Adagrad 为每个参数分配不同的学习率,对稀疏数据表现良好,但学习率会随着训练进行而不断减小,可能导致训练提前停止。
- Adadelta:Adadelta 是对 Adagrad 的改进,限制了累积梯度的窗口大小,避免了学习率过早下降的问题,
- AdamW:AdamW 是对 Adam 的改进版本,引入了权重衰减 (Weight Decay)机制,适用于需要正则化的任务,如 BERT 等预训练模型的微调。
如何判断微调效果是否达到预期?
在微调完成后,我们需要从多维度综合判断模型效果是否达标,首先,通过在验证集和测试集上计算各种量化指标,可以客观评估模型对下游任务的掌握程度。其次,定性评估(人工评审和用户反馈)能揭示自动指标难以捕获的语义和体验层面问题,同时,监控训练过程中的损失和指标曲线,并结合早停策略,可及时发现过拟合或欠拟合现象。最后,A/B 测试及在线监控将真实生产环境的业务指标的纳入考量,实现从研发到生产的闭环评估与持续法代。
- 明确任务目标井对齐评价指标:根据微调任务(如分类、生成、序列标注等)选定对应的准确率、F1、BLEU、ROUGE、Perplexity 等核心指标,以确保评估目标与业务需求一致
- 在验证集和测试集上进行量化评估:使用独立的验证集进行超参数与早停调优,最终在测试集上报告模型的最终性能,保证结果的客观公正。
- 分析训练曲线与早停:监控训练验证损失及指标随epoch的变化,运用早停(Early Stopping)策略防止过拟合,并分析两者差距以判断欠拟合或过拟合程度。
- 定性评估与用户反馈:组织人工评审或小规模用户调研,对模型输出的可读性、准确性、连贯性等方面进行主观打分,捕捉量化指标难以反映的问题。
- 模型稳定性与鲁捧性测试:通过对抗样本或不同分布的数据集检验模型对输入扰动和领域迁移的适应性,评估模型的泛化与抗噪声能力。
什么是低秩适配(LoRA)技术?如何结合 LoRA 技术进行微调?
LORA(Low-Rank Adaptation,低秩适配)是一种高效微调大模型的技术。它的核心思想是:在不修改原始模型参数的前提下,添加两个小矩阵来模拟模型参数的变化,只训练这两个小矩阵,从而实现模型的快速活应。这种方法大大减少了需要训练的参数数量,降低了计算资源的需求,同时保持了模型的性能,
如何结合 LORA 进行微调?
- 选择适配层:通常选择模型中的注意力机制部分,如 Query 和 Value 层。
- 设置超参数:确定低秩矩阵的秩(r 值),以及缩放因子等。
- 注入 LORA 模块:使用相关工县或库,将 LORA 模块集成到原始模型中。
- 训练:在下游任务的数据上,仅训练 LORA 模块的参数,原始模型参数保持不变。
- 推理:训练完成后,可以将 LORA 模块合并到原始模型中,或者在推理时动态加载
通过以上步骤,LORA 实现了在保持模型性能的同时,显著降低了微调的成本和复杂度
微调的过拟合风险如何通过正则化缓解?
微调的时候,过拟合是个非常常见的问题,尤其是当我们用的数据集比较小或者任务特别窄的时候,模型很容易“死记硬背”训练数据,导致泛化能力变差,最直接的办法,就是引入正则化手段,给训练过程加点“限制”。让模型别太自由发挥,从而降低过拟合风险。通过正则化技术,我们可以在损失盈数中增加惩罚项或在训练过程中引入随机性,从而约束模型的表达能力,提升泛化性,常见方法包括L2权重衰减、Dropout、Early stoping、数据增强等,这些技术各有侧重,但都能有效缓解过拟合风险。
- L2 权重衰减:在损失函数里加上所有可训练参数平方和的惩罚项,让权重大幅更新时“要付出代价”,防止模型对训练噪声过度敏感,从而提升泛化能力,。
- Dropout:训练时以一定概率随机“丢掉”部分神经元,相当于在不同子网络之间切换训练,发挥集成效应,减少单一网络对特定特征的过度依赖。
- Early Stopping:实时监控验证集表现,一旦验证损失不再下降就果断停训,避免模型在训练集上继续“打磨”而丧失对新样本的适应性。
- 数据增强:对原始样本做同义替换、回译、随机遮蔽、噪声注入等操作,扩充训练集、引入多样性,让模型学到更鲁棒的特征。
请详细讨论微调时如何防止灾难性遗忘问题?
在预训练模型微调过程中,由于下游任务数据通常有限,模型容易遗忘在预训练阶段学到的通用知识,这一现象称为灾难性遗忘。打个比方,如果一个人学会了骑自行车,然后突然去学滑板,如果不注意方式方法,就很容易忘了骑车的感觉。同理,大模型要如果微调得太猛,就容易把原来在预训练中学会的通用能力给“冲掉”了,因此,需要采用多种策路在学习新任务的同时保持旧知识,主要包括正则化方法、重放机制、知识蒸馏和架构化策略等几大类,每种方法各有特点和适用场景。合理地选用或组合这些手段,既能让模型快速适应新任务,又能有效保留已有能力,从而在微调中实现最优的性能权衡。
- L2 正则化与 EWC:在损失函数中引入参数变化惩罚,EWC 更进一步使用 Fisher 信息矩阵来加权惩罚,防止关键参数大幅偏移
- 经验重放(Experience Replay)与黑暗重放(Dark Experience Replay):保留旧任务样本或其特征,再与新数据一起训练,保持模型对旧任务数据的记忆.
- 知识蒸馏(Learning without Forgeting,LwF):在微调时,蒸馏原模型对旧任务的软目标,使新模型既学习新任务,又“记住”旧模型输出行为。
- 参数隔离与进阶网络:如 Progressive Networks、PackNet,将不同任务的权重分离或动态扩展网络结构,避免参数互相干扰,
- 混合低秩微调(I-LORA):结合 LORA 和经验重放,通过参数插值与双重记忆提升稳定性和平衡新旧任务能力。
在多模态微调(如图文生成)中,如何确保文本和图像数据的对齐质量?
- 高质量数据:利用 CLIP 等模型打分过滤或 Filter & Align 算法清洗大规模图文对齐数据,确保输入质量不含噪声
- 对齐损失:加权对比学习与元素级匹配损失相结合,强化跨模态语义对应,如使用 ITC Loss 及 iMatch 的 QAlign 策略
- 评估反馈:引入自动化评估(iMatch、VQA 评估)与人工打分,形成闭环反馈,及时调整微调目标。
- 微调策略:采用 Adapter/LORA 模块化微调,冻结核心权重并在新增低秩矩阵上约束对齐正则,减少对原模型对齐性的破坏.
- 增强与回放:结合图像光照等数据增强、文本同义替换、及锚点样本回放或混合样本生成(如 Geodesic Mixup),提高对齐稳健性
- 语义闭环:使用 RECAP 重标注技术,对原始 Caption 进行自动化重写,提升语义精准度并增强微调对齐效果。
请解释大模型微调(Fine-tuning)的原理,并说明在什么业务场景下需要微调而不是直接使用基础模型?
大模型微调是在预训练模型基础上,使用特定领域的数据集进行二次训练的过程。它的主要目的是让通用大模型能够更好地适应特定领域或任务的需求。以下场景需要考虑使用微调而不是直接使用基础模型:
- 专业领域应用:比如医疗领域,基础模型可能对骨科专业知识掌握不足,需要用专业的骨科数据集进行微调,使模型具备该领域的专业能力。
- 数据安全要求高:涉及企业内部敏感数据时,直接使用第三方大模型服务可能存在数据泄露风险,此时需要对开源大模型进行私有化微调部署。
- 特定任务优化:当需要模型完成特定任务(如客服对话、代码生成等)时,通过微调可以显著提升模型在该任务上的表现。
什么是大模型的"涌现能力"?列举三种典型表现并解释其可能成因
大模型的涌现能力(Emergent Abilities)是指在模型规模达到某个临果值后突然出现的、在小规模模型中不存在的能力,这种能力的出现往往是不可预测的,天法通过简单外推小模型的性能来预测
- 思维链推理(Chain-of-thought):这是一种在解决复杂问题时能够像人类一样展示推理过程的能力。当模型规模达到一定程度(约10^22 FLOPS)后,模型能够生成中间推理步骤,大幅提升在数学应用题等多步骤推理任务上的表现。
- 指令跟随能力:模型能够准确理解和执行自然语言指令,无需像小模型那样依赖大量示例。这种能力在大规模模型中表现得更为突出,能够理解更复杂的指令并产生符合要求的输出。
- 多任务理解与迁移:大模型展现出了强大的跨任务泛化能力,能够在没有专门训练的情况下完成新的任务,比如在 MMLU (Masive Multi-task language Understanding)测试中,大模型可以回答涉及数学、历史、法律等多个领域的问题
参数高效微调(PEFT)如何减少计算成本?
PEFT通过只微调少量额外参数,冻结大多数预训练模型权重,大幅减少梯度计算和存储需求,从而节省算力和显存
典型方法如LoRA、Adapter、prefix Tuning、IA3等,仅在原模型中注入轻量级模块或向量,新增参数量通常只占原模型的千分之一到百分之几,计算复杂度显著降低。
微调后生成的小型权重文件仅几MB级别,远小于全量微调产生的几十GB模型,便于在消费级GPU或Colab上快速训练与分发。
冻结层在微调中的作用是什么?
冻结层在微调中的作用主要是减少计算资源的消耗、避免过拟合,并加速训练过程。具体来说,冻结层的做法是将预训练模型中的某些层的参数固定,不参与梯度更新。这样做有以下几个好处。
- 减少计算量:冻结部分层后,模型在训练时只需要计算和更新未冻结层的梯度,节省了计算资源。
- 降低内存占用:冻结层减少了需要存储梯度和优化器状态的参数数量,降低了内存需求。
- 加速训练:由于更新的参数较少,训练过程可以更快收敛。
- 避免过拟合:冻结层可以防止模型在小样本数据上过度拟合,保持预训练模型的泛化能力。
为什么需要混合精度训练?
混合精度训练 (Mxed precision Training)是深度学习中一种提高训练效率的技术,核心目的是在保持模型精度的同时,减少计算资源的消耗。具体来说,它通过在训练过程中同时使用不同精度的数据类型 ( 如 FP16和FP32),实现以下目标:
- 加速训练过程:FP16 运算在现代 GPU 上的处理速度比 FP32 快,尤其是在 NVIDIA的 Tensor Cores上,FP16 的矩阵乘法和卷积的峰值性能比 FP32 快约 16 倍。
- 减少内存占用:FP16数据占用的内存空间是 FP32 的一半,这意味着可以训练更大的模型或使用更大的批量,从而提高训练效率和潜在的模型泛化能力。
- 提高吞吐量:更快的计算速度和更少的内存使用量共同作用的结果是更高的吞吐量,这意味着在相同的时间内可以处理更多的数据,
- 节省能源:低精度计算通常更节能,这对于数据中心的大规模训练和在电力有限的边缘设备上部署尤为重要。
模型输出重复和幻觉如何微调解决?
在大模型输出中,出现重复和幻常是两个常见的问题,重复指的是模型在生成文本时出现内容重复的现象,而幻觉则是指模型生成了看以合理但实际上不真实或不准确的信息。为了解决这两个问题,可以通过微调(fine-tuning)的方法进行优化。
具体来说,微调可以通过以下方式来减少重复和幻觉:
- 数据质量控制:确保用于微调的数据是高质量的,包含准确、真实的信息,避免模型学习到错误或重复的模式.
- 引入惩罚机制:在训练过程中,对模型生成重复或不真实内容的行为进行惩罚,引导模型生成多样且准确的内容。
- 领域特定微调:针对特定领域(如医疗、法律、金融等)进行微调,使模型在该领域内生成更准确的内容,降低幻觉发生的概率
- 参数高效微调(PEFT):采用低秩适配(LORA)等方法,在不改变模型主体结构的情况下,进行小范围的参数调整,提高微调效率,减少幻觉的产生。
- 增强训练策略:引入合成任务(如SynTra)或噪声增强微调(NoiseFiT),通过设计特定任务或在训练中加入噪声,增强模型的鲁棒性,减少幻觉的生成
- 强化学习与人类反馈(RLHF):结合人类反馈进行强化学习,使模型在生成内容时更加符合真实世界的知识和逻辑,降低幻觉的风险。
- 检索增强生成(RAG):结合外部知识库,在生成过程中引入相关的真实信息,帮助模型生成更准确的内容。
SFT 指令微调数据如何构建?
SFT(Supervised Fine-Tuning,监督微调)指令微调数据集的构建过程,主要是为特定任务提供高质量的数据支持。简单来说它是通过收集和标注数据来帮助模型更好地理解和执行特定指令或任务
构建过程一般包括以下步骤:
- 收集原始数据:首先,需要收集与任务相关的基础数据。比如,如果任务是生成文本,那么可以收集各类文本;如果是分类任务,可以收集标注好的类别数据。数据需要多样化、代表性强,以确保模型可以泛化到更多场景
- 标注数据:对收集到的原始数据进行标注,指明每个数据样本的目标输出。比如,对于对话任务,标注数据就是问题和正确的回答;对于分类任务,标注数据就是每个样本的类别标益,这里的准确性和一致性至关重要。
- 划分数据集:把标好的数据分为训练集、验证集和测试集。一般来说,80%用于训练,10%用于验证,10%用于测试。通过这种划分,可以在不同的阶段对模型进行训练和调优,确保模型不会过拟合。
- 数据预处理:为了让数据更适合模型,需要做一些预处理工作。比如,对于文本数据,可能需要做文本清洗、分词、去除停用词等处理步骤。这样有助于提升模型的训练效率和效果。
- 格式转换:将预处理后的数据转换成适合模型的格式。常见的格式包括文本文件、JSON格式等,这样模型才能正确地读取和训练。
- 模型微调:最后,使用这些数据对预训练模型进行微调,微调过程中,需要选择适当的训练超参数(如学习率、batch size等),以及微调方法(如冻结部分层或全层微调)。这个过程会让模型逐渐适应特定任务。
- 模型评估:训练完成后,使用测试集对模型进行评估,查看模型在任务上的表现,如准确率、召回率等指标。如果效果不理想,可以继续优化数据集或者调整模型参数。
指令微调的好处?
指令微调(Instruction Tuning)是对大型语言模型(LLM)进行微调的一种技术,旨在使模型更好地理解和执行自然语言指令。其主要好处包括:
- 提升指令跟随能力:指令微调通过在多样化的“指令一响应”对上微调,使模型接到新指令时能更精准地执行任务,减少对冗长提示的依赖。
- 增强零样本与少样本泛化:在未见过的任务或领域上,微调后的模型也能给出合理输出,大幅提升新场景下的适应性
- 行为可控、风险降低:通过引入约束性指令或安全策略微调,生成结果更加可预测,可有效降低有害或偏离目标的输出概率
- 多任务统一能力:指令微调让单一模型兼顾翻译、摘要、问答等多种场景,避免为每个子任务都单独训练多个模型的资源浪费,。
- 节省算力与数据成本:相比从头训练,指令微调所需数据量适中、训练速度更快,算力消耗更低,能在资源受限情况下迅速部署
实战
什么是护栏技术?
护栏技术是 AI 系统开发中用于确保模型输出安全、合规、符合伦理的一系列防御性技术手段,核心作用是防止AI产生有害、错误或违背人类价值观的结果。
比如:当AI生成内容时,护栏技术会实时检测是否包含歧视、虚假信息、暴力内容等,并阻止或修正这类输出。它就像给AI系统加了一层“安全围栏”,让AI在既定的规则和目标范围内运行,避免“失控”常见的护栏技术包括:
- 内容安全过滤(如识别有害文本/图像)
- 伦理规则引擎((预设禁止行为的逻辑判断)
- 错误处理机制(当AI无法处理问题时,拒绝回答或引导人工介入)
什么是 GPTCache?
GPTCache 是专为大语言模型设计的语义缓存工具,通过存储和复用模型响应,从而降低 API 调用成本并提升响应速度.。
它的核心价值在于:
- 降本增效:通过缓存相似查询的结果,减少重复调用LLM的次数,例如将ChatGPT的API成本降低10倍,响应速度提升100倍。
- 语义匹配:区别于传统精准匹配的缓存,GPTCache 使用向量嵌入技术 (如OpenAl Embedings、SentenceTransformers)将用户问题转换为向量,通过向量数据库 (Milvus、FAISS)进行相似性搜索,实现“语义级”缓存命中
- 灵活扩展:支持模块化设计,用户可自定义嵌入模型、缓存存储(如SQLite、MySQL)、逐出策略(LRU/FHIFO)等组件,适配不同场景需求。
我们在大模型应用开发的很多场景都能用上它,例如聊天机器人、客服系统中重复问题的快速响应。测试场景,模拟LLM响应,减少对真实API的依赖,加速开发迭代。
大模型的结构化输出指的是什么?
结构化输出是指让模型生成特合特定格式(如ISON、XML、表格、SQL语句等)的数据,而非自由文本。这种输出能被计算机程序直接解析和处理,比如存入数据库、生成API接口参数、驱动自动化流程等
常见形式如下:
- 数据格式:JSON(最常用)、YAML、CSV、XML
- 结构化文本:表格(Markdown表格)、键值对、固定字段的段落
- 领域特定格式:SQL语句(用于数据库查询)、HTML(用于网页生成)、LaTeX(用于学术公式)
技术实现核心是通过提示工程、JSON Schema定义或约束性解码(Constrained Decoding)强制模型遵循格式规则
实现方法:
- 提示工程:在输入提示中明确要求输出格式(例:“请以SON格式返回用户姓名、年龄、邮箱,字段名分别为name、age、email”)。
- 后处理:用代码解析模型生成的文本,转换为标准结构(例如用正则表达式提取表格数据)。
- 工具辅助:使用库或框架(如LangChain的 StructuredOutputParser )自动验证和解析输出格式。
什么是 GPT Structured Outputs?
GPT Structured Outputs 是一种通过技术手段强制大语言模型(如GPT-4o)生成符合特定格式要求的结构化数据的能力,例如JSON、XML或自定义格式的表格。
以前用的是“提示生成JSON"的模糊要求,现在GPTStructured Outputs 能保输出严格待合预定义的字段、类型和层级结构,例加,通过JS0N scdhema定义“必须包含 name(字符串)、age(整数)字段”,模型将自动拒绝生成无效内容。
按照 openAl 官网介绍,结构化输出的一些优点包括:
- 可靠的类型安全:无需验证或重试格式不正确的响应
- 明确拒绝:基于安全的模型拒绝现在可以通过编程检测
- 更简单的提示:无需使用措辞强烈的提示来实现格式一致
简单来说以前的返回格式容易出错,且不容易判断,现在 GPT Structure Output 能让输出的格式保证正确,假使不正确也有明显的提示。
实现方式:
- OpenAl APl:通过 response_format 参数指定JSON Schema或Pydantic模型(如 {"type": "json_schema","json_schema": {...})。
- 开源工具:如 instructor 库(适配API调用)或 outlines 库(适配本地模型部署),通过代码定义输出结构。
在大模型应用中,通常如何实现长短期记忆机制
- 短期记忆:利用上下文窗口(如Claude的100k tokens)缓存最近的对话或输入,或通过滑动窗口(Bufer Window)保留固定轮次的历史,。
- 长期记忆:结合摘要压缩(Summarization)、向量数据库(如RAG检索增强)持久化存储关键信息。
从目前的大模型实现来看,短期记忆依赖模型原生能力,长期记忆通过外部存储(如知识图谱、数据库)实现检索
本地部署大模型和调用云端大模型各有什么优缺点?

个人的选择建议:
- 个人开发者和初创企业:初期更适合调用云端大模型,可以快速验证想法,成本低。
- 对数据隐私有极高要求的企业或特定行业应用:本地部署是更安全的选择。
- 需要深度定制模型以适应特定业务场景:本地部署开源模型 +微调更合适
- 对响应延迟有严格要求的边缘计算场景:本地部署有优势。
提示词优化考虑哪些维度?你们提示词模板有哪些字段?
关于提示词优化的核心维度主要有以下几个点
- 目标明确性:让模型清楚知道要解决什么问题。
- 结构清晰性:用分点、格式(如JSON/Markdown)或分隔符(###)拆解任务,避免信息混乱
- 少量样本:通过输入输出样例告诉模型期望的结果长什么样,减少理解偏差。
- 角色设定:给模型定义身份(如“你是资深程序员”),让输出风格更符合场景,比如专业、口语化等。
- 增加约束条件:限制输出范围,如字数、格式、禁止内容,避免模型幻觉或偏离主题
还有一个也很关键就是持续反馈迭代,我们需要根据模型输出调整提示词,比如补充细节、优化示例,通过A/B测试找到最优解。提示词模板的常见字段:
- 角色定义:指定模型身份(如你是程序员,擅长代码生成)。
- 任务描述:用具体指令拆解目标(如请根据以下数据生成趋势分析,需包含3个核心结论)
- 输入内容:提供原始数据或问题案例。
- 输出格式:规定结果结构(如输出JSON格式)。
- 约束规则:说明限制条件(如回答不超过200字)
- 评估标准:引导模型自检(如语言需口语化)。
要让AI生成一个带表单验证的Vue3组件,请写出包含以下要素的Prompt
首先,我们需要明确编写一个好的 Prompt 需要以下几个关键要素:
- 技术栈和版本:需要明确指定使用 Vue3 的 Composition API,这样可以确保生成的代码符合最新的开发规范
- 功能需求:表单验证的具体要求
- 邮箱格式校验
- 错误提示的展示位置和方式
- 提交按钮的状态控制
- 代码规范和最佳实践:生成的代码需要遵循 Vue3 的开发规范和最佳实践。
基于以上要素,一个完整的 Prompt 示例如下:
请使用 Vue3 的 Composition API 创建一个表单组件,要求如下:
1)组件结构:
- 包含一个邮箱输入框和提交按钮
- 使用 Element Plus 作为 UI 组件库
- 代码需要包含必要的类型声明
2)表单验证:
- 实现邮箱格式的合法性校验
- 错误提示信息需要显示在输入框下方
- 使用 vuelidate 或 VeeValidate 进行表单验证
3)交互优化:
- 提交按钮在表单验证未通过时禁用
- 提交过程中按钮显示 loading 状态
- 防止重复提交
4)代码要求:
- 使用 TypeScript
- 遵循 Vue3 组件命名规范
- 添加必要的代码注释
- 确保代码的可维护性和可测试性假设需要让大模型生成一个React表单组件代码,请设计一个包含上下文约束的Prompt(需包含数据验证、错误提示等要求)
设计一个面向大模型的 React 表单组件生成 Prompt,需要包含以下关键要素
- 组件功能需求:表单组件需要包含:
- 用户名(必填,2-10个字符
- 邮箱(必填,符合邮箱格式)
- 密码(必填,8-20位,包含大小写字母和数字)
- 确认密码(必填,与密码一致)
- 手机号(选填,符合手机号格式)
- 提交按钮
- 技术要求:
- 使用 React Hook Form 进行表单管理和验证
- 使用TypeScript 编写组件
- 使用 Tailwind CSS 进行样式设计
- 遵循 React 最佳实践和设计模式
完整的 Prompt 内容:
请生成一个 React 表单组件,要求如下:
1. 组件功能:
- 实现用户注册表单
- 包含用户名、邮箱、密码、确认密码、手机号等字段
- 提供表单提交功能
2. 数据验证要求:
- 用户名: 必填,2-10个字符
- 邮箱: 必填,符合邮箱格式
- 密码: 必填,8-20位,包含大小写字母和数字
- 确认密码: 必填,与密码一致
- 手机号: 选填,符合手机号格式
3. 交互体验要求:
- 实时字段验证
- 清晰的错误提示信息
- 表单提交时的加载状态
- 成功/失败的反馈提示
4. 代码规范要求:
- 使用 TypeScript
- 使用 React Hook Form
- 使用 Tailwind CSS
- 代码注释完整
- 组件和类型定义分离
- 错误信息统一管理
5. 性能优化要求:
- 避免不必要的重渲染
- 合理使用 memo 和 useCallback
- 表单验证去抖动处理
请生成符合以上要求的完整代码,包括:
- 组件主文件
- 类型定义文件
- 错误信息配置
- 使用示例请描述使用LangChain构建一个文档问答系统的关键技术组件及实现步骤
使用 LangChain 构建文档问答系统主要包含两个核心阶段:
- 文档索引阶段(Indexing):数据准备过程包含三个主要步骤:
- 文档加载:使用 Document Loader 加载各种格式的文档。
- 文档分块:使用 Text Splitter 将文档切分成合适大小的块。
- 向量化存储:为文本块创建向量嵌入(embeddings)并存储到向量数据库中。
- 问答检索阶段(Retrieval & Generation):问签生成过程包含两个主要步骤
- 相关文档检索:根据用户问题从向量库中检索最相关的文档片段。
- 答案生成:将检索到的文档和用户问题一起传给 LLM 生成最终答案。
假设要开发一个智能工单分类系统,请拆解AI可参与的环节并说明技术选型思路
智能工单分类系统主要涉及工单文本理解、分类决策和自动化处理三个核心环节。我们可以将 AI 技术应用在以下几个关键环节:
- 工单内容理解
- 文本预处理:使用 NLP 技术对工单内容进行分词、去除停用词等基础处理。
- 实体识别:使用命名实体识别(NER)技术提取工单中的关键信息,如产品名称、问题类型等
- 意图识别:使用 BERT或 GPT等预训练模型理解用户的真实诉求。
- 智能分类决策
- 多级分类:基于机器学习模型(如 XGBoost)构建多级分类体系,将工单分发到对应部门。
- 优先级评估:结合历史数据,使用深度学习模型预测工单紧急程度
- 相似工单匹配:使用向量数据库(如 Milvus)存储历史工单,快速检索相似案例。
- 自动化处理
- 知识库对接:使用 RAG 技术从企业知识库中检索解决方案。
- 自动回复:使用 LLM 生成个性化回复内容。
- 工作流联动:通过 API触发后续自动化处理流程
当需要处理超长大模型上下文窗口限制时,有哪些可行的工程解决方案?
处理超长上下文主要有以下几种工程解决方案
- 文本压缩与分段处理
- 文本预处理:使用中间截断法(middle truncation)对过长文本进行压缩。
- 智能分段:将长文本按语义完整性分成多个片段,保持上下文连贯性。
- 动态窗口:根据查询需求动态调整上下文窗口大小,实现查询感知的上下文化处理。
- 检索增强生成(RAG)
- 向量检索:使用向量数据库存储文档片段,按相关性检索。
- 混合检索:结合关键词和语义检索,提高检索准确性。
- 动态更新:支持知识库的实时更新,确保信息时效性。
- 模型优化方案
- Ring Attention:通过改进注意力机制提升计算效率。
- 相对位置编码:采用相对位置编码替代绝对位置编码。
- 模型微调:针对长文本场景进行特定任务微调。
请举例说明假设在电商系统中,哪些功能适合直接使用大模型完成,哪些需要结合工程化手段?
在电商系统中,大模型的应用需要根据场景特点来区分使用方式:
- 适合直接使用大模型的场景
- 用户咨询解答:利用大模型的自然语言理解和生成能力,直接处理用户的开放性问题,
- 商品描述生成:基于商品基础信息,生成富有营销感的商品文案。
- 个性化回复:根据用户画像和历史交互,生成有温度的客服回复,
- 需要结合工程化手段的场景
- 商品检索和推荐:需要结合数据库查询、规则过滤等工程手段来保证准确性和性能。
- 商品参数问答:由于商品参数高度结构化,需要先用专门的匹配模型选相关属性。
- 价格区间筛选:对于数值范围的查询,需要使用数据库的范围查询功能。
假设请你设计一个医疗问诊系统,如何平衡AI幻觉带来的风险与效率提升?需要哪些技术手段?
在医疗问诊系统中平衡 AI 幻觉风险与效率需要多层次防护机制。首先应采用RAG技术,通过检索医学知识库提供可靠信息源;其次实施严格的提示工程和边界控制,明确定义AI可回答范围;再次建立多级人机协作模式,让医生监督和干预AI决策;最后实施持续的模型评估和优化。
技术手段包括知识图谱塔强理解、多模态融合提高准确性、不确定性量化帮助识别风险区域,以及可解释性工具让医生理解 AI 推理过程。
AI幻觉现象与医疗风险:AI幻觉是指大语言模型生成看似正确但实际与事实不传的内容,在医疗场景中,这种风险尤为严重,可能导致错误诊断建议、虚构药物信息或治疗方案,甚至可能因此延误患者治疗时机。
问诊场景中可能比较常见的AI幻觉类型:
- 症状关联幻觉:将不相关症状错误关联到特定疾病
- 治疗方案幻觉:生成看似合理但实际不存在的治疗方法
- 药物信息幻觉:提供错误的药物剂量、禁忌或副作用信息
- 疾病进展幻觉:对疾病发展过程做出不准确预测
设计智能客服系统时,如何通过知识库构建解决长尾问题?
智能客服系统中的长尾问题指的是那些出现领率较低但数量众多的用户咨询,通过构建完善的知识库系统,我们可以有效解决这类问题,具体实现需要从知识获取、知识组织和知识应用三个维度展开。
当大模型API响应延迟超过1秒时,前端可以采取哪些优化策略保证用户体验?
当大模型 API 响应延迟较高时,前端主要可以从以下几个方面进行优化:
- 立即反馈策略:采用乐观 UI模式,在发送请求的同时立即给用户反馈,不要等待 API 响应后才更新界面。比如:在对话输入框下方立即显示用户发送的消息、显示输入框的 loading 状态、显示骨架屏(Skeleton)预加载效果
- 流式响应处理:使用 SSE 或 WebSocket 建立长连接、通过 ReadableStream 逐步接收并显示文本内容添加打字机效果增强体验
- 请求状态管理:设置合理的请求超时时间、添加请求重试机制、优雅降级显示出错提示
使用LangChain时,如何实现多路召回结果的动态权重分配?
在 LangChain.js 中实现多路召回的动态权重分配主要有以下几种方式:
- 使用EnsembleRetriever:EnsembleRetriever 是 LangChain 提供的一个组合检索器,可以将多个检索器的结果进行组合。它支持不同的权重分配策略。
- 自定义权重分配逻辑:可以通过实现自定义的权重分配逻辑,根据查询内容或其他因素动态调整不同检索器的权重
- 查询分析路由:通过查询分析来选择最合适的检索器或调整权重分配。
如何保证 AI 应用的性能和稳定性?
为了保证 AI 应用的性能和稳定性,需要综合考虑很多方面,从应用设计、外部依赖管理到部署策略都需要考虑。一般来说有以下措施:
- 异步处理:对于耗时的AI操作,要采用异步处理,避免阻塞服务器主工作线程,提高并发处理能力和系统响应速度,还可以利用 SSE (Server-SentEvent)和 SseEmitter 实现流式输出,提高用户体验
- 合理的模型选择:选择跟场景、需求相匹配的AI模型,不是所有场景都需要最大、最先进的模型,有时候针对特定任务优化的轻量级模型在成本和延迟上更有优势。比以如计算向量 Embeding 时,就不必选择深度推理能力强的模型。
- RAG 系统优化:选择高质量的原始文档和合理的切片策略。以及选择合适的向量数据库,比如使用 PGVector 方案,可以对索引和查询参数调优
- 外部依赖管理:对工具调用、MCP服务及其他外部 API 的调用,实现错误处理和重试机制(比如 Guava Retrying 库)。并且针对所有的外部调用设置合理的超时时间。
- 对于流量不确定或需要快速迭代的服务,可以考虑 Serverless 部署,按需分配资源、自动伸缩
- API设计:避免在每个数据块中包含过多冗余信息,只传输核心内容,减少网络负载。
- 可观测性与监控:集成更全面的监控方案,比如使用 Prometheus + Grafana 追踪关键性能指标、延迟、错误率、资源消耗等
有哪些设计和优化 Prompt 的技巧?请举例说明
设计和优化 Prompt 的核心目标是引导 A1 模型生成符合预期的高质量输出。分享一些技巧:
- 明确指定任务和角色:清晰地告诉 AI 它需要扮演什么角色以及具体执行什么任务。
系统:你是一位经验丰富的Python教师,擅长向初学者解释编程概念。
用户:请解释 Python 中的列表推导式,包括基本语法和 2-3 个实用示例。- 提供详细说明和具体示例:给出足够的上下文信息、期望的输出格式、风格或长度。最好再提供 1-2 个输入输出的范例,帮助型理解任务模式
我将给你一些情感分析的例子,然后请你按照同样的方式分析新句子的情感倾向。
输入: "这家餐厅的服务太差了,等了一个小时才上菜"
输出: 负面,因为描述了长时间等待和差评服务
输入: "新买的手机屏幕清晰,电池也很耐用"
输出: 正面,因为赞扬了产品的多个方面
现在分析这个句子:
"这本书内容还行,但是价格有点贵"- 使用结构化格式引导思维:通过列表、表格、JSONSchema或特定分隔符(如XML标签)来组织输入和期望的输出,这些指令更容易被大档型理解、输出也更有条理
分析以下公司的优势和劣势:
公司: Seven
请使用表格格式回答,包含以下列:
- 优势(最少3项)
- 每项优势的简要分析
- 劣势(最少3项)
- 每项劣势的简要分析
- 应对建议- 思维链提示法:引导模型展示其推理过程,逐步思考问题,尤其适用于复杂问题,能提高准确性。比如,在解决一个数学应用题时,可以要求 A1: “请一步步思考解决这个问题:首先...然后...最后.."
问题:一个商店售卖T恤,每件15元。如果购买5件以上可以享受8折优惠。小明买了7件T恤,他需要支付多少钱?
请一步步思考解决这个问题:
1. 首先计算7件T恤的原价
2. 确定是否符合折扣条件
3. 如果符合,计算折扣后的价格
4. 得出最终支付金额- 分解任务:把复杂的任务分解为一系列更小、更易于管理的步骤,并指导模型按顺序完成每个步骤。例如,要求 AI “第一步:分析用户需求,第二步:草拟解决方案,第三步:评估方案风险。
请帮我创建一个简单的网站落地页设计方案,按照以下步骤:
步骤1: 分析目标受众(考虑年龄、职业、需求等因素)
步骤2: 确定页面核心信息(主标题、副标题、价值主张)
步骤3: 设计页面结构(至少包含哪些区块)
步骤4: 制定视觉引导策略(颜色、图像建议)
步骤5: 设计行动召唤(CTA)按钮和文案- 迭代式提示优化和错误分析:很少有人能一次就写出完美的 Prompt。而是根据模型的输出进行分析,如果结果不理想,就逐步修改和完善 Prompt
初始提示: 谈谈人工智能的影响。
[收到笼统回答后]
改进提示: 分析人工智能对医疗行业的三大积极影响和两大潜在风险,提供具体应用案例。
[如果回答仍然不够具体]
进一步改进: 详细分析AI在医学影像诊断领域的具体应用,包括:
1. 现有的2-3个成功商业化AI诊断系统及其准确率
2. 这些系统如何辅助放射科医生工作
3. 实施过程中遇到的主要挑战
4. 未来3-5年可能的技术发展方向- 控制输出长度和风格:明确要求输出的字数范围、文本风格(正式、友好、专业)等。
撰写一篇关于气候变化的科普文章,要求:
- 使用通俗易懂的语言,适合高中生阅读
- 包含5个小标题,每个标题下2-3段文字
- 总字数控制在800字左右
- 结尾提供3个可行的个人行动建议如果一个GPU集群的LLM处理能力为1000 tokens/s,那1000个用户同时并发访问,响应给每个用户的性能只有1token/s吗?怎么分析性能瓶颈
不会平均变成每人1 token/s。
因为 LLM 并非简单线性分配(直接用除法)资源,而是通过批处理与并发调度来提升吞吐。
若每次批处理包含 100 个用户的请求(每用户 10tokens),则 1000 用户可以分 10 批处理完。单用户性能是 10tokens/s。实际响应速度取决于Token长度、批处理策略和资源排队机制等。
