大模型概述
大模型入门
大模型常识
本节目标:建立整体认知。
定义
目前关于大模型(Large Models)并没有统一的定义,通常是指参数规模庞大(顶尖大模型参数可达万亿)、训练数据庞大、能力强大的深度神经网络模型。
参数规模庞大
大模型的参数量通常在10亿以上,目前顶尖模型的参数规模已达万亿级别。

训练数据庞大

Common Crawl是大模型中的大语言模型预训练阶段的数据来源之一,它是一个公共网络爬虫项目,每隔1-2个月会发布一次主爬取的文件,包含了部分网页的快照,是互联网数据的子集。
WET是对网页内容进行抽取和清洗之后的数据,通常作为大模型预训练数据集的构建起点。完整的数据集可能包含若干次主爬取的WET,还可能包含其它渠道获取的数据。
能力强大
传统模型针对特定任务设计,泛化能力有限,通常只能完成单一任务,如:情感分析、实体标注等。
而大模型具备强大的跨任务泛化能力,单一大模型可以解决大多数传统模型可以完成的任务。
为什么会出现大模型?
大模型的出现并非偶然,而是数据、算力与模型架构协同演进的结果。
数据够多:训练范式的改变使得训练数据规·模获得了数量级上的跃迁

传统监督学习高度依赖人工标注数据(对原始数据进行标记、分类、注释或结构化的过程,便于机器可识别和理解),获取成本高、规模受限。
分类标注:为整张图像分配类别标签(人工标注为"猫"、"狗")
命名实体识别:标注文本中的人名、地名、组织名等实体
……
而大模型主要采用自监督学习范式(如“预测下一个token”),能够直接利用海量的未标注文本与多模态数据,可用数据规模获得了数量级上的跃迁。
如Qwen3的预训练阶段使用了约36T个token(近似理解为词)的语料,这一数据规模远超传统机器学习时代的训练数据总量。
算力够强:GPU/TPU等并行计算设备性能发展与分布式训练成熟

上图的纵轴是32位浮点数的计算性能(可能是FP32或BF32,取最大)。
深度学习训练本质是大规模矩阵运算,这类计算具有高度并行性,与GPU/TPU的硬件架构天然契合。
与此同时,数据并行、张量并行、流水线并行等分布式训练体系日趋成熟,使得跨节点、跨集群训练超大规模参数模型成为可能。
架构合理:Transformer架构的出现
Transformer架构摒弃了强序列依赖的递归计算方式,支持并行计算。并且在模型规模、数据规模、训练步数(计算量)提升时展现出稳定的性能收益(即良好的“可扩展性”,如下图所示,图中的Test Loss表示损失函数的值,用于衡量模型性能,损失越小模型越强)。

总结
综上,数据规模的跃迁、算力基础设施的发展,和Transformer架构优异的可扩展性,共同推动了模型规模和性能的持续膨胀,迎来了“大模型时代”。
大模型计量单位
在大语言模型(LLM)及更一般的大模型研究中,通常从参数规模、训练数据集规模和计算规模三个维度来度量模型的规模。
参数规模(Parameters Scale)
大模型参数规模通常以B为单位,B是Billion的缩写,即10亿,。
如Qwen3-235B-A22B模型总参数量为235B(2350亿),激活参数为22B,采用MoE(混合专家)架构。最新版本为Qwen3.7-Max(2026.8.3)。
训练数据集规模
多模态模型的数据集格式五花八门,无法用统一单位度量,此处只讨论LLM。
LLM的训练是在文本语料上进行的,语料处理的第一步是分词为一系列token,所以通常用token的数量衡量LLM训练数据集规模。
1B token=token=10亿token
1T token=B token=token=1万亿token
LLM的数据集规模通常用T token作为单位,如Qwen3预训练数据集规模为36T token。
计算规模
计算规模是指大模型训练消耗的计算量。
大模型是一系列浮点数的组合,训练过程涉及大量浮点数运算,因此计算规模通常用FLOPs(Floating Point Operations,浮点运算次数)来衡量。
1FLOPs=1次浮点运算
1PFLOPs=FLOPs
1EFLOPs=PFLOPs=FLOPs
现代顶尖的基础模型(LLM)通常用EFLOPs作为单位。计算规模通常不公开。
计算规模和硬件平台无关,描述模型理论上做了多少计算。
算力
算力是指“能算多快”,是指计算设备(显卡)单位时间内完成浮点运算的能力。单位通常是FLOPS(Floating Point Operations Per Second,每秒钟完成的浮点运算次数)。
现代GPU性能强大,通常用PFLOPS或TFLOPS作为算力单位。
。
。
。
浮点数有多种规格,如FP64、FP32、TF32等,同一款显卡在不同浮点数规格下的算力不同,因此在描述算力时,通常需要标注对应的浮点数规格。
如英伟达B200显卡(Blackwell架构,2024年发布)的单卡
- TF32算力为2.5PFLOPS
- FP32算力为80TFLOPS
- FP64算力为40TFLOPS 随着硬件性能的发展,目前顶尖显卡的算力已迈入PFLOPS级别。
总结

分类
按模型功能/输出形态分类
按“模型输出的数学形态 + 使用方式”分类。
生成式模型(Generative Model)

定义
输入:上下文(控制生成结果)。
输出:样本,可以是token序列或别的形式。
核心特征是生成接近真实分布的样本,可以是各种模态的数据。
典型用途
对话、推理、图像生成
示例
GPT-5.6系列 / DeepSeek-V4系列 / Qwen3系列 / GPT Image 2 / Gemini 3.x
嵌入模型/向量表征模型(Embedding Model / Representation Model)

定义
输入:各种模态的数据
输出:固定维度向量(dense vector)
不生成文本
典型用途
语义搜索
RAG 向量检索
相似度计算
示例
BGE系列 / Qwen3-Embedding系列 / Qwen3-VL-Embedding系列
重排序 / 相关性打分模型(Reranking / Scoring Model)

定义
输入:(query,doc)
输出:相关性分数(scalar)
典型用途
RAG的第二阶段(Top-K)
精排(Top-N(50/100/200) → Top-K(5/10/20))
示例
BGE-Reranker系列 / Qwen3-Reranker系列 / Qwen3-VL-Reranker系列
分类器 / 判别模型(Classifier / Judge Model)

定义
输入:各种模态数据
输出:标签 / 概率 / Yes-No
用途
意图识别
内容审核
路由决策
示例
通常是经过微调的小模型,如基于BERT微调的分类模型。
总结

生成模型根据模态分类
什么是模态(Modality)?
模态是指人或机器感知世界的方式,常见的模态有:文本、图像、音频/语音、视频等。
根据模态,可以将大模型分为语言大模型、多模态理解大模型和多模态生成大模型。如果没有特别说明,“大模型”通常是指“语言大模型”。

语言/文本模型(Language/Text Model)
又称为大语言模型(Large Language Model,简称LLM)。

定义
输入:文本
输出:文本(token序列)
典型能力
对话、写作、推理、代码生成
示例
Qwen3系列 / DeepSeek-V4系列 / GPT-5.6系列(语言模块) / Gemini 3.x系列(语言模块) / DeepSeek-V4系列
注意:ChatGPT和Gemini都是一个以语言大模型为中枢的智能体系统,是面向用户推出的AI产品,支持文本生成、图像理解和生成。并不属于单一的某一类。
多模态理解模型(Multimodal Understanding Model)

定义
输入:文本 + 图像 / 音频 / 视频
输出:通常是文本
典型能力
看图说话(VQA)
文档理解(PDF / 表格 / 图像)
视频理解、音频理解
示例
GPT-5(图片理解模块) / Qwen3-VL系列 / Gemini 3.x(图片理解模块)
多模态生成模型(Multimodal Generative Model)

定义
输入:文本 / 图像
输出:图像 / 视频 / 音频
子类
文生图(Text-to-Image)
文/图片生视频(Text/Image-to-Video)
文生音频(TTS / Music)
示例
-
图像生成 Stable Diffusion 3.5系列 / GPT Image 2 / Gemini 3.x
-
视频生成 Sora 2系列(已停用) / Veo系列
-
音频生成 AudioLM / VALL-E
总结

总结
AIGC和AGI
AIGC的定义
AIGC(人工智能生成内容,Artificial Intelligence Generated Content)是以生成式模型为核心,基于对海量数据分布、模式与关联结构的学习,在人类提示或条件约束下,自动生成文本、图像、音频、视频、代码等多模态内容的生成技术及其应用。
简而言之,AIGC就是用AI生成内容。
AGI的定义
和大模型一样,AGI并没有统一的定义。
AGI(Artificial General Intelligence,通用人工智能)可以理解为一种具备跨领域、跨任务的通用认知能力的人工智能形态,能够在不同环境和目标下进行理解、学习、推理、规划与知识迁移,并在缺乏明确任务定义或规则约束的情况下,自主发现问题并制定解决策略,其整体智能水平接近或超越人类。
简而言之,AGI是通用人工智能,可以自主学习并解决大多数人类可以解决的问题。
目前,AGI尚未实现,涉及复杂决策、随机应变以及和物理世界交互的任务AI基本都无法完成。
对比

大模型的开源

大模型由四个要素构成:模型权重(参数)、训练代码、推理代码、训练数据集。
不同于传统软件的开源,大模型开源主要指开源权重(模型参数),可能包含推理代码,通常不包含训练代码和数据集。
开源模型
DeepSeek系列(V4已开源)、Qwen系列、Llama 4系列。
闭源模型
GPT系列(不包括早期的GPT-1、GPT-2)
Gemini系列(大多数)
Claude 5系列
大语言模型的架构演进
本节目标:理解架构选择的必然性。
*NLP技术演进主线(略)
NLP的架构经历了规则系统->统计方法->机器学习->深度学习的发展。
在深度学习之前,NLP的核心是特征工程,即专家设计并从语料中提取特征后交给模型,后者根据特征决策。从深度学习开始,NLP的核心成为了表示学习,不再依赖人工设计和提取特征,模型直接接收分词后的文本序列,自主从语料中理解语言结构,学习特征表示或决策。
特征工程:人(专家)告诉模型“应该看什么”
表示学习:模型自主学习“应该关注什么”
现代大模型都属于表示学习的范畴。
表示学习(深度学习)经历了
RNN->LSTM->GRU->Seq2Seq->Seq2Seq+Attention->Transformer的发展,Transformer正是现代大模型的基石。
RNN
RNN(Recurrent Neural Network,循环神经网络)的核心思想是逐个读取句子中的词语,并在每一步结合当前词和前面的上下文信息,不断更新对句子的理解,其基本结构如下。

RNN的问题在于
长期依赖建模困难:当文本序列很长时,经过多级传递,早期输入的影响难以保留。
难以并行计算:每个词的处理都依赖上一个词的输出,难以并行计算。
LSTM
LSTM(Long Short-Term Memory,长短期记忆网络)是在RNN基础上的优化,引入了记忆单元()和门控机制(遗忘门(紫色)、输入门(橘黄色)和输出门(红色)),一定程度上缓解了RNN长期建模困难的问题。

但是,LSTM引入了新的问题
参数量大,计算开销大:LSTM引入了新的组件,大幅增大了模型的参数量。
此外,RNN的问题并没有完美解决
并行计算难的问题没有解决
长期依赖建模依然困难:LSTM只是缓解了这个问题,当序列超长时,早期输入仍然会被遗忘。
GRU
Gated Recurrent Unit(GRU)在LSTM基础上做出了改进,减少了参数量:
去掉了记忆单元。
优化门控机制,将三个门改为两个:重置门(橘黄色)、更新门(紫色)。

GRU改善了LSTM,但RNN固有的两个问题依然没有解决。
长期依赖建模困难。
难以并行计算。
Seq2Seq
Seq2Seq是专门为以动态输出为主的NLP任务设计的深度模型架构,这类任务的特征是输入输出均为序列且长度可变,如机器翻译、文本摘要等。
基本架构如下,由一个编码器和一个解码器构成。编码器和解码器的主要架构通常是(RNN / LSTM / GRU)。

Seq2Seq存在两个问题
信息压缩困难,语义表达受限
编解码器中间的特征表示长度固定,面对长句时,大量信息丢失,成为了“信息瓶颈”。
缺乏动态感知,解码难以精准生成
生成过程中,不同位置的目标词,往往依赖源句中的不同关键信息,如生成主语时可能更依赖开头,生成谓语或宾语时,可能需要参考句中或句末内容。
在固定表示下,解码器无法有选择地关注源句中的不同部分。
Seq2Seq+Attention
为了解决Seq2Seq的不足,引入了Attention(注意力)机制。核心思想是在解码时动态从编码器的隐藏状态(隐藏状态和源句中的词一一对应)中提取信息,不再仅仅依赖一个固定的上下文向量。

然而,模型架构依然是以RNN为基础,仍然存在固有缺陷
长期依赖建模困难
难以并行计算
Transformer
Attention机制也具备建模词语间依赖的关系,理论上,可以彻底摒弃RNN,直接作为神经网络的核心。
2017年,谷歌发表了《Attention Is All You Need》,提出了Transformer。该模型彻底摒弃了RNN结构,转而使用注意力机制直接建模序列中各位置之间的关系。通过这种方式,Transformer不仅显著提升了训练效率(支持并行计算),也增强了模型对长距离依赖的建模能力(任意两个都可以直接计算注意力,不存在长程间接依赖)。

Transformer沿用了Seq2Seq的编解码器架构,左侧为编码器,右侧为解码器。编码器内部包括自注意力层和前馈层(多个线性层的组合),解码器包含自注意力层、交叉注意力层和前馈层。
为什么大语言模型都采用Transformer架构?
Transformer 胜出的原因可以用三点概括:并行计算、全局依赖、可扩展性。
支持并行计算,训练效率高

基于RNN的模型在时间步上天然串行。基于Transformer的模型可在序列维度上并行计算,使得大规模训练成为现实。
全局依赖建模更直接

注意力机制允许任意两个位置直接建立信息通路,不需要像RNN那样通过多步传递才能“间接关联”,因此更擅长长程依赖与复杂结构关系建模。
工程可扩展性好:规模变大仍能持续受益

在实践中,Transformer在参数规模、训练数据、训练步数提升时通常能持续提升效果,形成稳定的“规模化收益”,这使其成为大模型时代的默认架构选择。
为什么现代大语言模型是Decoder-Only(仅解码器架构)?
Transformer架构的三种技术路线
Transformer架构的模型主要有三条技术路线:
Encoder-Only(仅编码器架构)
Encoder-Decoder(编码器-解码器架构,原版Transformer的架构)
Decoder-Only(仅解码器架构)
Encoder-Only架构

该架构以“编码输入”为核心,输出的是固定维度的向量表示(特征),擅长表征学习与判别式任务。
Decoder-Only架构

核心机制是自回归语言建模,天然契合自回归生成任务。
Encoder-Decoder架构

该架构需要明确区分输入和输出,对于翻译这样输入输出区分明确的任务非常友好。
总结

为什么采用Decoder-Only?
更适合自由对话/连续生成:不需要人为把“输入/输出”硬切分;Encoder-Only不适合用于生成任务,而Encoder-Decoder在这类场景里切分不自然,训练与使用范式更繁琐。
参数利用率更高、性价比更高:同样总参数和训练预算下,Encoder-Decoder的参数分散在Encoder和Decoder;Decoder-Only参数更集中用于生成建模,效率更高。
普适性好:大多数NLP任务都可转化为“给定上下文预测下一个token”的自回归生成任务;通用LLM想要获得跨任务泛化能力,就需要自回归机制。
因此Decoder-Only架构成为主流选择,现代LLM基本都是(Decoder-Only)模型。
Decoder-Only的流程

工作流程大致如下
输入文本通过分词器切分为token(词元),然后根据词表(id和token的映射)转换为id序列,再通过嵌入矩阵(Embedding)映射为token向量序列,再输入大模型。
在模型内部经过自注意力层、前馈层的处理(重复若干次)输出下一个token的概率分布。
根据上一步的概率分布采样,确定下一个token的id,然后通过词表映射为token。
将新生成的token追加到输入文本末尾,重复(2)和(3)。
大语言模型的训练范式
补充定义
范式
范式是指在某一研究或工程领域中,被广泛接受的一整套问题建模方式、基本假设、方法论、技术路线和评价标准,它规定了“问题应该如何被理解、如何被解决”。
大语言模型(LLM)的训练范式
LLM 的训练范式,本质上就是:用什么训练方法、按什么流程,一步一步把一个大模型训练出来的方法论。
训练范式
大模型的训练是指在海量数据和计算资源的支持下,不断更新模型参数,从而持续提升模型能力的过程。
预训练(Pre-Training)+后训练(Post-Training)已成为现代大语言模型(LLM)训练的标准范式。后训练通常包括:
SFT(Supervised Fine-tuning,监督微调)和
RLHF(Reinforcement learning from human feedback,人类反馈强化学习)/RLAIF(Reinforcement learning from AI feedback,AI反馈强化学习)两个阶段。

多模态模型由于涉及多种模态输入,其训练目标、数据构成及优化策略差异较大,尚未形成统一稳定的范式,故不在本节讨论范围内。
预训练:学语言
在海量数据集上通过语言建模(预测下一个token),获取基本的语言能力。
这一阶段完成后,模型具备词语接龙的能力,但不具备对话能力。
比如:输入“下雨要带什么”,期望的回答是“带雨伞”,模型输出可能是“东西”。
SFT:学指令
在预训练模型基础上,利用少量高质量标注数据,让模型初步具备指令遵循和对话能力。
比如:输入“下雨要带什么”,模型输出为“带雨伞”。
SFT靠模仿数据学会“怎么答”,对答案优劣和边界约束(哪些内容不能输出)的学习是从样例中摸索出来的,稳定性不足。
RLHF/RLAIF
RLHF/RLAIF是运用强化学习技术、通过人类或AI干预的方式让模型输出和人类偏好对齐(符合人类要求)的训练方法。
而RLHF/RLAIF在SFT基础上用偏好(哪个答案更好)反馈构建奖励目标,优化模型倾向于输出更好、更合规、更安全的回答。
SFT和RLHF/RLAIF效果对比
从安全和帮助性(有用、更好)的角度对SFT和RLHF/RLAIF做个对比。
安全对齐(Harmlessness)
① SFT应对直球式高风险请求
SFT对直球式高风险请求,往往能复现训练集中学到的拒答模式。但在多轮对话、语境包装的场景下,模型可能被逐步引导,从“讨论风险要素”滑向“生成违规内容”。
② SFT应对多轮诱导
- 第一轮
- 第二轮
SFT 更像“学会怎么回答”,但对多轮诱导下的安全边界保持,稳定性可能不足。
② RLHF/RLAIF
- 第一轮
- 第二轮
RLHF/RLAIF在SFT基础上引入偏好反馈,直接把不同回答标记为更好/更差,据此优化模型的输出选择,相比主要靠样例“自己摸索”的SFT,这种做法能让模型在多轮诱导下能更稳定地守住边界。
一旦回答趋向生成可执行、可复用的违法内容,模型更可能拒绝或转向安全替代(如只给风险提示),从而相较SFT显著降低高风险内容的输出概率。
帮助性对齐(Helpfulness)
① SFT
这类回答通常合规、稳妥,但偏泛泛而谈:信息密度低、可操作性弱、对用户问题的诊断价值有限。
② RLHF/RLAIF
在偏好优化下,模型更可能被鼓励输出更具体、更可行动、更贴合问题的内容,例如:
大模型算力基础设施
算力从哪里来?

硬件基础
CPU、GPU、TPU、NPU
CPU
CPU(Central Processing Unit,中央处理器)专为通用计算设计,擅长复杂任务的串行处理,是所有计算机的大脑。如果没有CPU,计算机无法工作。
CPU的运算能力来源于ALU(算数逻辑单元),它拥有少量强大的ALU。

传统GPU
GPU(Graphics Processing Unit,图形处理器)是专用于数字图像处理的电路,我们通常所说的显卡就是GPU,最初设计用于加速图形渲染任务(如3D游戏、视频处理)。
GPU拥有大量能力单一的计算单元,如FP64(专门处理双精度浮点数运算)、FP32、FP16等。

现代GPU
GPU逐渐演变为通用并行计算设备,广泛应用于科学计算、人工智能等领域。
随着机器学习的蓬勃发展,为了满足训练需求,GPU主要厂商(英伟达)为现代GPU增加了专用于矩阵运算的单元。
GPU主要厂家有英伟达(约80-90%份额)、AMD、摩尔线程等。
目前顶尖的大模型多数都是在英伟达的GPU上训练的。

NPU
NPU(Neural Processing Unit,神经网络处理器),亦称AI加速器或深度学习处理器。是一类专门为加速神经网络计算而设计的芯片,牺牲通用性换取在机器学习任务上的超高性能和低功耗。
NPU砍掉了FP64等单一运算单元,通常只保留矩阵运算单元,并引入向量处理单元和标量处理单元。注:NPU厂家很多,架构五花八门,核心思路相同,但具体实现需要参考架构手册。
主要厂家有华为(昇腾系列)、寒武纪、摩尔线程等。

TPU
TPU(Tensor Processing Unit,张量处理器)是谷歌为神经网络机器学习专门开发的专用芯片,适用于谷歌自家的TensorFlow框架。2015年开始内部使用,2018年向第三方开放。
发布后处于第一梯队的Gemini 3.x系列模型就是在谷歌的TPU上训练的。
本质上TPU也属于NPU的一种。
总结

① CPU拥有少量性能强大的运算单元,适合复杂任务串行处理。
② 传统GPU拥有大量功能单一的运算单元(如FP64、FP32、FP16等),适合大量简单任务并行处理。可用于科学计算和机器学习。
③ 现代GPU为了迎合机器学习训练和推理的需求,在传统GPU的基础上增加了专用的矩阵计算单元,在英伟达显卡中被称为Tensor Core,大幅提升了神经网络计算效率。
④ NPU在现代GPU的基础上进一步专门化,专用于神经网络计算。
⑤ TPU是谷歌自研的NPU。
内存和显存

内存(RAM):计算机临时工作空间,存放CPU运行所需的数据。
显存(VRAM):显卡专用内存,专门存储GPU运行所需的数据。
VRAM的常见类型有GDDR或HBM,游戏显卡通常采用GDDR,高端计算卡(用于神经网络计算)通常采用HBM。
英伟达显卡架构迭代和主要产品型号

当前,大语言模型的训练与微调主要依赖于 NVIDIA 的 GPU,因其具备成熟的 CUDA 生态和高效的计算库。以下是一些常用于 LLM 微调的 GPU 型号:
算力为什么不够用?
在大模型训练和推理场景中,算力长期处于“供不应求”状态。
狭义的算力是指计算设备单位时间内完成浮点运算的能力,但在业内“算力”常被用来泛指GPU或计算资源,“算力不够用”不一定是FLOPS不够,也可能是因为显存不够用、通信太慢、带宽太低。
训练阶段的硬件瓶颈

显存容量
在训练过程中,显存不仅需要存储模型参数,还需保存:梯度、优化器状态、中间激活值,显存消耗通常是模型参数本身的数倍。
爆显存(显存不足)时,部分数据会被卸载到内存甚至硬盘,此时I/O(数据在不同存储介质间的传递)将会成为瓶颈,训练效率会非常低。
多卡通信开销
顶尖大模型的规模非常大,单卡无法容纳完整模型,必须通过张量并行或流水线并行切分模型,为提升效率还会引入数据并行。此时,多卡通信将会成为新的瓶颈。
算力
算力是指显卡在单位时间内可以完成的运算次数。
模型越大,训练就越“吃算力”。目前顶尖模型的参数量在千亿甚至万亿级,即使在高性能GPU集群上,也需要数周甚至数月才能完成。算力不足,训练时间将会进一步延长。
在显存充足且通信够快的情况下,算力将会成为瓶颈。
推理阶段的硬件瓶颈
KV-Cache
LLM的推理过程是根据提示词生成下一个token,然后追加到提示词末尾,将提示词和新增token馈入模型,再生成下一个token,如此循环往复的自回归生成过程。
实际上,除了最后一个token,前面的token在注意力机制中的作用是作为KV,因为我们只根据最后一个token采用,Q中只需要最后一个token的映射,所以可以把历史KV缓存下来,就不需要每一轮生成都重新计算历史token的KV了,这就是KV Cache。
瓶颈

与训练相比,推理阶段面临的瓶颈表现出不同特点。
① 显存容量
推理阶段不需要梯度和优化器状态,即便如此,超大模型的参数本身仍然占据大量显存,此外,为了提升效率,推理阶段通常需要保存KV Cache,进一步增加显存开销。
同样,爆显存可以卸载至RAM,但会导致IO成为瓶颈,效率大幅降低。
② 显存带宽
训练阶段通常加载整个序列,然后进行大量并行计算。
而推理的Decode阶段是逐token生成,每生成一个token需要从显存加载整个模型和所有的KV Cache,计算单元大部分时间都在等待,此时显存带宽会成为瓶颈。
③ 通信
同样,单卡显存不足时(不考虑量化)需要用多卡集群,多卡通信效率会影响推理效率。
④ 算力
推理的Prefill阶段计算量很大,此时算力可能会成为瓶颈。
CUDA:英伟达的护城河

CUDA是NVIDIA的并行计算平台与软件生态,提供从编译、运行到调优的完整工具栈。
NVIDIA的领先不只在GPU性能参数的强大,更在于完善的CUDA生态:它把理论算力转化为可用性能,降低开发与优化成本,让实际性能更接近硬件参数。
NVIDIA的CUDA在极端情况下,甚至可以发挥硬件90%以上的性能。
大模型的工程实现
工程实现概述
大模型能力强大,但真正落地为可用的产品或生产力工具,还要进行工程化加工。
从工程实现角度看,大模型的应用主要可以分为提示词工程、RAG、微调、续训、智能体开发五个模块。

提示词工程
什么是提示词?
提示词
提示词(Prompt)是指用户与大模型交互时输入的内容,用于描述任务目标、提供必要上下文,并约束目标生成结果的形式与范围。

为什么需要优化提示词
大模型的本质是基于输入条件做概率预测——你给的输入决定了模型在"可能的答案空间"里往哪个方向收敛。同样的模型,输入越精确,输出的高概率区域就越落在你想要的地方。
就好像看医生,如果只是说"我不舒服",医生很难判断具体病症;如果详细描述症状、病史和用药情况,医生就能做出准确的诊断。提示词的道理完全一样。

提示词工程
提示词工程(Prompt Engineering)是在使用大模型时,通过系统化地设计、组织和优化提示词,以引导模型在特定任务、约束和上下文条件下,稳定产出符合预期目标的高质量输出的一套方法论与实践体系。
可以把提示词理解为给模型写的需求规格说明书——不是咒语,不需要玄学,需要的是把需求表达清楚、完整、无歧义。
概念补充
上下文
上下文(Context)通常指模型在生成当前输出时可直接访问并用于推理的信息集合。
简而言之,上下文就是输入模型的整个token序列。

上下文窗口
模型可以接收的上下文长度不是无限的,模型架构设计和训练决定其长度上限,这个上限称为上下文窗口。
当输入内容超过上下文窗口时,超出部分无法被模型直接看到,会被截断或以其它方式处理。
在线大模型的调用方式
在线平台
访问大模型厂商官网即可,国内的顶尖模型基本都可以在官网免费使用。
Deepseek:https://chat.deepseek.com/


在线API
大模型厂商基本都提供了API接口(基于HTTP/HTTPS协议的REST API),访问接口即可调用大模型。
为什么要用在线API
某些场景下,直接在Web端调用大模型不方便或者无法实现,此时需要通过调用API完成。
提示词需要重复使用
有些提示词需要重复使用,在线平台每个会话都要粘贴一次,很麻烦。此时可以通过AI客户端的预定义提示词功能解决。
复杂任务
我们想用大模型做一些复杂任务,如个人知识库、Agent,官网没有提供相应的功能模块,需要通过第三方应用实现。
而本地AI客户端和第三方应用通常都是通过API调用大模型的。
命令行调用
API接口通常是付费的,调用需要提供秘钥。
DeepSeek API开放平台:https://platform.deepseek.com/usage

API秘钥和地址在官网获取



红框部分为接口调用命令,将上图中的${DEEPSEEK_API_KEY}替换为自己的API Key,然后在Linux命令行执行即可。日志如下。

代码调用
还可以写代码发送API请求调用大模型。这是最灵活的方式,复杂AI应用的开发只能通过代码实现。
后续课程介绍。
Cherry-Studio
Cherry-Studio下载链接:https://www.cherry-ai.com/download

安装过程
按照提示安装即可。
① 双击后打开
② 安装选项

③ 选定安装位置

④ 正在安装

⑤ 安装完成

以DeepSeek API为例,配置流程如下。
打开API配置界面

这里的API地址不需要填写com后面的部分,Cherry-Studio会自动补全,在API地址输入框下方可以看到“预览”。
配置模型

在官网查看模型ID,写入对应输入框。


检测连接


连接成功提示如下。

添加助手



配置默认模型


聊天

提示词怎么写
提示词工程的变化
GPT-3/早期GPT-3.5时代,模型能力弱、不稳定,容易跳步、编造结论、不按格式输出,所以需要复杂的提示词技巧,如格式化提示词、提示思维链甚至思维树等。
然而,随着模型能力的增长,复杂提示词在大多数通用应用场景中的边际收益明显下降,提示词工程的重点逐渐从"设计技巧"转向"需求表达"。
一个核心:把模型当人
提示词写不好的根源,几乎都是同一个:把模型当成了"应该能懂我"的自己人。
一个实用的检验标准是:把你的提示词拿给一个聪明但完全不了解情况的陌生人看,如果他能不看你的脸色、不问补充问题,直接准确执行你的意图,这就是好提示词。
模型和那个陌生人一样——它不知道你的背景、你的场景、你脑子里没说出来的假设。所以写好提示词的核心只有一件事:消除信息不对称。你脑子里有但模型没有的信息,必须显式写进去。
五要素:一张需求检查清单
基于"消除信息不对称"这个核心,可以推导出一份实用的检查清单。每写一条提示词,按这五项过一遍,缺了哪项补哪项:
记忆法:"谁(角色)做什么(任务),依据什么(输入),产出什么样(输出),不能怎么做(约束)"。
其中输入、输出要求、约束几乎是所有实用提示词的必备项;角色在需要专业视角或固定人设时必须有;任务在简单问答中可以省略,但复杂任务中必须显式给出。此外还可以提供输入输出示例,让模型更精准对齐期望格式。
一种通用的提示词模板如下:
五要素详解
角色
角色回答"你是谁"。它限定模型的视角、专业背景与思考方式,帮助模型自动激活对应领域的表达习惯与分析框架。
角色不是必须的,但在以下场景建议显式给出:
- 需要特定专业视角(如律师、医生、财务)。
- 需要固定语气或人设(如客服、段子手)。
- 多轮对话中身份不能漂移。
任务
任务回答"要做什么",用一句话明确核心动作,避免模型在多个可能方向上发散。
任务的写法要点:动词开头,宾语具体,目标可衡量。对比:
- ❌ "帮我看看这些评论"——做什么、做到什么程度都不清楚。
- ✅ "提取3条最具代表性的负面反馈,并分别给出改进建议"——动作(提取/给出)、数量(3条)、产出(反馈+建议)都明确。
输入
输入是模型完成任务的"原材料",包括用户本轮输入,也可能包含参考资料(如商品参数、新闻原文、数据表、历史对话摘要)。
输入的设计原则:只给必要信息,但给全必要信息。无关内容会稀释模型注意力,关键内容缺失则直接导致幻觉。
输出要求
输出要求约束结果"长什么样",关注点是形式与结构,如 ①用表格/JSON ②有哪些列/字段 ③包含哪些内容 ④长度 ⑤语言和风格等。
输出要求中还可以提供示例(Few-shot),这是让模型精准对齐格式的最强手段:
示例可以显著提升模型的指令遵循效果,在格式复杂或不易描述时几乎不可替代。
约束
约束限定模型"能不能 / 该不该"这样做,关注点是行为边界与认知边界,如 ①信息来源约束(可以参考哪些信息)②行为约束(不能输出什么内容)③不确定性处理规则(信息不足时怎么办)。
输出要求管"结果长什么样",约束管"行为不能越过什么边界",二者互补。
特殊符号的作用
人类在阅读文本时,倾向于关注被特殊符号标记的部分,同样,提示词中被特殊符号标记的部分也会被模型重点关注。我们可以用 #、-、* 等特殊符号对关键信息做标记,提升模型对于指令的遵循效果。
好提示词的五个标准
五要素回答的是"提示词里应该写什么",但写出来了不等于写好了。怎么判断一条提示词的质量?可以用以下五个标准来验收:
这五个标准和五要素是配套的:五要素告诉你该写什么(零件清单),五个标准告诉你写得好不好(验收标准)。写完提示词后,用五个标准逐项检查,哪项不达标就针对性修补——准确性差补任务和输出要求,完备性差补输入,经济性差删冗余,依此类推。
迭代:好提示词是调出来的
不要期望一次写出完美的提示词。实际工作中的正确姿势是:
- 先写初版——按五要素把能想到的都填上
- 跑测试——用真实输入跑一遍,观察输出
- 用五个标准定位问题——准确性差→补任务和输出要求;可复现差→锁定输出结构;鲁棒性差→去掉依赖巧合措辞的表述;完备性差→补输入和约束;经济性差→删冗余
- 针对性修补——缺什么补什么,不要盲目加无关内容
- 边界测试——换几个不同的输入再跑,确认五个标准都达标
这个"写→测→评→改→再测"的闭环,比任何提示词模板都重要。
对比测试:差提示词 vs 五要素提示词
五要素到底有没有用?不能只看理论,必须用同一个模型、同一份数据做对照实验。下面用 DeepSeek(deepseek-chat)在同一份商品信息上做两次独立会话测试,仅改变提示词。
测试设计
- 模型:DeepSeek
deepseek-chat,temperature=1.0(默认)。 - 任务:根据同一份"添可极客智能洗地机"商品信息,生成约20秒的宣传视频分镜脚本。
- 会话A(差提示词):只给一句模糊指令。
- 会话B(五要素提示词):按角色/任务/输入/输出要求/约束完整组织。
- 两次会话互相独立,不共享历史消息,排除上下文干扰。
商品信息(两次会话完全一致):
会话A 的提示词:
会话B 的提示词:
测试结果(DeepSeek 真实返回,未删减)
会话A 输出:
会话B 输出:
结果对比分析
用"好提示词的五个标准"逐项验收两次会话的输出质量:
token 消耗参考:会话A 输入273 tokens / 输出353 tokens;会话B 输入469 tokens / 输出484 tokens。多花的约200个输入token,换来的是结构可控、可直接工程化使用的输出——这正是提示词工程的价值。
实操
任务描述
我们的目标是根据用户评论数据,生成一份负面反馈分析报告,要求输出为固定结构的JSON,字段如下:
用户评论数据如下:
结构化组织提示词
AI优化提示词
在上述提示词的末尾追加内容:
整理模型输出,拿到优化后的提示词,重新测试。
多轮对话消息结构设计
什么是消息结构设计
消息结构设计是指在多轮对话中,对提示词中的信息进行分层与分工:比如将稳定不变的部分放入System,将用户输入放入User,将模型产出放入Assistant。通过这种组织方式,把“长期有效的约束”和“动态信息”拆开管理,减少重复传递、降低token成本,并提升输出的一致性与可控性。
使用场景
如果通过在线平台使用大模型,用户可以控制的只有输入,不能控制系统提示词,也无法管理历史对话记录。只有通过API调用时才需要设计消息结构。
如何设计消息结构
OpenAI设计的多轮对话消息结构成为了很多大模型厂商遵循的规范,他们将多轮对话中的基础消息分为三类:
System:系统提示词,不会随着多轮对话而发生改变,通常只有一条。
User:用户提示词,用户输入。
Assistant:AI的回答。
为了迎合工具调用的需求,现在大多数模型都会在消息列表中添加tool或别的等效字段,在Function Call部分会提及,此处不考虑。
消息结构和提示词要素的对应关系

注意:模型无记忆,要进行多轮对话,必须提供历史对话记录,通常每轮交互新增的用户输入和模型输出都会追加到消息列表末尾。
系统提示词
在消息列表中只有一条系统提示词消息,包含不会随聊天的进行而动态变化的信息,包括
- 角色/任务:通常一个会话(一次完整的多轮对话)完成一个特定任务(多任务混杂在一个会话中效率低,不规范),角色和任务信息是固定的。
- 上下文:上下文可以分为稳定上下文(如参考资料)和动态上下文(如对话记录,随着对话轮次的增加而增长),前者可以放在系统提示词中。
- 输出要求:输出格式要求也应是固定的。
- 约束:同一会话中约束也不应变化。
历史用户输入和模型输出
这部分内容共同构成了动态上下文。
用户最新输入
对应提示词中的#输入要素。
注意:调用兼容OpenAI API规范的大模型时,动态上下文和输入都不再显式出现在特定的标签下,而是以User消息的形式存在。
命令行调用实操
整体结构
调用命令
本地AI客户端实操
用本地AI客户端测试。注意:Cherry-Studio这样的客户端会自动管理历史消息并作为动态上下文追加到消息列表。
整体结构
System消息
把上文整理好的角色/任务、输出要求和约束放在System消息内。
User消息
把输入放在User消息内。
Cherry-Studio测试
① 系统提示词配置
不变提示词作为系统提示词。

② 用户提示词
可变提示词作为用户提示词,直接输入对话框即可。

案例
提示词模板
什么是提示词模板
提示词模板(Prompt Template)是把提示词中反复出现的“信息项”抽象成可替换占位符的一种写法/配置方式。和上文给出的模板不同,此处特指可参数化的提示词模板。
它不是一条具体的提示词,而是一套“可复用的提示词骨架”:把不变的部分固化,把会变的部分参数化,运行时再把参数填进去,生成最终可发送给模型的提示词或消息列表。
提示词模板没有统一的规范,如Langchain和jinjia都实现了各自的规范。
把上一节给出的提示词模板按照Langchain的规范改造,其中{}括起来的部分都可以视为变量,在运行时动态替换。
应用场景
Cherry-Studio 这类离线 AI 客户端通常不支持模板变量的自动替换/渲染,因此难以直接使用“可参数化的提示词模板”(除非手工填充)。
在工程实践中,提示词模板更多用于代码调用(如 LangChain/自研服务)或智能体平台(如 Coze、Dify 等)中,由框架/平台在运行时完成变量替换与消息装配,该过程对用户通常是透明的。
提示词模板和五要素、消息结构设计的统一
五要素 = 内容清单;模板 = 结构容器;消息结构 = 运行时装配方式
提示词五要素回答"必须把哪些信息告诉模型"(内容)。
提示词模板回答"把这些信息按固定栏目组织成可复用的结构"(结构)。
消息结构(System/User/Assistant)回答"在多轮对话中,哪些信息是稳定的、应该放到System;哪些应该放到User;模型产出如何回填进动态上下文(Assistant)"(运行时装配)。
总结:五要素(设计) → 模板(写法) → 消息结构(运行)
提示词模板是对提示词要素结构化并参数化的可复用框架。
消息结构是把稳定约束和动态信息在多轮对话中分层装配到不同消息的运行时组织方式。
二者可以组合使用:常见做法是为不同消息维护各自的template,并在每轮对话中各自填充变量,我们按照这种思路对上文给出的提示词模板进行拆分,如下所示。
- System_template
- User_template
注意:历史记录通常不会填充在User_template的动态上下文变量中,Langchain这样的AI应用框架会有专门的对象自动管理历史记录(像Cherry-Studio那样将历史消息追加到消息列表中)。
这里的dynamic_context通常用于填充用户追加的参考资料、还有可能是历史消息列表的摘要,或者在RAG中被填充为从知识库中召回的内容。
提示词工程的边界
提示词工程通过合理组织信息,能够在多数简单任务中有效引导大模型生成高质量结果。但需要明确的是,提示词并不是万能的。
当任务需求变得更加复杂时,仅依靠提示词往往难以胜任,主要体现在以下几类场景中。
参考资料太多
如果上下文部分的参考资料太多,可能超出上下文窗口,此时提示词工程就不能解决问题了。此时可以考虑RAG。
多步骤复杂流程
模型在一次生成中需要同时完成多个步骤时,容易出现跳步、遗漏或顺序混乱等问题。此时仅通过提示词进行约束,稳定性和可控性都较差。
如撰写百万字小说大纲,通常需要经历以下流程
确定高层抽象(小说类型、目标读者、核心主题、预计体量等)
世界观与规则系统(世界基本设定、力量成长体系等)
人物系统设计(主角、重要配角、反派系统等)
整体故事主线(开端、发展、高潮、结局)
卷级结构设计(每一卷的主要冲突、引入信息、人物状态变化等)
章节级细纲(每一章节的叙事目的、核心事件、章节间因果关系等)
。。。
此外,为了获得最终可用的大纲,上述步骤可能要经历多轮迭代。
很显然,即便把详细流程作为提示词给到模型,也很难输出可用的大纲,此时可以考虑Agent开发。
指令遵循能力不足
如果模型本身的指令遵循能力不足,通过提示词工程难以弥补。
比如,我们希望模型按照动漫《凡人修仙传》主角韩立的语言习惯和风格回复,用提示词很难准确描述需求,少量示例通常也收效甚微。
此时可以考虑用大量人物对话语料微调模型。
缺少领域知识
在垂域场景(面向具体行业/领域的场景)中,模型对领域语言/知识分布系统性缺失,提示词无法解决。
比如半导体领域,如果模型缺乏对CMP、光刻对准误差、CD 偏差、良率爬坡、FinFET等专有名词的理解,不了解工艺流程,则很难生成高质量回答。
此时可以考虑用大量领域语料续训模型,此处的数据量远大于微调。
RAG
什么是RAG
定义
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索(Retrieval)与文本生成(Generation)的技术,AI应用接收到用户请求后,先从外部知识库检索相关资料,并将这些资料与用户请求一并提供给大模型。模型在此基础上生成更准确、更有依据的回答。
流程图

架构图

为什么需要RAG
大模型虽然能力强大,但存在两个核心问题:
1. 知识冻结
大模型的训练数据是静态的,训练完成后无法自动获取最新信息。例如,模型无法回答"当前热门影片"等时间敏感性问题,因为训练数据中不包含最新的信息。
2. 幻觉问题
大模型在面对特定领域(如企业内部资料、专有技术文档)的查询时,可能因缺乏足够的信息而生成不准确甚至虚构的回复。
解决方案:
RAG通过引入向量数据库(Vector Database)作为外部知识源,将模型缺失的知识以结构化的形式提供,从而提升回答的准确性和可靠性。
执行流程
RAG的核心执行流程可以分为以下几个关键步骤:
离线阶段(知识库构建):
- 文档加载:读取各种格式的文档(PDF、Word、网页等)
- 文档分块(Chunking):将长文档切分为较小的文本块,便于后续检索
- 向量化(Embedding):使用Embedding模型将文本块转换为向量表示
- 存储到向量数据库:将向量存入向量数据库,建立索引
在线阶段(查询处理):
- 用户查询:接收用户的问题
- 查询向量化:将用户问题转换为向量
- 相似度检索:从向量数据库中检索最相关的Top-K个文本块
- 重排序(Reranking,可选):使用Reranker模型对初步召回的结果进行精排,提高准确率
- 增强提示词:将检索到的相关内容与用户问题组合成增强的提示词
- 生成答案:将增强的提示词发送给大模型,生成最终答案
涉及的大模型使用:
- 第3步向量化时,需要使用Embedding模型
- 第7步重排序时,需要使用Reranker模型(可选)
- 第9步生成答案时,需要使用LLM
Reranker的使用场景:
- 适合使用:追求回答高精度和高相关性的场景,如专业知识库、客服系统等
- 不适合使用:Reranker会增加成本和检索延迟,对响应时间要求高的场景可能不合适
何时需要RAG
当模型缺乏必要的参考信息时,RAG可以用来补充外部知识与上下文。典型场景包括:
- 需要获取最新信息(如当天新闻、实时数据)
- 需要查阅或引用公司内部资料、专有文档
- 需要基于特定知识库进行问答
- 需要减少模型幻觉,提高回答的准确性
实现方式
根据使用场景和需求,RAG有多种实现方式:
在线平台
适合快速验证和轻量级使用:
- Cherry Studio:桌面/图形化AI助手+知识库,支持对接云模型与本地模型,适合个人/小团队快速验证
- AnythingLLM:类似Cherry Studio,部署和操作简单,上手快
- ima(腾讯):腾讯出品的个人知识库搭建平台
低代码平台
适合应用化交付与团队协作:
- Dify:LLM Agent与工作流编排平台,支持创建知识库,支持云端与本地部署
- FastGPT:类似Dify,提供完整的Agent/Workflow编排能力
- Coze:字节跳动出品的AI应用开发平台
专业引擎
适合企业级文档解析(高精度需求):
- RAGFlow:基于深度文档理解的开源RAG引擎,强调复杂文档解析、引用与可视化干预
编程实现
适合需要深度定制的场景:
- LangChain:Python/JavaScript框架,提供完整的RAG工具链
- LlamaIndex:专注于数据连接和检索的框架
- 纯Python代码:使用向量数据库(如Chroma、Milvus、Pinecone等)和Embedding模型自行实现
知识库搭建平台对比
微调
什么是微调
在已经训练好的模型上,按照SFT或RLHF/RLAIF的范式训练模型。通常采用SFT的训练范式。
何时需要微调
模型能力不足
模型的指令遵循能力不足、风格/话术不能满足要求,反复调整提示词效果欠佳。
希望固化知识
如果提示词很长,每次调用消耗大量token,长期服务成本高昂。并且不好维护,甚至有可能超出上下文窗口。此时可以通过微调将知识固化在模型权重中。
何时可以微调
数据充足
微调需要的数据规模通常比提示词示例更大,收集到足够的数据微调才有效果,否则容易过拟合。
硬件资源充足
全参微调和高效微调PEFT
随着模型规模越来越大,如何低成本地微调模型成为核心问题。
全参微调
对模型的所有参数进行反向传播和更新。
高效微调(PEFT, Parameter-Efficient Fine-Tuning)
冻结大模型的大部分参数,只训练极少量新增或选定参数。
续训
什么是续训
在已经训练好的模型上,采用和预训练相同的范式继续训练。
何时需要续训
如果微调效果不理想,且问题来自模型对领域语言/知识分布的系统性缺失,可以考虑续训。
何时可以续训
数据充足
续训需要大量的高质量文本,通常比微调高一个数量级。
硬件资源充足
续训要求的数据量和硬件资源远高于微调,成本相应更高。
智能体开发
什么是智能体?
在经典智能体框架中,智能体(Agent)一般指能够在环境中感知信息、基于策略做出决策并采取行动,以最大化回报或满足目标约束的系统。
在大模型应用开发中,智能体通常指一种以大语言模型为推理与决策核心,结合记忆、工具调用与环境交互能力,能够进行规划决策并执行动作以达成目标的软件系统。
OpenAI前安全系统团队负责人翁丽莲于2023年6月在个人博客系统化总结了当时流行的LLM Agent典型架构。

实际开发中四个要素并不需要同时出现,一句话总结
- 必须的:行动(Action)
- 几乎总是存在的:工具(Tool)
- 有条件存在的:规划决策(Planning)
- 最容易被省略的:记忆(Memory)
何时需要智能体
智能体是大模型工程实现中复杂度最高的方案,涉及工具调用、记忆、规划、反思与多组件协作。
当其它开发方式不能获得预期效果时,都可以考虑智能体开发。

提示词工程
如果提示词工程效果不好,首先应该尝试优化提示词,如果优化提示词效果也不好,才应该分析原因选择其它开发方式。提示词效果不好可能是因为:
① 缺少工具、需要拆分任务等,这样的场景天然适合Agent开发。
② 指令遵循效果不好,先尝试提供示例,如果效果还不好就需要微调。
③ 缺少参考资料,尝试RAG。
④ 模型缺少对领域语言的系统理解,尝试续训。
RAG
RAG效果不好可能是因为:
① 检索质量不高、文档冲突或者模型未正确引用资料,此时可以结合Agent引入多轮检索、冲突比对以及强制引用检查等,提升结果的可控性和质量。
② 上述情况,也可以尝试调整RAG的文档切分、重排序等策略以提升质量。
③ 模型读不懂语料,即模型拿到了正确的参考资料,但推理不对,缺少领域知识,尝试续训。
微调
微调效果不好可能是因为:
① 规则约束太强(比如强制要求模型输出特定格式,微调无法保证极高的准确率),此时可以考虑通过Agent引入格式校验、多次重写等机制,提升生成质量。
② 数据分布和真实分布不一致(如客服场景中的微调数据经过筛选,线上输入五花八门和训练集不同),可以考虑收集合适的数据重新微调。
③ 如果发现模型读不懂语料,应尝试续训,然后再微调。
续训
只有在系统性缺失领域语言/数据分布时,才需要续训,如果续训不好,有可能是因为:
① 数据分布没有覆盖使用场景,或者发生了灾难性遗忘(失去了续训前的能力,此时应该在续训数据集中混合通用语料),此时都应该收集数据重新续训。
② 续训效果不好时,通常应该分析原因重新训练,Agent很难解决问题,但仍然可以结合Agent开发,补充校验和多次重写等机制提升生成质量。这是无奈之举,质量的提升是有限的,治标不治本。
工具调用的实现方式
Function Call
定义
Function Call(函数调用)也称为Tools call(工具调用)为模型提供了一种强大而灵活的方式,使其能够与外部系统交互并访问其训练数据之外的数据。拓展了模型的能力边界。
流程

模型为了支持Function Call,在特定数据集上进行了后训练,以支持API调用的工具相关字段。目前顶尖大模型基本都支持Function Call。
以DeepSeek官方API为例演示Function Call。
步骤一
定义工具并向模型发送消息,我们通过Linux命令行工具curl测试。
步骤二
模型返回的调用信息,如下
步骤三
根据模型返回的调用信息(函数名称、参数)调用相应的函数,这一步应该在代码中完成,用curl无法模拟,省略。
假设调用后返回的信息如下
步骤四
这一步将调用结果和历史消息打包后发送给模型,完整命令如下。
步骤五
这一步模型根据函数调用结果整理信息回答问题,模型响应如下。
Function Call的不足
工具实现与复用成本高,协作困难
开发者需要自己实现工具,并编写可被调用的描述信息,通常与业务、环境绑定,复用难、共享难、生态扩展慢。
规范碎片化,跨模型适配负担重
不同厂商定义的Function Call规范不同,开发者需要为同一个工具编写多份描述信息,维护成本和一致性风险高。
可靠性不足
工具可能没有经过足够的调试,如果描述信息不完善,模型可能在某些场景下不能正确调用工具。工具可靠性不足。
MCP
定义
MCP(Model Context Protocol,模型上下文协议)是一套标准化的通讯协议,旨在规范AI模型和外部工具、数据源的连接方式,由Anthropic(Claude母公司)于2024年11月提出。
MCP就像是AI时代的USB-C通用接口,开发者只需按标准开发一次MCP Server,任何支持该协议的AI应用都能即插即用。

通过MCP协议,AI应用和MCP Server可以建立多对多的双向数据流。
流程

MCP可以理解为对Function Call的进一步封装和拓展,工具的定义和调用者由AI应用变为MCP服务器。
除了工具调用,MCP还支持管理资源(Resources)和提示词(Prompts)。前者是MCP服务器提供的被动数据源(文件、数据库),可以被AI应用主动获取,作为模型上下文传递。后者是MCP服务器提供的预置提示词模板,也是由AI应用主动获取后发给大模型,当然,AI应用可以和用户交互,补全模板中的关键信息。
最常用的是工具(Tools)模块。
相较于Function Call的优势
MCP一定程度上弥补了Function Call的不足
协作困难
MCP协议允许开发者把工具暴露为MCP Server,可以被多个AI应用复用。
适配负担重
工具的实现和模型适配解耦。
- AI应用负责把模型的Function Call格式映射为MCP的工具调用格式。
- MCP服务器负责实现工具。 由的笛卡尔积变成了。
一致性和维护成本大大降低。
可靠性不足
公开的MCP Server经过社区的检验,经过很多开发者的共同检验,其工具定义和元数据信息要更加规范,通常可靠性更高。
常用的MCP网站推荐
https://mcp.so/
国内开发者倾力打造的资源航母平台,目前已收录数千个MCP服务器,支持STDIO(本地通信)与SSE(云端托管)两种模式,并提供API Key与命令行参数配置方式。平台特色功能包括实时接口调试、企业级数据安全接入,以及Firecrawl爬虫服务的无缝集成。
https://smithery.ai/servers
原Smithery已被Arcade.dev收购,当前收录约700+ MCP服务器。支持一键生成并复制Cursor配置命令。
https://bailian.console.aliyun.com/?tab=mcp#/mcp-market
连接智能,即点即用,探索阿里云百炼全周期MCP服务。
实操
以网络搜索工具服务器mcp_server_fetch为例。
查找mcp_server
https://github.com/modelcontextprotocol/servers/tree/main/src/fetch
安装及服务器启动命令
安装命令
启动命令
此处不要启动,服务器的启动交给Cherry-Studio来做,否则可能端口冲突。
Cherry-Studio配置
打开MCP配置页面


快速创建MCP服务器

配置

保存并开启服务器

使用MCP服务器
打开MCP配置菜单

选择刚才创建的MCP服务器


查看效果

智能体开发方式
在线平台开发智能体
Dify、Coze,后面的课程会讲。
基于Langchain等框架开发智能体
自由度高,同样难度更高。
工作流(Workflow)
什么是工作流
工作流(Workflow)可以看作是一种智能体的设计模式,用于将复杂任务拆解为一系列有序、可控的步骤,并按照预先定义的流程逐步执行。

在实际应用中,不同任务对确定性的要求不同,当任务流程相对固定、规则明确时,可以将流程清晰地建模为工作流,由系统或模型按照既定步骤执行。这种方式可提升稳定性、可复用性和可解释性。
比如:讯飞星辰Agent平台:https://agent.xfyun.cn/home

相较于Agent,工作流的执行流程固定,结果可控,所以很多开发平台将工作流作为独立于Agent的另一种应用。
工作流开发方式
Dify、Coze等在线平台开发工作流
基于Langchain等框架开发工作流
智能体工程技术
智能体的构建涉及多种工程技术,不同技术解决不同层面的问题,在实际项目中通常需要组合使用。
提示词工程(Prompt Engineering)
原理
通过精心设计系统提示词(System Prompt)来定义智能体的角色、能力边界、行为规范和输出格式。提示词是智能体与大模型交互的唯一"指令通道",模型的一切行为都由提示词驱动。
优势
- 零成本启动:无需额外训练或基础设施,直接通过提示词即可让模型执行复杂任务
- 迭代速度快:修改提示词即可调整行为,分钟级迭代
- 通用性强:同一套提示词设计方法论可迁移到不同模型和场景
劣势
- 效果不稳定:模型对提示词的敏感度高,微小改动可能导致输出差异巨大
- 能力天花板:无法突破模型本身的能力边界,复杂任务效果有限
- 上下文窗口限制:提示词过长会挤占有效上下文,影响推理质量
典型案例
ChatGPT的System Prompt设计:OpenAI为ChatGPT设计了精心构造的系统提示词,定义了助手的角色("你是一个有帮助的助手")、行为边界(不生成有害内容)、输出风格(简洁、准确)等。用户在使用时感受不到提示词的存在,但模型的每一个行为都受其驱动。例如,当用户问"帮我写一封辞职信"时,模型会自动采用正式、礼貌的语气,这就是系统提示词在起作用。
Cursor的代码助手提示词:Cursor IDE通过精心设计的提示词,让大模型理解当前代码上下文、项目结构、用户编辑意图,从而实现精准的代码补全和重构建议。其提示词会动态注入当前文件内容、光标位置、相关依赖等信息,使模型输出高度贴合实际开发场景。
上下文工程(Context Engineering)
原理
上下文工程关注的是如何组织和管理输入给模型的全部信息,包括系统提示词、对话历史、检索结果、工具返回值等。核心目标是在有限的上下文窗口内,为模型提供最相关、最有价值的信息。
优势
- 提升回答质量:精准的上下文组织让模型"看到"最需要的信息,减少幻觉和无关输出
- 节省token消耗:通过上下文压缩、摘要、筛选等策略,在有限窗口内塞入更多有效信息
- 支持复杂任务:长对话、多轮检索、多工具调用等场景下,上下文工程是保证效果的关键
劣势
- 工程复杂度高:需要设计上下文选择、排序、压缩、淘汰等多种策略
- 与模型耦合:不同模型对上下文的利用效率不同,策略需要针对性调整
- 动态性挑战:对话进行中上下文不断变化,实时管理的难度较大
典型案例
Claude的长上下文管理:Anthropic的Claude模型支持200K token的上下文窗口,但实际使用中并非简单地将所有历史对话塞入。Claude采用了智能的上下文管理策略:对早期对话进行摘要压缩、保留关键决策点、根据当前问题动态检索相关历史片段。这种策略让Claude在长对话中仍能保持高质量回答,同时控制token消耗。
RAG系统中的上下文组装:在检索增强生成(RAG)场景中,系统需要将用户问题、检索到的文档片段、对话历史等组装成一个有效的上下文。例如Perplexity AI会先检索相关网页,然后将最相关的3-5个片段按相关性排序后注入上下文,而非将所有检索结果全部塞入,这就是上下文工程的典型应用。
治具工程(Harness Engineering)
原理
治具工程关注的是智能体的外部控制框架,即如何为智能体构建一个稳定的"骨架"来约束和引导其行为。包括输入校验、输出格式化、错误处理、重试机制、超时控制、日志记录等。"治具"一词借用自制造业,意为固定和引导工件的夹具。
优势
- 行为可控:通过外部框架约束智能体的输出范围和格式,防止"跑偏"
- 容错能力强:内置重试、降级、超时等机制,提高系统整体稳定性
- 可观测性好:统一的日志和监控让问题定位更高效
劣势
- 灵活性受限:过度约束可能限制模型的创造性发挥
- 开发成本:需要额外编写和维护控制框架代码
- 适配工作量:不同任务场景需要不同的治具配置
典型案例
Guardrails AI:这是一个专门为大模型输出设计的"治具"框架。开发者可以定义输出的结构化Schema(如JSON格式、字段类型、取值范围),Guardrails会在模型输出后自动校验是否符合预期格式。如果不符合,它会自动重试并给出修正提示。例如,要求模型输出一个包含"姓名"和"年龄"的JSON,Guardrails会确保输出一定是合法JSON且包含这两个字段。
LangChain的OutputParser:LangChain框架中的OutputParser就是典型的治具组件。它负责将模型的自由文本输出解析为结构化数据(如JSON、Pydantic对象),并在解析失败时提供错误反馈和重试机制。这层"治具"让开发者无需关心模型输出的格式波动,专注于业务逻辑。
循环工程(Loop Engineering)
原理
循环工程关注的是智能体的迭代执行机制,即如何让智能体通过多轮"思考-行动-观察"循环来逐步完成复杂任务。典型模式包括 ReAct(Reasoning + Acting)、Plan-and-Execute、Reflexion(自我反思)等。核心思想是将复杂任务分解为多步,每步根据上一步的结果动态调整下一步的行动。
优势
- 处理复杂任务:单次推理无法完成的任务,通过多轮迭代逐步逼近目标
- 自我纠错:模型可以观察行动结果,发现错误并修正
- 动态规划:根据中间结果灵活调整策略,而非死板执行预设流程
劣势
- 延迟高:多轮迭代意味着多次模型调用,响应时间显著增加
- 成本高:每轮循环都消耗token,复杂任务的总token量可能很大
- 循环风险:可能陷入无效循环,需要设计最大轮次和退出条件
典型案例
AutoGPT:AutoGPT是循环工程的早期代表。它采用"思考-行动-观察"的ReAct循环:模型先思考当前应该做什么(Thought),然后选择一个工具执行(Action),观察执行结果(Observation),再决定下一步。例如,当用户要求"帮我调研竞品并写报告"时,AutoGPT会循环执行搜索→阅读→总结→再搜索的过程,直到收集足够信息后生成报告。
Devin(AI软件工程师):Cognition Labs开发的Devin采用了更复杂的循环机制。它会先制定编码计划,然后循环执行"写代码→运行测试→分析错误→修复代码"的过程。每轮循环中,Devin会观察测试结果,分析失败原因,动态调整修复策略。这种自我纠错的循环机制让Devin能够独立完成复杂的软件开发任务。
图工程(Graph Engineering)
原理
图工程关注的是智能体的流程编排,即如何用有向图(DAG 或状态机)来描述智能体的执行流程。图中的节点代表不同的处理步骤(如模型调用、工具调用、条件判断),边代表数据流转和控制流。典型框架如 LangGraph、AutoGen 等都采用了图的抽象。
优势
- 流程可视化:图结构天然适合可视化,便于理解和调试复杂流程
- 灵活分支与合并:支持条件分支、并行执行、结果合并等复杂控制流
- 可复用:子图可以封装为可复用模块,在不同场景中组合使用
劣势
- 抽象门槛:需要将业务逻辑映射为图结构,对开发者有一定要求
- 调试复杂度:图中存在分支和循环时,调试和追踪执行路径的难度增大
- 框架依赖:通常需要依赖特定框架(如LangGraph),存在一定的技术锁定风险
典型案例
LangGraph:LangChain团队开发的LangGraph是图工程的典型框架。开发者可以用Python代码定义一个有向图:节点是不同的处理步骤(如调用模型、执行工具、条件判断),边定义数据流转和控制流。例如,一个客服智能体的图可以是:接收用户问题→判断意图→如果是查询类走RAG分支→如果是操作类走工具调用分支→合并结果→生成回复。图结构让复杂流程变得可视化和可维护。
微软AutoGen:AutoGen框架采用图的抽象来编排多智能体协作。开发者可以定义智能体之间的通信拓扑(谁和谁对话)、条件路由(根据什么条件转向哪个智能体)、循环控制(最多迭代几轮)。例如,一个代码审查场景可以建模为:编写者→审查者→修改者→审查者的循环图,直到审查通过。
多智能体设计模式
当单个智能体无法高效完成复杂任务时,需要引入多智能体协作。多智能体系统通过分工协作、信息共享和流程编排来提升整体能力。
多智能体的组织与设计
按角色划分
为每个智能体分配明确的角色和职责边界:
- 规划者(Planner):负责理解任务目标,拆解子任务,制定执行计划
- 执行者(Executor):负责执行具体子任务,如代码编写、数据查询、文档生成
- 审核者(Reviewer):负责检查执行结果的质量,提出修改建议
- 协调者(Coordinator):负责调度其他智能体,管理任务队列和依赖关系
典型案例
MetaGPT:MetaGPT是一个模拟软件公司的多智能体框架,为每个智能体分配了明确的企业角色:产品经理(分析需求)、架构师(设计系统)、工程师(编写代码)、测试员(验证质量)。各角色按照软件开发流程协作,产品经理输出PRD文档,架构师基于PRD设计技术方案,工程师根据方案编码,测试员验证代码质量。这种角色划分让复杂软件开发任务被拆解为可控的子任务。
按组织模式划分
- 层级式(Hierarchical):由一个主智能体统筹调度,子智能体各司其职,适合任务边界清晰的场景
- 扁平式(Flat):所有智能体平等协作,通过协商达成共识,适合需要多视角决策的场景
- 流水线式(Pipeline):智能体按顺序串联,前一个的输出作为后一个的输入,适合流程固定的场景
- 竞争式(Competitive):多个智能体同时处理同一任务,择优选取结果,适合需要多方案对比的场景
典型案例
ChatDev:ChatDev采用层级式组织模式,模拟一家软件公司。CEO智能体负责接收客户需求并分解任务,CTO智能体负责技术决策,程序员智能体负责编码,测试员智能体负责验证。上级智能体向下级分配任务,下级向上级汇报结果,形成清晰的指挥链。这种模式适合软件开发这类任务边界明确、流程清晰的场景。
AutoGen的GroupChat:微软AutoGen的GroupChat模式采用扁平式组织,多个智能体在一个"群聊"中平等对话。每个智能体都可以发言、提问、回答,由一个"主持人"智能体负责协调发言顺序和推进讨论。例如,在产品讨论中,市场分析师、技术专家、用户体验设计师三个智能体各抒己见,主持人总结共识和分歧,最终形成综合方案。
多智能体间的消息传递与管理
消息传递模式
- 直接通信:智能体之间点对点传递消息,适用于简单的两方协作场景
- 总线模式:所有智能体通过中央消息总线通信,由总线负责路由和分发,适用于多智能体并发协作
- 黑板模式:所有智能体共享一个"黑板"(共享存储区),智能体读写黑板上的信息来间接协作,适用于松耦合的异步协作
- 事件驱动:智能体通过发布/订阅事件来触发协作,适用于响应式和事件触发型场景
典型案例
LangGraph的状态管理:LangGraph采用共享状态的消息传递模式。所有智能体共享一个"状态对象"(State),每个智能体读取状态中的相关信息,处理后将结果写回状态。例如,在一个研究助手场景中,搜索智能体将检索结果写入状态,分析智能体从状态中读取检索结果进行分析,写作智能体从状态中读取分析结果生成报告。这种"黑板式"的消息传递让智能体之间松耦合,易于扩展和维护。
消息结构设计
每条消息通常包含以下字段:
- sender:发送方智能体标识
- receiver:接收方智能体标识(可为广播)
- type:消息类型(如 task、result、feedback、control)
- content:消息正文
- context:附加上下文信息(如任务ID、父消息ID)
- timestamp:时间戳
消息管理要点
- 消息队列:使用消息队列管理并发消息,防止丢失和乱序
- 超时机制:为每个消息设置响应超时,避免无限等待
- 重试策略:对失败的消息传递实现指数退避重试
- 消息去重:通过消息ID实现幂等处理,防止重复执行
权限隔离
为什么需要权限隔离
多智能体系统中,不同智能体承担不同职责,如果权限不加区分,可能导致:低权限智能体误操作高危工具、智能体越权访问其他智能体的数据、任务执行链路中权限扩散不可控。
权限隔离策略
- 最小权限原则:每个智能体只授予完成其任务所需的最小权限集合
- 工具级隔离:通过工具白名单控制每个智能体可调用的工具范围
- 数据级隔离:不同智能体访问不同的数据域,防止数据交叉污染
- 操作级隔离:区分读操作和写操作,写操作需要额外授权
- 沙箱执行:对代码执行等高危操作,在隔离沙箱中运行,限制文件系统和网络访问
权限传递与委托
- 不自动继承:子智能体不自动继承父智能体的权限,需要显式授权
- 临时授权:对临时需要的权限设置有效期,任务完成后自动回收
- 审批流程:高危操作(如删除数据、发送邮件)需要人工审批或上级智能体确认
典型案例
OpenAI的插件/工具权限系统:ChatGPT的插件系统采用了严格的权限隔离设计。每个插件在注册时声明所需的权限(如"读取用户日历"、"发送邮件"),用户在启用插件时需要明确授权。插件只能调用其声明的权限范围内的API,无法越权访问其他插件的数据或功能。例如,一个天气查询插件只能访问天气API,不能访问用户的邮件或日历。这种工具级隔离确保了各插件之间的安全边界。
多智能体设计中的常见问题
1. 任务分配不均
部分智能体过载而其他智能体空闲,导致整体效率低下。需要设计合理的负载均衡策略,根据智能体能力和当前任务量动态分配。
2. 信息传递损耗
多轮传递后关键信息可能丢失或失真,影响最终决策质量。应在消息中保留完整上下文,并定期汇总关键信息。
3. 死锁与循环依赖
智能体之间相互等待对方完成,形成死锁。需要设计超时机制和依赖拓扑检测,及时打破循环。
4. 一致性冲突
多个智能体对同一问题给出矛盾的结论。需要引入仲裁机制(如投票、优先级规则或人工介入)来解决冲突。
5. 可观测性不足
多智能体协作链路长,出现问题时难以定位。需要建立统一的日志、追踪和监控体系,记录每个智能体的输入、输出和决策过程。
6. 成本失控
多智能体调用大模型次数成倍增加,token消耗和API调用成本可能远超预期。需要设置预算上限,优化调用策略,对简单任务避免过度拆分。
7. 安全边界模糊
智能体之间协作越深入,安全边界越容易模糊。需要在设计阶段明确每个智能体的数据访问范围和操作权限,并在运行时严格执行。