1. 大模型三层架构到底在拆什么
1.1 从一个常见困惑说起
这两年AI圈的新概念几乎是一周一个样。今天有人聊智能体,明天有人聊检索增强,后天又冒出来一个什么思维链、工具调用、记忆机制。很多刚入行的朋友会有一个共同的困惑:这些东西看起来五花八门,到底有没有一个统一的框架能把它们串起来?
我自己在这个领域摸爬滚打了几年,踩过不少坑,也做过一些落地项目。说实话,最开始我也被这些名词搞得头晕。直到后来我把市面上几乎所有主流的大模型应用方案都拆了一遍,才发现一个非常朴素的规律:所有AI新花样,本质上只在两个地方做文章——输入什么,以及输出怎么处理。
这句话听起来简单,但它是我目前见过的、最有效的认知压缩工具。你拿它去套任何一个AI产品或者技术方案,几乎都能瞬间看清它的本质。
1.2 三层架构的划分逻辑
我把大模型应用拆成三层来看:
- 模型层:就是那个黑盒本身,负责根据输入生成输出。这一层我们能改的东西很少,主要是选型(用哪个模型、多大参数、什么版本)。
- 输入层:决定我们往模型里塞什么。这是花样最多的地方。
- 输出层:决定我们拿到模型的原始输出之后怎么加工、怎么用。这是第二多花样地方。
为什么这么分?因为模型层对绝大多数从业者来说是个既定事实。你不太可能自己去训练一个基础大模型,那是少数团队才做的事。你能做的,全部集中在“喂什么进去”和“拿出来的东西怎么用”这两端。
这个划分的好处是:当你听到任何一个新概念,你可以立刻问自己——它是在改输入,还是在改输出,还是两者都改?答案一出来,这个东西的定位就清楚了。
1.3 为什么这个框架值得掌握
我举个实际例子。有一次团队里讨论要不要引入某个新的AI框架,大家争论了很久。后来我用这个框架一分析:它核心做的事情,无非是在输入侧自动拼接了历史对话和检索到的文档,在输出侧加了一个格式校验和重试机制。这两件事我们自己用几十行代码也能做。讨论立刻就聚焦了。
再比如,有人跟你说某个方案效果特别好。你用这个框架去拆:它是不是在输入里加了示例?是不是在输出后做了二次筛选?拆完你就知道,它的效果提升到底来自哪里,你能不能复现。
这个框架不是万能的,但它能帮你过滤掉至少80%的营销噪音。
2. 输入层:决定模型看到什么
2.1 输入层的核心问题
输入层要解决的核心问题只有一个:在模型能力固定的前提下,怎么让模型看到最有利于完成任务的信息。
这里有个关键认知:大模型不是数据库,它没有“查询”这个概念。你给它什么,它就基于什么来生成。所以输入的质量,直接决定了输出的上限。我经常跟人说,如果你觉得模型输出不行,先别急着换模型,先看看你喂进去的东西是不是有问题。
输入层的手段可以分成几大类:提示词工程、上下文管理、外部信息注入、示例引导。下面我逐个拆。
2.2 提示词工程:最基础也最容易被低估
提示词工程是输入层最基础的手段。很多人觉得这不就是“好好说话”吗?其实远不止。
我做过一个对比测试,同一个模型,同一个任务,只是提示词的写法不同,输出质量的差距可以大到让你怀疑是不是换了模型。具体来说,提示词工程有几个层次:
第一层是明确指令。你得告诉模型你要什么。这听起来是废话,但我见过太多人给的指令模糊到连人都看不懂。比如“帮我写个方案”,这种指令模型只能靠猜。你得说清楚:什么方案、给谁看、多长、什么风格、重点是什么。
第二层是角色设定。给模型一个身份,能显著影响它的输出风格和知识调用倾向。比如你让它“作为一个资深财务分析师”来回答,和直接问,输出的专业度和视角是不一样的。
第三层是结构化约束。指定输出格式、分点方式、字数范围。这一层做得好,能大幅减少后续输出处理的负担。
第四层是思维引导。也就是常说的思维链。让模型先分析再结论,或者先列步骤再执行。这一层对复杂推理任务的提升非常明显。
我的经验是:提示词工程的天花板比很多人想象的高。在换模型之前,先把提示词打磨到位,往往能省下一大笔成本。
2.3 上下文管理:塞什么进去,塞多少
上下文管理是输入层的第二个大块。大模型的上下文窗口是有限的,虽然现在动辄几十万token,但也不是无限。而且上下文越长,成本和延迟越高,还可能出现“中间遗忘”的问题。
上下文管理要解决几个问题:
- 哪些信息该放进去?不是越多越好。无关信息会干扰模型判断。
- 信息怎么组织?顺序、分隔、标注方式都会影响效果。
- 超长了怎么办?截断、摘要、检索,各有适用场景。
我自己的做法是:把上下文当成一个预算来管理。每次调用模型之前,先想清楚这次任务最少需要哪些信息,然后按重要性排序,优先放最关键的。如果还有空间,再考虑补充辅助信息。
这里有个实操技巧:把最重要的信息放在上下文的开头和结尾。因为模型对这两个位置的注意力相对更强。中间部分容易被忽略。
2.4 外部信息注入:检索增强的本质
检索增强生成(RAG)是这两年最火的方向之一。但如果你用三层框架去拆,它的本质非常清晰:在输入侧,把外部知识库中相关的片段检索出来,拼接到提示词里,一起喂给模型。
它改的就是输入。模型本身没变,变的是模型看到的东西。
RAG的核心难点不在模型,而在检索。检索不准,喂进去的就是噪音,效果还不如不喂。我踩过的坑包括:切片粒度不合理、检索策略太单一、没有做重排序。这些问题的本质都是:你给模型的输入质量不行。
关于RAG的实操,有几个点值得展开:
- 切片策略:按固定长度切是最简单的,但效果往往一般。更好的做法是按语义单元切,比如按段落、按章节。如果文档有结构,尽量保留结构信息。
- 检索方式:向量检索是主流,但纯向量检索对精确匹配不友好。实践中常用的是混合检索,向量加关键词,各取所长。
- 重排序:初步检索出一批候选,再用一个更精细的模型重新排序。这一步对最终效果影响很大,但很多人会忽略。
2.5 示例引导:少样本学习的威力
在输入里给几个示例,让模型照着做,这是少样本学习的基本思路。它改的也是输入。
示例引导的关键在于:示例的质量比数量重要。给三个精心挑选的示例,效果可能好过给十个随便找的。示例要覆盖典型情况,要格式统一,要能体现你期望的输出风格。
我通常会把示例分成两类:一类是标准示例,展示正常情况;一类是边界示例,展示特殊情况怎么处理。这样模型对任务的理解会更全面。
注意:示例不是越多越好。太多示例会占用上下文空间,还可能让模型过度拟合示例的表面形式,反而忽略了任务的本质。
3. 输出层:决定拿到结果后怎么用
3.1 输出层的核心问题
输出层要解决的核心问题是:模型给出的原始输出,往往不能直接用,怎么把它变成能用的东西。
模型的原始输出有几个常见问题:格式不稳定、可能包含多余内容、可能有事实错误、可能不符合业务规则。输出层的工作就是把这些原始输出加工成符合要求的最终结果。
3.2 格式解析与校验
最常见也最基础的输出处理就是格式解析。你让模型输出JSON,它可能给你带一堆解释文字;你让它输出列表,它可能给你写成段落。
处理方式通常是:先用提示词约束格式,然后在输出侧做解析和校验。如果解析失败,就触发重试或者修复逻辑。
我自己的做法是:永远不要假设模型会严格按格式输出。即使提示词写得很清楚,也要在输出侧做好兜底。解析失败时的处理策略,比解析本身更重要。
一个实用的技巧是:让模型把结构化内容放在特定的标记之间,比如用三个反引号包起来。这样解析的时候更容易定位。
3.3 结果筛选与重排序
有时候模型会一次生成多个候选,你需要从中选最好的。这就是结果筛选。
筛选的方式有很多:可以用规则筛,可以用另一个模型来打分,也可以让模型自己评估。我常用的是“生成多个加模型自评”的方式:先让模型生成几个不同版本,再让它自己选一个最好的,或者给出排序。
这种方式在创意类任务上效果不错,因为多样性本身就是价值。但在事实类任务上要小心,因为模型的自评不一定可靠。
3.4 后处理与业务规则校验
输出层的最后一环是后处理。这一步往往和具体业务强相关。
比如:
- 敏感词过滤
- 数据格式转换
- 业务规则校验(比如金额不能为负、日期不能早于今天)
- 与外部系统对接
这一步没什么花哨的,但非常重要。我见过太多项目,模型效果很好,但因为没有做好后处理,上线后各种问题。
一个原则:模型负责生成,规则负责兜底。不要把业务规则的执行完全交给模型,该用代码校验的,就用代码校验。
3.5 输出层的进阶玩法
除了基础处理,输出层还有一些进阶玩法:
- 多轮迭代:拿到输出后,再喂回模型让它改进。这在写作类任务上很有效。
- 交叉验证:用不同的提示词或不同的模型生成结果,然后对比。差异大的地方往往就是不确定的地方。
- 结构化抽取:把模型的自由文本输出,抽取成结构化数据,便于后续处理。
这些玩法的共同点是:它们都在模型输出之后做文章,不改变模型本身。
4. 三层框架的实战应用
4.1 用框架拆解常见AI方案
我们拿几个常见方案来练手。
智能体(Agent):拆开看,输入侧它动态决定每一步喂什么(根据上一步结果),输出侧它解析模型的决策并执行动作。所以智能体是输入和输出都改,而且改得很深。
思维链:纯输入侧改动。让模型在输入里看到“请一步步思考”的引导。
工具调用:输入侧告诉模型有哪些工具可用,输出侧解析模型想调用哪个工具,执行后再把结果喂回去。也是两端都改。
记忆机制:输入侧把历史信息存起来,需要时检索出来拼进去。本质是上下文管理的一种。
你会发现,用这个框架一套,所有东西的定位都清清楚楚。
4.2 一个完整的落地案例拆解
假设我们要做一个“合同条款问答”的系统。用三层框架来设计:
模型层:选一个中等规模的模型,兼顾效果和成本。合同问答不需要太强的创意能力,但需要较好的理解和抽取能力。
输入层:
- 把合同文档做切片,按条款切
- 用户提问时,检索相关条款
- 把检索到的条款和问题一起拼成提示词
- 提示词里明确要求:只根据提供的条款回答,不要自己发挥
输出层:
- 解析模型输出,提取答案
- 校验答案是否引用了原文
- 如果模型说“不知道”,走兜底流程
- 记录问答日志,用于后续优化
这个设计里,模型层几乎没动,所有工作都在输入和输出两端。这就是大多数AI应用的真实状态。
4.3 常见误区与避坑指南
误区一:一上来就想着换模型。大多数时候,问题不在模型,在输入和输出。先把这两端做好,再考虑换模型。
误区二:输入塞得越多越好。无关信息是噪音,会干扰模型。精准比海量重要。
误区三:输出直接用。模型的原始输出几乎不可能直接满足业务要求,输出处理是必须的。
误区四:忽略成本。输入越长,成本越高。上下文管理不只是效果问题,也是成本问题。
误区五:不做评估。没有评估,你就不知道改动到底有没有用。建立一套简单的评估机制,比什么都重要。
5. 常见问题与排查技巧实录
5.1 输出不稳定怎么办
这是最常见的问题。同一个输入,模型有时候输出好,有时候输出差。
排查思路:
- 先看提示词是不是有歧义。有歧义的地方,模型就会随机发挥。
- 看温度参数是不是太高。需要稳定输出的场景,温度调低。
- 看输入是不是有变化。如果输入本身不稳定,输出自然不稳定。
- 考虑加示例。示例能显著提升输出的稳定性。
我的经验是:稳定性问题,八成出在输入侧。把输入约束好,输出自然就稳了。
5.2 模型不按格式输出怎么办
这也是高频问题。你要求JSON,它给你加解释;你要求分点,它给你写段落。
解决方式:
- 提示词里把格式要求写得更明确,最好给个示例
- 用标记把结构化内容包起来
- 输出侧做解析,解析失败就重试
- 重试时把失败原因也告诉模型
一个实用技巧:让模型输出前先说“好的,我将按要求输出”,然后紧接着输出结构化内容。这样解析的时候更容易定位。
5.3 检索增强效果不好怎么办
RAG效果不好,通常有几个原因:
| 问题现象 | 可能原因 | 排查方向 |
|---|---|---|
| 答非所问 | 检索不准 | 检查切片和检索策略 |
| 答案不完整 | 切片太碎 | 调整切片粒度 |
| 答案有错 | 检索到错误内容 | 加重排序,提高检索精度 |
| 模型忽略检索内容 | 提示词没强调 | 在提示词里明确要求基于检索内容回答 |
我踩过最大的坑是切片太碎,导致检索出来的片段缺乏上下文,模型看不懂。后来改成按语义单元切,效果好了很多。
5.4 成本和延迟怎么优化
成本和延迟主要来自输入长度和调用次数。
优化方向:
- 精简输入,去掉无关信息
- 缓存常用结果
- 简单任务用小模型,复杂任务用大模型
- 减少不必要的调用轮次
我自己的做法是:先保证效果,再优化成本。效果没达标之前,谈成本优化没意义。
6. 我个人的一些实操心得
6.1 输入侧的心得
输入侧我最大的心得是:把模型当成一个非常聪明但完全不了解你业务的新人。你得把背景、要求、示例都给到位,它才能做好。你省略的每一句话,它都可能理解偏。
另外,输入侧的工作是可以积累的。好的提示词、好的示例、好的检索策略,都是资产。我习惯把每次调优的输入方案都存下来,下次遇到类似任务直接复用。
6.2 输出侧的心得
输出侧我最大的心得是:永远要有兜底。模型可能输出任何东西,你的系统不能因为模型输出了意外内容就崩掉。解析失败要有降级方案,格式不对要有修复逻辑,内容不合规要有过滤机制。
还有一点:输出侧的处理逻辑,尽量用代码实现,不要用模型。代码是确定的,模型是不确定的。能用代码做的事,就别交给模型。
6.3 关于模型层的一点看法
模型层虽然我们能改的不多,但选型很重要。不同模型在不同任务上的表现差异很大。我的建议是:不要迷信某一个模型,多试几个,用你的实际任务去评估。有时候一个小模型在你的特定任务上,效果不比大模型差,但成本和速度好很多。
另外,模型在迭代,今天不行的模型明天可能就行了。保持关注,定期重新评估。
6.4 最后分享一个小技巧
如果你刚开始接触大模型应用,不知道从哪里入手,我建议你这样做:找一个你熟悉的简单任务,先用最简单的提示词跑一遍,看看效果。然后逐步在输入侧加约束、加示例,在输出侧加解析、加校验。每改一步,记录效果变化。
这个过程走一遍,你对三层框架的理解就会非常具体。比看任何文章都管用。