做营销广告的人应该都有同感:渠道侧对创意素材的消耗速度,早就跑赢了创意团队的生产速度。在我们尝试把大模型用在货拉拉的营销广告场景之前,这个问题在公司内部尤其刺眼——货主端和司机端是两套完全不同的用户体系,货运、搬家、拉货这些细分场景又各有各的表达逻辑,同一个卖点换个城市、换个品类,文案基本就得重写。人工不是写不出来,而是写不出那么多、那么快,更别说每一条都得过合规、不重复、还能在广告平台跑得动量。
这篇复盘记录了我们从场景梳理、技术选型,到数据生产、模型微调、线上A/B测试的完整路径,也把踩过的坑原原本本列了出来。适合正在做营销素材自动化、广告内容生成,或者想在大模型落地上找一个高价值切入口的团队参考。没有太多玄乎的架构,都是实打实跑过的东西。
1. 货拉拉的营销广告,究竟卡在哪一环
1.1 两端用户、三种触点,要求根本不一样
货拉拉的营销对象天然分成两块:一边是货主/用户,需要搬家、拉货、同城配送,决策偏理性,关心价格、时效、车型靠不靠谱;另一边是司机,要靠平台接单赚钱,关心的核心是单量、收入、提现规则、油卡这类实用权益。这两拨人的语言体系完全不同,给用户写"一键搬家,省心省力"的文案,放到司机群体里就完全失灵;给司机写"多接单多赚钱"的话术,对用户又毫无吸引力。
触点也不一样。应用商店、信息流广告这种投放素材,要求前3个字就能抓住眼球;短信和push这种触达场景,对字数、语气、紧迫感的要求又不同;还有线下车贴、电梯物料这类偏品牌向的内容,需要更稳重、更长期的表达。同一个活动,三套触点、两拨人群,排列组合下来就是六种基础模板,再叠加城市、品类、时段差异,素材矩阵直接拉到几十上百个格子。
1.2 素材衰退和产能瓶颈是两道死题
做过投放的人都知道"素材衰退"这个词。一条创意上线后,曝光量一上来,点击率会肉眼可见地往下掉,平台给的推荐流量也会收缩。要维持跑量,必须持续补充新创意。更现实的是,信息流渠道上传素材时往往要求一次提交多组标题和封面做组合测试,大促节点全国几十个业务线同时上活动,一个运营手里可能同时压着十几套素材需求。
我们当时算过一笔账:创意同学全职投入,一个人一个工作日稳定产出大约十到二十条文案已经是极限。可大促期间单条业务线一天就需要几十条候选,整个盘子翻了十倍不止。靠现有团队加班加点只能保重点业务,其余活动全部用历史模板顶上,效果自然好不了。
1.3 之前的自动化方案为什么不够用
其实早在大模型之前,我们也不是没想过自动化。规则模板、同义替换、关键词组合这些传统NLG手段都试过。核心问题在于:它们只能做"排列组合",不能理解卖点和人群之间的真实关系。比如"便宜"这个词,对价格敏感的用户是核心卖点,对注重时效的用户反而是次要信息;同一个意思在不同业务线里,表达强度、措辞分寸都不一样,规则很难穷举这些微妙差异。
更麻烦的是,规则模板生成的东西大家一眼就能看出"这是套路的"。用户对模板化文案的免疫力越来越强,点击率一路走低。我们需要的不是随机替换几个词,而是真正理解业务约束、重新组织语言的生成能力。这也就是为什么最终选择走向大模型这条路。
2. 场景选择逻辑:先给大模型划定边界,再谈应用
2.1 一张场景地图决定了先做什么
立项的时候,团队内部先做了一次完整的场景盘点,把所有营销广告环节里可能用到AI的位置都列了出来,再按业务价值、技术可行性、人工兜底成本、数据基础四个维度打分。当时列的候选场景大概有这些:
| 场景 | 业务价值 | AI适合度 | 需要人工兜底 | 我们的优先级 |
|---|---|---|---|---|
| 广告文案/标题生成 | 高 | 高 | 中 | 第一批落地 |
| 素材创意(图片/视频脚本) | 高 | 中 | 高 | 第二批探索 |
| 用户定向与出价建议 | 高 | 低 | 极高 | 暂缓,只做辅助洞察 |
| 投放复盘总结 | 中 | 高 | 低 | 第一批落地 |
| 营销客服答疑 | 中 | 高 | 中 | 并行试点 |
这个表的核心作用不是证明"大模型能干什么",而是反过来划清楚"哪些地方我们暂时不碰"。事实证明,这个边界划得越早,后面推进越顺。
2.2 为什么内容生产优先级最高
理由其实很朴素:内容生产是生成式任务,天然适合大模型发挥;而且生成结果要上线必须经过广告平台审核和运营确认,等于自带一个人工兜底环节。就算AI写出来不及格,损失的最大成本也不过是运营多改两稿,不会直接影响预算消耗和模型预测权。
另一个优势是反馈链路短。一条文案投下去,三天之内就能看到点击率、转化率的变化,效果好就纳入训练集、效果差就扔掉,迭代闭环特别清楚。相比之下,定向和出价这类决策任务,要看到结果往往需要完整的转化归因周期,中间变量又多,很难判断是模型的问题还是流量环境的问题。
2.3 决策类场景为什么先不做
定向、出价、预算分配这些环节,本质上是拿真金白银做决策,牵涉到一个责任边界问题:模型建议错了,谁来承担?这类场景对可解释性要求极高,业务同学如果不知道为什么系统给出某个出价,根本不敢采纳。大模型目前的输出机制基本是概率生成,即便让它输出理由,也可能是事后编造的解释,这对决策场景是致命的。
所以我们的策略是:大模型先做"参谋"不做"决策者"。投放复盘总结、人群洞察分析这类辅助工作可以先上,真正动预算的决策继续用原有机制,等模型能力和业务信任度都积累够了再谈下一步。
3. 底座、微调与上下文:广告文案生成的技术底座怎么搭
3.1 底座模型选择:能控、能训、能推理
底座选型我们主要看三个维度:数据安全可控性、中文表达能力和推理部署成本。货拉拉的用户数据和业务活动数据属于核心资产,营销素材又经常涉及价格、优惠、城市等敏感信息,直接调外部API在早期阶段不合适。因此我们把主力压在开源底座上,以7B到14B量级为主,中文能力经过内部测试确认达标后再进入流程;闭源API则保留了一套评测通道,用于验证效果天花板,但没有纳入正式生产链路。
7B到14B这个区间是我们权衡之后的选择。更小的模型在长文案和复杂指令上容易丢信息,更大的模型虽然效果更好,但推理成本和延迟在广告场景下不太划算。营销文案的单条生成不像实时对话那样追求毫秒级响应,但也扛不住一次生成几十秒。实测下来,量化后的7B-14B模型配合GPU推理服务,单条文案生成时间控制在秒级以内,成本完全在可接受范围。
3.2 微调路线:用几千条好文案教会模型"像人话"
底座模型直接用效果已经很不错,但离"能用"还差一段距离。通用模型写出来的文案总带着一股四平八稳的稿子味,缺乏广告该有的钩子感;而且对货拉拉的业务术语理解不深,比如"起步价""拼车""微面""中面"这些行业词,它经常用错。
我们走的路线是LoRA/QLoRA微调,没有做全参数微调。原因很简单:全参微调成本高、周期长,而且极容易让模型忘掉原有能力,后续想换底座模型重训一遍代价太大。LoRA相当于在底座模型旁边加了一条"业务知识旁路",训练参数量不到整体的百分之一,单卡就能跑,版本迭代也非常轻量。
数据准备是这里最花时间的环节。我们从历史投放数据里捞出了点击率表现好的文案,再叠加上运营和创意同学手工整理的高质量案例,清洗掉硬广痕迹太重、合规有问题的样本,最终凑出两万条左右的高质量指令数据。每一条都是JSONL格式:
{"instruction": "请为【深圳】搬家业务写5条信息流广告文案,目标用户是20-35岁上班族,核心卖点:价格透明、师傅准时、车辆充足。要求:每条不超过25字,突出省心。", "output": "深圳搬家不用愁,一口价透明无套路,准时上门,现在下单还能锁定今日师傅。"}训练参数我直接给一个可复现的参考值:LoRA rank设64,alpha设128,dropout设0.05,学习率2e-4,训练3个epoch。数据集里故意混入了一批被广告平台拒审的负样本,让模型学会避开"最高级""第一""保证"这类敏感词。训练框架用的开源工具,量化精度4bit,一张A100或者两张4090都能跑完。
3.3 上下文工程:活动规则和用户画像该走哪条路
模型微调好之后,还有一个关键问题:怎么把实时变化的业务信息传进去。活动规则、优惠金额、城市范围这些信息每周都在变,不可能每次都微调模型。我们用了RAG加结构化注入的混合方案。
具体来说,活动规则、商品库存、运力信息这类事实性内容,会先经过检索,把相关文档切片后拼接到上下文里,模型根据检索结果生成,从源头避免瞎编。但这里有个很容易踩的坑:广告文案生成不能做成"纯RAG"模式。创意写作是需要发散的,如果检索结果把模型框得太死,生成出来的候选全是同一个模板的微调,多样性会差到没法用。
我们的做法是分层:事实性内容用检索和结构化字段严格约束,比如优惠金额、活动时间、适用城市,直接以键值对的形式注入,模型不允许自由发挥;但表达形式、切入角度、语气风格这些创意空间,完全交给模型自由探索。这样既保证了合规准确,又留足了创意空间,属于提示词工程里最值得琢磨的部分。
4. 从需求到上线:一条广告文案的完整生产链路
4.1 运营端的入口长什么样
整套系统落在内部营销中台上,运营同学不需要懂任何模型知识。入口是一个生成表单,字段包括:业务线、活动名称、目标城市、目标人群、核心卖点、字数限制、语气风格、需要生成的条数。系统拿到这些输入之后,会自动完成用户画像特征的拼接、活动规则的检索,以及最新合规词表的加载,最后组装成prompt发送给推理服务。
这里特别强调一下画像特征的接入。广告文案不能脱离人群空谈,同一个搬家卖点,对独居租房的年轻人要强调"省心不用自己搬",对家庭用户要强调"大件也能搬、价格透明",对个体商户要强调"速度快不耽误营业"。这些画像判断不是让模型自己猜的,而是由系统从用户分群数据里拉取,作为结构化字段直接写进prompt。
4.2 Prompt设计:把约束全部显式化
Prompt设计是整个链路里迭代最多次的部分。早期版本的prompt只有一个笼统要求"写得好一点",结果模型输出的东西五花八门,有的像新闻通稿,有的像小说开头,完全没法用。后来我们把所有约束全部显式化,稳定成下面这种结构:
你是货拉拉资深营销文案专家,熟悉同城货运、搬家、拉货等业务场景。 【活动信息】 活动名称:新用户搬家立减券 适用城市:深圳、广州 优惠内容:首单立减30元,需绑定支付方式 活动时间:6月1日-6月30日 【目标人群】 22-30岁,一线城市租房的上班族,搬家频率较高,注重价格透明和省心服务 【核心卖点】 1. 价格透明,无隐形收费 2. 师傅准时,上门时间可预约 3. 车辆充足,小型搬家当天约当天到 【生成要求】 1. 生成5条信息流广告文案,每条不超过25个字 2. 前8个字必须包含吸引点,可以使用问句、数字、对比 3. 禁止出现"最""第一""保证"等极限词 4. 禁止编造活动信息,优惠金额只能使用【活动信息】中的内容 5. 每条文案风格可以有差异:直接利益型、场景共鸣型、效率优先型各占一定比例 6. 直接输出文案列表,不要解释过程 【输出格式】 [ "文案1", "文案2", "文案3" ]这个结构看起来不复杂,但每一行都有讲究。"禁止编造活动信息"配合结构化字段,是为了治幻觉;"风格可以有差异"是为了解决多样性;"输出JSON列表"是为了下游可以直接解析,不需要再让运营手工整理。prompt里所有规范都必须可被程序校验,否则就相当于没写。
4.3 生成采样、后处理与人工抽检
推理阶段我们会同时发起多个并行请求,每个请求用不同的采样参数,让模型在同一个prompt下产出多组候选。temperature一般设置在0.85到0.95之间,top_p设为0.9,这样既不会太保守导致所有候选几乎一样,也不会太发散导致文案偏离业务主题。一次生成大概产出八到十条候选,进入后处理管道。
后处理是整个链路里最容易被低估的部分。流程大致是:先做长度校验和格式检查,不符合要求的直接丢弃;再做违禁词和敏感词扫描,除了通用广告法词表,还接了货拉拉业务侧的定制词表;最后用本地embedding模型计算候选之间的语义相似度,相似度过高的只保留一条,防止运营拿到视觉上不同、语义上一模一样的"假多样性"。经过这三道关卡,最后剩下的候选才有资格推给运营人工确认。
人工抽检的比例按风险动态调整。普通文案抽检三成,涉及价格、优惠、活动时间等敏感信息的必须全量确认。这个环节我们没有尝试完全去掉人工,因为广告合规的责任最终得有人来扛,模型只能把需要人看的东西尽量压缩到最精炼的层面。
4.4 线上数据回流形成闭环
生产链路跑通之后,最重要的一件事是把数据接回来。凡是AI生成的素材,上线时都会打上特殊标记,系统每天自动拉取点击率、转化率、完单率数据,和同计划下的人工素材做对比。每周汇总一次,表现好的AI素材会被重新清洗、标注,进入下一轮微调数据集;表现差的则拆解原因,看是文案问题还是产品匹配问题。
这个闭环跑起来之后,模型的能力不是靠一次微调固定的,而是随着业务数据不断进化。我们现在大概每个月做一次增量微调,每次只加入近一个月的新增优质样本,训练量不大,但效果提升非常稳定。
5. 效果评估与回流:点击率不是唯一KPI
5.1 离线先过三关:相关性、合规、多样性
模型上线之前,先得过离线评测这一关。当时我们内部建了一个评测集,从真实业务中抽了几百条任务,覆盖不同业务线、不同人群、不同字数要求。评测维度定成三观:相关性——文案有没有围绕给定的卖点;合规性——有没有敏感词、编造信息、极限词;多样性——同一批候选之间有没有重复套路。
过程中我们试过很多自动指标,比如BLEU、ROUGE,但很快发现它们不适合创意文案场景。文案只要换一个表达方式,字面重叠度就很低,但语义完全没变;反过来说,有些候选跟参考文案字面很像,实际上却是个不合规的低质改写。所以最终的离线评测以人工打分为主,自动指标只做初筛。内部标注员按1到5分打,四个维度全部达到4分以上才允许进在线测试。
5.2 在线指标:短期点击和长期转化都不能丢
在线A/B测试我们搭在广告投放平台上,同一个业务线、同一批用户,随机分配AI素材和老素材,观察同一个投放周期内的表现。核心指标包括点击率、次留转化率、下单转化率、完单率,以及一个容易被忽视的负向指标:投诉率和退订率。
货运和搬家都是低频消费场景,用户可能这一次看完不点,但两周后要搬家时又搜到同一个品牌。如果只看点击率做即时决策,很容易把一些品牌调性强、但短期点击一般的文案误杀。所以我们给不同业务线设置了不同的评估周期,短决策链路的业务可以只看三天数据,长决策链路至少观察两周。
从实际结果看,不同业务线的提升幅度差异很大。有一类业务线效果特别明显:决策周期短、用户价格敏感、文案竞争激烈——AI生成的素材在点击率上相对人工素材有稳定提升;但偏品牌向、调性向的业务线,提升就没有那么显著,甚至有的打平。这个结果本身也很有价值,它告诉我们大模型更适合解决"量"和"快"的问题,短期内解决不了"质"的上限。
5.3 产能效率是另一个隐藏KPI
除了投放效果,产能提升是这套系统最直接的收益。原来创意同学写一条合格文案,从构思到过审平均要十几分钟;现在AI先生成候选,运营做一些微调就能提交,单条素材的制作时间压缩到原来的三分之一以下。更关键的是素材采纳率——运营真正愿意拿去投放的比例,从最初的百分之三十几提升到接近六成,意味着系统的产出越来越贴近真实需求。
我们内部还有个有意思的指标叫"有效刺激率":AI生成的高分候选里,有多少比例是运营自己完全没想到的角度。这个指标不需要很大,哪怕十个候选里有一个角度让人眼前一亮,这套系统的价值就已经回本了。因为创意行业最贵的就是"开脑洞",AI可以把这个成本压到接近于零。
6. 实测踩坑清单:幻觉、同质化、成本失控
6.1 幻觉问题:模型真的会编造优惠
上线初期遇到的最大问题就是幻觉。模型在生成文案时,经常把优惠金额写错,明明活动里是"满100减20",它写出来变成"首单立减50";更有甚者,直接编出一个活动完全没提过的权益,比如"赠送事故无忧险"。这种文案一旦投出去,用户进来发现不是这么回事,投诉是小事,品牌信誉损失才是大事。
根因在于底座模型在预训练阶段见过大量电商促销语料,形成了"促销文案就该有优惠信息"的统计惯性,只要上下文里出现价格、立减这类词,它就会本能地往里填数字。只靠prompt里写"不要编造"根本拦不住。
最后的解决方案是双层保险:第一层,所有涉钱、涉权益、涉时间的字段一律不允许模型自由生成,而是由系统用占位符比如【优惠金额】代替,生成完成后统一替换成活动配置里的真实值;第二层,加一道强校验扫描,如果最终文案里出现了不在白名单里的金额数字,整条直接打回重写。这套机制跑通之后,因为幻觉导致的合规事故基本清零了。
6.2 同质化问题:文案越来越"AI腔"
另一个高频问题是同质化。微调之后,模型生成文案的质量是提升了,但运营反馈"看起来十条里有八条味道一样"。我们排查了一圈,问题出在三个地方:训练集里的优质文案本身就集中在少数几种写法上,模型学偏了;推理时temperature设置偏低,多样性不够;后处理的语义去重阈值设得太高,把看起来不同、语义近似的候选全留下了。
解法也是三管齐下:训练集里增加了风格维度的标注,强制不同风格的样本在数据里的配比均衡;推理时并行请求的不同节点使用差异化采样参数,一部分偏保守、一部分偏发散;语义去重的阈值从0.85降到0.95左右,宁可多留一些语义相近但文字差异明显的候选,让运营做最后判断。调整完之后,运营反馈"能选出不同感觉的素材了"。
6.3 成本与延迟失控风险
成本控制是另一个必须提前算清楚的账。初期我们只用了7B模型直接生成,高峰期几十路并发同时打过来,推理服务CPU和GPU都顶不住,延迟直接拉到十几秒,运营在页面干等。后来做了几件事:模型量化从FP16降到INT4,单卡并发能力提升明显;高频类似的请求加了缓存,同一个业务线同一批画像特征,短时间内重复请求直接命中缓存;还把生成任务拆成异步队列,运营提交后先去干别的活,结果好了再通知。
成本这块我们没有只算推理成本,而是算了总账:模型训练花费、推理资源、运营人工复核成本,对比原来纯人工创作的人力投入。结论是就算把推理资源放宽到比较充裕的规格,整套系统的总成本也远低于多招几名创意同学,而且产能天花板完全不在一个量级。
6.4 合规与平台规则的隐形成本
广告行业有个绕不开的坎:各广告平台对文案的审核规则一直在变,而且很多规定不在公开文档里,只能靠试错。大模型生成速度快,意味着踩雷的速度也快。我们建了一个"拒审Case库",凡是广告平台驳回的素材,都会被记录下来,分析是哪句话触发了审核,再抽象成规则加入本地词表和prompt约束。
这类经验很难从技术文档里学到,只能是踩一次坑填一个坑。比如有些业务词在不同平台有不同含义,同一个词在A平台没问题,在B平台可能被判断成诱导点击。这类词库我们到现在还在维护,已经成为系统非常重要的一部分资产。
6.5 冷启动阶段的评测数据从哪来
最后一个坑是冷启动。新业务线第一次接入系统时,历史优质文案往往很少,模型没有足够样本学,生成质量会明显低于成熟业务线。我们的做法是用成熟业务线训练好的模型作为起点,先在新业务线上跑一段时间,把运营手动修改过的文案收集起来,攒够几百条之后再单独做一个小规模LoRA适配。
如果连类似业务线的历史数据都没有,还有一个备选方案:把生成任务从"直接写文案"降级成"改写和扩写",让运营先提供少量参考素材,模型基于这些素材做变体扩充。改写任务比从零生成容易的多,对模型的要求更低,客户运营也更容易接受,等效果验证后再逐步放开到完全生成。
最后说一点个人的体会。做这个项目最大的收获不是把CTR提升了多少,而是想明白了一件事:大模型在业务里的价值边界,从来不是模型本身决定的,而是由数据闭环、人工兜底、合规机制共同决定的。技术底座半年就会换代,但"先划边界、再做闭环、最后扩张"这个节奏,放在任何一个AI落地场景里都通用。
我们已经在两个方向上继续往下走了:一是多模态素材生成,把文案和配图、封面联动起来;二是投放复盘的智能体化,让大模型从"写东西"进化到"分析和建议"。这两件事的共同前提,还是先把内容和数据的基础打牢。如果你也在做类似的事情,建议千万别一上来就追求端到端的全自动化,先把单点价值跑透,后面的事情会自然顺着长出来。