最近帮一个内容团队梳理技术方案,对方把预算几乎全部压在"调用大模型"这一项上,觉得只要选一个足够聪明的模型,内容生成就解决了。我在他们那份方案旁边补了整整三页注释:意图解析怎么做、生成结果谁来校验、用户反馈怎么回传、缓存和降级策略是什么。这其实就是AI原生应用和"AI套壳应用"之间的分界线。
今天我想把AI原生应用里的内容生成这条链路掰开揉碎讲一遍,从意图识别到内容交付,中间每一步都有坑,也有对应的工程解法。这篇文章适合正在设计内容生成类产品的人,也适合想知道自己手上那个"会写稿的App"到底怎么工作的朋友。
1. AI原生应用不是"给App加个AI按钮":先分清本质
先说一个我观察到的现象:很多人认为,产品里能调用大模型接口、能吐出一段文字,就等于"AI原生"了。这就像把发动机装进马车车厢,然后宣称自己造了汽车——外观变了,但底盘的逻辑还是马车的。技术的表象和系统的本质经常是两回事,内容生成尤其如此。
1.1 传统应用叠加AI为什么跑不通
传统内容产品的典型架构是:数据库存内容、业务逻辑管权限和流转、界面负责展示。AI加入之后,最常见做法是在界面上加一个"AI生成"按钮,用户点一下,系统调一次API,把模型返回的文本直接贴进编辑框。这种方案听着简单,跑起来全是问题。
第一是没有上下文记忆。用户上一轮说过偏好,下一轮生成时完全被忽略。前一条内容里明确了"不要用太官方的语气",下一条生成时系统照样端端正正地用公文腔。第二是没有质量判断。模型输出的内容是好是坏,系统完全不知道,只能靠用户自己修改。第三是没有意图澄清。用户说"写得再生动一点",系统不知道"生动"在这个场景里具体指什么,只能重新随机生成一遍。第四是没有反馈学习。同样的错误明天还会再犯,因为没有任何回路把"用户改了什么"带回到生成策略里。
传统应用把内容当作静止的资产,存起来、展示出来。AI原生应用则把内容当作一个持续计算的过程:输入意图,经过多步计算,产出内容,再根据反馈修正后续计算。这个区别决定了你根本没法用传统三层架构去封装AI能力,必须在系统里设计新的数据流和反馈回路,而不是在原有架构上插一根API管道。
1.2 AI原生应用真正改变的是什么
对照我过去做过的几个项目,AI原生应用有这么几个共性特征。它们看起来简单,但每一条都对应具体的工程投入,理解了它们,你才能理解后面每一条技术链路为什么存在。
第一,接受模糊输入。用户不会按照你设计的表单填写需求,他们会说"帮我写一段发布到小红书的文案,不要太正式,突出性价比"。系统要做的是从这句口语里解析出任务类型、平台、风格、价值点,而不是反过来要求用户把每个字段填完。
第二,把生成能力当作主干流程。一次完整的内容生成,在内部往往会被拆成多个节点:先理解需求、再检索素材、再列大纲、再分块生成、再合并润色、最后校验输出。模型调用只是其中一个节点,不是全部。
第三,显式设置能力边界。好的AI原生应用会明确告诉用户哪些能生成、哪些不能保证,比如"我无法保证引用来源真实"这类提示。这跟传统应用尽量让用户觉得"什么都能做"的思路完全不同。能力边界看似是一种让步,其实是信任来源。
第四,反馈闭环。每一次用户接受、修改或拒绝了生成内容,都应该成为系统的学习信号。没有这个闭环,系统上线三个月后就会因为业务数据和用户习惯的变化而逐渐失效。
2. 从"人话"到合格内容的生成链路:四个关键环节
把一次内容生成拆开来看,我习惯分成理解层、生成层、交付层和评估层。评估层会在后面专门讲反馈闭环,这里先把前三层串起来说清楚。
2.1 理解层:把用户表达变成结构化任务
用户说"帮我写一段产品介绍,要活泼一点,面向年轻用户",这句话里其实藏着四个信息维度:内容类型是产品介绍,语气风格是活泼,目标受众是年轻用户,隐含约束是篇幅有限、不能太官方。如果系统直接把这句话原样丢给模型,结果好坏全看运气。
我常用的做法是设计一个"任务规范"模板。模板里包含四块内容:一是明确任务定义,用一句话说明本次生成的目标;二是给定输入schema,列出可以使用的字段,比如主题、目标受众、风格、字数范围、平台渠道;三是给定输出schema,规定模型必须返回哪些字段,例如"概述""分段落""推荐标签";四是附带正反示例,至少两组,让模型知道"合格输出"和"不合格输出"分别长什么样。
然后让模型做结构化输出。现在主流的做法是让模型直接输出JSON,再在代码里做schema校验,校验不通过就重新生成,最多重试两次,再不行就触发兜底流程。对于专业领域,还要配合知识库检索,也就是业界常说的RAG模式,把检索到的相关片段拼进上下文,让模型基于事实生成,而不是纯粹凭印象发挥。
这一步经常被低估,但它决定了后面的生成质量上限。你在理解层漏掉一个约束,生成层再怎么调提示词也补不回来,这是我反复踩过坑之后才明白的。
2.2 生成层:多模型协作与流程编排
对于短内容,一次调用确实够用。但一旦要生成几千字的长文,或者包含多个环节的脚本、方案、报告,就必须做流程编排。编排不是花架子,它带来的是实实在在的三个好处。
一个典型的工作流长这样:根据主题生成大纲,等用户确认大纲之后,再按大纲逐段生成,最后统一润色、加小标题、生成摘要。拆开的第一个好处是可干预:用户只看大纲就能纠正方向,不用等到全文生成完才发现跑题。第二个好处是可校验:每一段都能单独检测是否合格,而不是最后整篇返工。第三个好处是可复用:大纲、开场、结尾这些中间产物可以缓存下来,下次生成类似内容时直接用,省掉重复计算。
在工作流里,不同节点可以分配给不同模型。我的经验是:草稿、摘要、短文案用速度快的模型;长文润色、复杂推理用效果更强的模型。这种异构编排在成本上的优势非常明显,后面算账的时候你就知道了。系统层面要定义好每个节点的输入输出契约,支持重试和降级。比如某个节点失败一次,可以先换一种提示词结构重试;连续失败两次,就跳到人工处理队列,不要让用户干等。
2.3 交付层:校验、格式化与渠道适配
生成层的输出不能直接面向用户。我们至少要做三件事:硬校验、软评估、渲染适配。
硬校验是指JSON字段是否完整、长度是否在约定范围内、有没有禁用的敏感词、引用的来源是否真实存在。软评估是指让模型做一次反思式回顾,评价"这条内容是否满足用户指令中的风格要求、是否与已确定信息冲突"。渲染适配则是把同一个结构化内容对象渲染成不同渠道版本,给公众号的版本要有小标题和段落分隔,给短视频的版本要重写成口播稿,给邮件的版本要补上称呼和落款。
这一步里最容易翻车的是格式错误。我见过一个项目,让模型生成带封面图的卡片文案,模型在JSON里写了一个不存在的图片链接,系统没有校验直接上线,用户点开卡片看到的是破图。从那之后我坚持一条铁律:凡是模型生成的内容,必须经过schema校验和取值合法性校验,宁可多渲染一步,也不能信任模型的格式声明。
3. 同样一个模型,为什么你做出来是玩具,别人做出来是产品
这是很多团队最困惑的问题。明明用的是同一个基础模型,别人家的生成结果就是稳定、可用、有风格,自己这边却总是时好时坏。答案不在模型本身,而在于模型周边的那套工程体系。
3.1 提示词工程:一套可管理的约束体系
提示词不是"写一段好听的话"就完了。我把它拆成五层来管理:角色定义,告诉模型它的身份和输出边界;任务描述,说明要完成什么、不需要做什么;输入结构,规定用户数据的放法;输出结构,约定返回内容的格式;示例库,提供正例和反例。
更重要的是,提示词必须像代码一样管理。要有版本、要有评审、要能回滚。我团队里有一个提示词文件目录,每个线上模板都有提交记录和负责人,改动之前必须跑一遍评测集,确认没有把质量改坏才能上线。没有版本管理的提示词,本质上是碰运气开发,今天调好了,明天可能因为一句措辞变动就全乱了。
还有采样参数的问题。温度高于0.7适合创意写作、头脑风暴,低于0.3适合抽取事实、结构化输出。很多人一套参数跑到底,当然会觉得效果飘忽不定。另外,最大生成长度一定得设置,否则模型会在你要求的结尾之后继续"发挥",白白浪费token还破坏内容结构。
3.2 硬校验与软质量:双保险机制
内容质量不是一个笼统的概念,而是多个维度的综合结果。我通常用一张表把它拆开来看:
| 维度 | 要解决的问题 | 我的校验方式 |
|---|---|---|
| 完整性 | 内容是否覆盖用户要求的要点 | 规则检查字段齐全 + 模型对比要点清单 |
| 一致性 | 正文是否与开头结论矛盾 | 模型自评 + 逻辑规则 |
| 安全性 | 是否有敏感内容、诱导性表述 | 敏感词库 + 分类模型 |
| 事实性 | 数据、引用、来源是否可验证 | 来源白名单 + 无法确认时明确提示 |
硬校验负责不可能让步的底线。举个例子,如果产品面向合规敏感场景,生成的任何建议都必须附带"建议咨询专业人士"的提示,这是底线,不能被模型的一次随机发挥绕过去。软评估负责"读起来是否对味"这种偏主观的判断。比如风格是否足够活泼,没有绝对标准,可以让模型输出一个1到10分的自评分,低于阈值就重新生成。
我强烈建议不要在软评估上迷信单一模型。自评模型常常对自身输出更宽容,最好用另一个独立模型来打分,或者用规则抽取一些客观特征来辅助,比如句子长度方差、口语词频、段落数。把主观判断拆成客观特征,才能让质量体系可度量、可回归。
3.3 反馈闭环:让系统越用越顺
系统上线后,要把用户行为数据接回来。用户对生成结果做了什么?直接采用、部分修改、放弃、重新生成,这四类行为就是质量判断的一手信号。
有了这些数据,可以做三件事。第一,定期抽样本做人工标注,找出"用户改了哪里、为什么改"的共性,形成失败模式清单。第二,用失败样本改进提示词或微调模型。微调不是每次都需要,但收集500到1000条高质量的偏好数据之后,效果提升会很明显。第三,把高频失败模式做成前置规则。比如发现用户经常把"生成内容太冗长"改成"更简短",就直接在理解层给模型加一个"每段不超过两句话"的硬约束。
没有这个闭环,系统就是一个不学习的静态工具。业务数据在变,用户习惯在变,热点话题在变,呆在原地就等于倒退。
4. 成本、延迟与规模化:内容生成系统的三道坎
原理讲完了,真正的筛选才开始。一个内容生成系统能不能从Demo走向生产环境,关键看它能否同时迈过成本、延迟和规模化这三道坎。
4.1 先算一笔账:钱花在哪里
一个内容生成请求的钱,不只是"最后一次调用模型"的钱,而是整条链路里所有token消耗的总和。假设一次典型的写稿请求包含:理解层一次调用,输入300 token、输出150 token;大纲生成一次调用,输入600 token、输出200 token;分块生成三次调用,每次输入800 token、输出400 token;润色一次调用,输入700 token、输出500 token。加起来输入约3600 token,输出约2050 token,总共约5650 token。
如果采用某商用接口并按常见计费单位估算,一条内容生成成本可能在几分钱到几毛钱之间。听起来不贵,但如果平台一天生成几十万条内容,成本就变成了每天数万元级别。所以成本优化从来不是小数目的事,必须在系统设计一开始就纳入考量。
三个最有效的省钱手段。第一是压缩上下文,只塞必要知识片段,而不是把整个知识库都放进去。做一个检索模块,把检索到的Top3片段拼接为上下文,效果比硬塞全部资料好得多。第二是用小模型做简单节点,摘要、关键词抽取这类任务不需要大模型,用轻量模型就能达标。第三是设置输出长度上限,输出token常常被低估,一个max_tokens参数能避免模型跑偏喷水。
4.2 缓存、队列与自适应降级
内容生成的重复率比想象中高。在工作日节奏下,用户会反复要求"写周报""写会议纪要""写同类型文案"。语义缓存的价值就在这里:把用户输入向量化,与历史输入做相似度匹配,命中就直接返回历史结果,完全不调用模型。在重复性强的场景下,命中率带来的成本节省非常可观。
还有一部分内容是非实时的,比如每日自动生成的资讯摘要、批量生成的历史内容补全。这类请求放进任务队列,安排在低峰期运行。队列还有一个额外好处:当模型服务不稳定时,队列可以把请求缓冲住,等服务恢复后再处理,而不是在用户端直接报错。
自适应降级是更进一步的策略:根据模型服务的实时响应时间和错误率,动态决定这次请求由哪个模型、以什么复杂度来执行。服务稳定时走精确路径,不稳定时切换到精简路径。这套机制让系统在高负载下也能保住基本可用性,而不是整个产品一起雪崩。
4.3 离线指标与在线观测
质量是否真的OK,不能靠感觉。我在项目里建了两套观测体系。
离线指标是在固定的评测集上跑,看完整性、一致性、安全性等自动评分,偶尔抽一批做人工评分。离线指标的价值在于回归测试,提示词改了会不会让质量变差,一跑便知。在线指标是看用户的真实行为,核心包括采纳率、放弃率、平均修改字数、再次生成次数。在线指标最真实,因为它反映了真人的真实判断。
另外要有"生成质量看板":每分钟请求数、平均延迟、平均成本、生成成功率、自评分数分布。出了线上问题,靠这个看板定位是哪一层出了问题。
我踩过一个坑:上线初期只盯着离线指标,觉得质量很好,结果线上采纳率一直很低。后来发现是因为评测集里全是理想输入,真实用户输入又短又含混,理解层解析失败率很高。从那以后,我坚持每隔一段时间就抽取线上真实输入回灌离线评测集,让评测集保持"现实感"。
5. 一次真实的"短视频脚本生成模块"复盘
分享一个我实际做过的项目,给某内容平台做的短视频脚本生成模块。想通过这个例子说明上面这些原则到底怎么落地,以及落地过程中会遇到什么意外。
5.1 场景定义:先想清楚不做什么
项目启动时,业务方给的需求是"帮作者写短视频脚本,要写出爆款"。我做的第一件事不是选模型,而是缩小边界。只做脚本生成,不做发布、不做数据预测;只服务周更型作者,不承诺"保证爆款";输入固定在五个字段:主题、目标观众、时长、风格倾向、拍摄场景关键词;输出固定在五个部分:开场钩子、正文主线、结尾号召、拍摄提示、标题建议。
边界清晰之后,很多问题就简单了。比如"要不要根据热点自动改脚本"这种需求,因为不在边界内,可以果断拒绝。同时我们收集了人工整理的一百条优秀脚本做结构分析,总结出"开场钩子要在前三秒内建立冲突或疑问"这类行业规律。这些规律后来写进了提示词和校验规则里,比任何泛泛的"生成脚本"指令都管用。
5.2 原型到上线的四个关键改造
原型阶段,我们直接让模型按自由文本输出整段脚本,效果时好时坏。改成生产系统的过程中,做了四个关键改造。
第一,输出结构规范化。规定模型必须按JSON返回五个字段,任何字段缺失就判定失败。第二,增加大纲确认环节。先生成脚本大纲,用户认可后才生成完整脚本。上线后"用户中途改方向"的需求大幅减少,用户体验反而更好。第三,拍摄提示可执行化。要求每一条拍摄提示都能对应到具体镜头动作,比如"镜头将从作者正面切到产品特写",而不是"拍一些好看的镜头"。第四,两阶段评审。规则评审检查字段完整性和篇幅限制,模型自评检查风格和冲突,两个阶段都通过才允许输出。
改造的工程结果是:生成一次脚本的模型调用次数从1次变成2到4次,成本上升了一些,但采纳率提升非常明显,整体收益远大于成本。
5.3 上线后最容易翻车的三个地方
项目上线后,我们先后处理了三个之前没预料到的问题。
第一个是超长输入。作者会直接复制一篇长文让"改成脚本",输入长度超出模型窗口。我们加了前置处理逻辑:超长文本先做章节摘要,再把摘要拼进上下文。问题解决后,这类请求的生成成功率从70%升到95%以上。
第二个是版权风险。有的作者上传的内容可能是搬运素材,生成的脚本会继承原作的表达。我们在提示词里加入"仅参考事实,不得复制原文表达"的要求,并在规则层对输出做相似度抽检,超过阈值就拒绝交付并提醒作者。
第三个是内容同质化。同一个热门主题,十个作者生成的脚本结构完全一样,平台内容越来越像。我们用随机多样性参数解决了结构固定下的措辞多样性,每次生成时会围绕同样的剧情逻辑换用不同的案例、说法和节奏。这三个问题现在回头看,每一个都值得单独写一篇排查记录,这里先留个引子。
在这个项目里我最大的体会是:AI原生应用的内容生成,难的不是"让模型说出话",而是"让系统稳定地说出对的话"。模型是引擎,系统才是车。把理解、编排、校验、反馈、成本这五件事做扎实,一个内容生成产品才算真正立住了。