1. 从“人写广告”到“模型写广告”:货拉拉营销广告的智能化转轨
先交代一下背景。货拉拉的业务覆盖货运、同城配送、搬家、租买车等场景,营销广告体系天然带有“双边平台”属性:一边是司机侧,需要拉新、促活、唤醒沉默司机;一边是用户侧,要完成从“知道货拉拉”到“下单、复购、转介绍”的完整转化链。这两类人群的属性差异极大,一个司机和一个C端用户的关注点、语言习惯、决策动机几乎完全不在一个频道上。
传统广告投放的做法是运营和创意团队人工撰写文案、人工配置定向、人工盯报表,再靠经验调整预算和出价。问题很明显:人群包可能只有粗粒度的性别、地域、年龄,创意素材产出速度跟不上投放节奏,广告内容与用户当前需求错配——比如一个正在找搬家公司的人,看到的是“司机月入过万”的司机招募广告,跳转率自然难看。
大模型切入营销广告体系,逻辑其实很朴素:用模型去理解“用户是谁、在什么场景、有什么意图”,再自动产出“符合这个人的语境和决策阶段的内容”,最后在投放层面做实时调优。我在货拉拉实际参与的项目里,核心方向就三条线——意图理解、创意生成、投放优化。这篇博文不聊概念,只聊我们怎么落地、踩了哪些坑、哪些经验可以复用到别的公司。
2. 大模型选型与工程架构:模型不是越强越好,要分场景配
2.1 选型逻辑:先分场景,再谈模型大小
很多人一听到“营销广告用大模型”,第一反应是“上GPT-4级别的模型”。实际做下来,完全不是这么回事。营销广告场景有三个约束:调用成本、延迟、内容合规审核压力。我们用分层策略:
| 场景 | 模型级别 | 核心考量 |
|---|---|---|
| 用户意图理解(短文本分类) | 中等参数模型(如7B-14B级别)或微调后的精调模型 | 高频调用,延迟需控制在百毫秒级,成本敏感 |
| 广告文案生成(长文本) | 强生成能力模型(如70B级别或商用API) | 低频批量生成,质量优先,可接受秒级延迟 |
| 实时投放策略调整 | 小模型+规则引擎结合大模型在线打分 | 需要亚秒级响应,大模型只做关键决策点打分,不直接生成 |
我们最早犯过一个错误:想用一个14B模型同时承担意图分类和文案生成。结果意图分类的准确率不够,文案生成又显得“模板味”太重,两头都没讨好。后来拆成两个链路,效果立刻上来了。
注意:营销广告场景的模型选型没啥捷径,先把业务场景按“调用频次×延迟敏感度×质量要求”三个维度拉一个矩阵,再去匹配模型规模,顺序不能反。
2.2 工程架构:大模型不直接暴露在外层
在大模型和广告投放系统之间,我们加了一层“策略编排层”。原因很简单:广告系统是7×24小时实时在跑的业务,大模型一旦超时或者抽风,不能整个链路跟着一起挂。这层的三个职责:
- 流量路由:判断当前请求是否真的需要大模型介入。比如高活跃用户的广告内容刷新请求,不涉及新意图推断,可以直接走缓存,GLB层面直接返回历史最佳创意。
- 降级兜底:大模型服务超时或返回内容不合规时,回退到模板库和规则引擎的老路。我们定了一个硬性指标:大模型链路可用性必须达到99.95%以上,否则不上全量。
- 结果校验:大模型生成的文案必须过一层“合规+品牌一致性”校验,比如违禁词过滤、价格承诺的合规性检查、是否包含货拉拉品牌禁用语等,这一层是纯规则代码,很土但很管用。
我们的大模型服务本身部署在内部Kubernetes集群里,GPU节点分了两组:一组跑在线推理(意图理解),一组跑离线批量任务(创意生成和模型微调训练)。两组物理隔离,避免离线任务抢在线资源。
2.3 上下文工程:营销场景的Prompt设计比想象中难
营销广告的Prompt设计和写代码助手类的Prompt有很大不同。代码场景有明确的输入输出格式和验证标准,而广告文案的衡量标准是“点击率”“转化率”这种间接指标,没有标准答案。我们实践下来,一个比较靠谱的Prompt框架是:
角色设定:你是货拉拉平台的资深营销文案专家,深谙货运、搬家、同城配送场景的司机和用户心理。 任务背景:{用户分层标签} + {所处决策阶段} + {业务目标} 创作要求:输出3版不同风格的文案,分别侧重利益点直给型、情感共鸣型、行动紧迫型。 输出格式:每版文案前用一行说明风格侧重点和适用投放渠道(信息流/短信/公众号)。 合规约束:禁止出现绝对化用语,禁止承诺具体收入数字,价格类表述需引用后台实时价格接口,不写入静态文案。这套Prompt跑了一段时间,我们发现一个问题:模型理解“用户分层标签”的能力参差不齐。比如标签是“近30天未下单的搬家类用户”,模型有时候会写出“您很久没来了,我们好想您”——这种话说给用户听其实就是自嗨。后来我们开始做意图理解和用户画像的深度打通,Prompt里不再直接堆标签,而是让模型先基于标签生成一份简短的“用户画像推演”,再基于推演结果写文案。这个两步走的小改动,让文案的整体点击率提升了约15%。
3. 创意内容自动生成:从模板库到动态生成的质变
3.1 广告文案生成:先定“骨架”,再让模型填“血肉”
我们的广告文案体系早期就是一套模板库,几千条文案按业务线和场景打标,投放时匹配。模板库的问题很明显:用户疲劳度上升得快,同一条文案反复出现,点击率衰减很厉害。
大模型接入后,我们尝试过完全放开让模型自由创作,结果文案多样性有了,但质量标准失控——有些文案读起来很有创意,但完全不像是货拉拉该说出来的话。中期复盘之后,我们改成了“骨架+血肉”模式:
- 运营团队用规则定义“文案骨架”,比如“开头问题共鸣-中段场景代入-尾部行动号召”,或者“利益点前置-信任背书-限时暗示”;
- 大模型在骨架约束下生成文案内容,每条文案自动生成3-5个变体;
- 一个“创意打分模型”对这批文案做排序,估点击率,只有Top 1-2的进入投放池;
- 投放后实时监控数据,表现好的文案会被保留作为后续生成的风格参考(few-shot示例)。
这里要说个细节。第三步的“创意打分模型”,我们一开始直接用大模型打分,让模型评价“这条文案点击率会高吗”,成本高且不稳定。后来改成用一个轻量级的点击率预估模型(embedding+DIN结构的简化版本)来打分,大模型只负责生成候选,打分交给传统模型,整体成本和稳定性都好了很多。
3.2 多模态素材:海报配图和视频脚本的辅助生成
货拉拉的营销广告不止有文案,还有海报和信息流视频。这个方向的实践可能对做电商、本地生活的人有参考价值。
海报方面,我们做了一个“文案+底图分离”的流水线。大模型根据业务主题生成多条主文案,然后从版权图库里匹配背景图,再用规则引擎做文字排版位置校验。模型不直接生成图——受限于成本和质量,我们尝试过文生图模型直接出海报,但商品平台的海报往往需要体现真实车型、真实价格,生成的图会失真,而且审核那边过不了。所以目前的方案是“真实图库+模型文案+自动排版”,用AI的地方在于文案生成和主题分类的自动化。
视频脚本这块倒是很有价值。我们让大模型基于“活动信息+投放渠道时长要求+目标人群”,直接产出分镜头脚本,包括口播词、画面建议、字幕文案。这个脚本不需要100%可用,它更大的价值是帮编导团队把70%的框架搭好,人只需要改细节。一个编导原来一天能产出2-3条脚本,现在能到8-10条,这个效率提升是可量化的。
3.3 小程序弹窗和Push的实时内容配合
容易被忽略的一个场景是小程序弹窗和Push推送。这两类触点的文案有个特点——字符数限制严、意图性极强、和用户会话上下文关系紧密。用户上午刚查了“搬家小面”车型价格,下午收到推送如果还在说“新用户立减XX元”,转化一定差。
我们在这个场景做了一个实时文案拼接链路:用户触发行为事件后,意图理解模型实时输出当前用户的意图标签和决策阶段,再从一个“文案组件库”里动态拼装推送内容。这个组件库是预先生成的,每个组件由大模型离线生成并做过合规校验,在线阶段做的是组合而非生成,所以延迟完全可控。这套机制让Push的点击率比原来全人工配置提高了约22%,而且人工介入工作量下降了一大截。
4. 用户意图理解与精准匹配:广告投放的“芯片层”升级
4.1 从规则标签到模型推断:意图理解的范式切换
货拉拉营销体系里的用户意图是一个多层级结构,早期依赖用户的显式行为,比如搜索行为、浏览品类。但大量用户并不一定先搜索再下单,很多人是直接点开小程序里某个活动页或者通过老带新的链接进来。这种用户的前置意图是隐式的,规则系统只能打一个“未知”标签,投放就变得很盲目。
我们搭建了一个基于大模型的意图理解模块,输入特征包括:用户近30天的行为序列、当前会话的交互轨迹、设备信息、LBS商圈特征。输出是三层意图结构——实时意图(买车/租车/货运/搬家/同城配送)、决策阶段(认知/对比/决策/复购)、价格敏感度档位。
这里的关键在于微调。开源基座模型的通用意图理解能力在货拉拉业务场景下不够精准——比如“拉货”这个词在不同语境下可能是搬家也可能是企业用车,基座模型往往给不出业务需要的细粒度分类。我们做了一版基于领域数据LoRA微调的意图模型,用了一万多条标注数据和二十多万条弱监督数据,评测下来意图分类准确率从基座的82.4%提到了93.1%,这个提升幅度对投放后端是决定性的。
提示:意图理解模型不要一上来就做全量微调。先试LoRA或Q-LoRA,效果不够再用全量微调。我们的经验是“标注质量远比数据量重要”,五千条高质量人工标注能顶五万条自动标注。
4.2 广告定向的人群扩展:利用大模型做种子人群画像化
货拉拉的广告投放需要做人群扩展(lookalike),传统做法是基于种子人群的特征向量做近邻搜索。这里有个问题:种子人群的特征空间是稀疏的,尤其是新业务线,种子可能就几万人,特征覆盖不全。
我们试着用大模型来做人群画像的“补全”——给定种子人群的行为特征分布,让模型推演这群人的潜在特征、媒体偏好、内容兴趣,再把这些推演结果作为维度加入定向条件。这个话题有些敏感,我们实际执行时非常克制,只使用了脱敏后的统计级特征,不会涉及任何个体隐私。
这部分的实践效果是:某业务线的人群扩展量提了3.7倍,投放的CVR没有明显下降,整体获客成本下降了约18%。但说实话,这个数字里有多少是大模型的功劳、有多少是人群量变大本身的统计学红利,我们内部没有完全拆清楚。这也是后面要持续做因果推断的原因——不搞清楚增量从哪来,就无法稳定复制成功经验。
4.3 用户分层的动态化:从月级更新到小时级调整
传统用户分层是运营给规则,比如“近30天下单超过3次的算高频用户”,然后数据库跑定时任务更新标签,一天或一周更新一次。这在广告投放里太慢了——用户的需求会随季节、随搬家周期、随LBS商圈变化而波动。
大模型介入后,我们做了一个动态分层通道:用户在广告场景里的每一次行为(浏览、点击、搜索、下单)都会实时更新一个“轻量意图向量”,这个向量和大模型离线算出的“静态用户画像”做融合,生成实时的投放分层。分层结果不进BI报表,直接服务实时广告请求的定向和出价调整。
这个架构做下来,最大的收益不是单个指标的大幅上涨,而是取消了“运营手动调整分层”这个环节。以前每周要花半天开会对分层规则做微调,现在基本不需要了,分层是模型在数据驱动下自动演化的,运营只需要定义边界条件(比如任何分层都不得包含未满18岁用户、任何分层都有最小样本量约束),规则反而简化了。
5. 广告投放的策略优化:大模型在出价与预算分配中的角色
5.1 竞价环节的传统方案与大模型增强
货拉拉广告侧有自研的竞价系统,RTB场景下要对每一次广告曝光机会实时出价。传统出价策略用的是PID控制加线性调价,核心逻辑是跟踪一个目标成本线,曝光机会的预估CTR高就加价、低就降价。这个方案成熟稳定,但有个盲区——它只看“当下这一笔曝光的预估转化”,不“理解”当前广告位的上下文环境是否与用户决策阶段匹配。
我们在大模型接入后做了一件事:把竞价请求的特征序列喂给一个轻量化的Transformer模型,输出一个“上下文匹配分”,直接作为PID调价器的一个输入修正项。这个模型做的事情本质上是用大模型的语言理解和序列建模能力补足传统预估模型对上下文不敏感的缺陷。
举一个具体例子。用户正在小程序里比较“小面”和“中面”两种车型的价格,这时候来自信息流广告位的一个曝光请求,如果只按历史CTR预估,权重可能一般;但上下文匹配分识别出用户处于“对比决策期”,在信息流推一个“中面价格立减券”的广告反而非常契合。加了这一项后,信息流的竞价胜率提升了约9%,同时目标成本没有超限。
5.2 预算分配:大模型拆解“什么时候该花哪个池子的钱”
货拉拉的广告预算分很多池子:新客获取池、老客召回池、品牌曝光池、司机招募池。每个池子的预算分配原来靠财务和运营对表拍脑袋,周期是周级。这个节奏太慢了——周中突然有一波热点(比如城市限行政策调整、货运旺季提前)导致某个池子的流量机会暴增,等下周调预算就来不及了。
我们做了一个“预算调度辅助模块”:每晚用大模型分析当日各渠道的投放数据、行业大盘波动、热点事件摘要,输出未来48小时各预算池的建议调拨方向和幅度。大模型不直接改预算,只是输出建议,由系统内的规则来执行预算调拨,规则会卡一个“单日调拨幅度不超过20%”的阈值,防止模型抽风把预算全挪走。
这个模块上线后,预算使用效率(用“预算消耗率×达成ROI的综合分”衡量)提升了约14%,主要提升来自对周末搬家需求和月初货运需求两个尖峰的预判。大模型在这里其实是用它的世界知识补齐了纯统计模型的“看不见拐点”问题。
5.3 投放实验的加速:自动生成A/B测试方案假设
最后说一个可能比较小众但很实际的应用:大模型辅助生成实验假设。做广告投放的人都懂,A/B测试实验的设计很依赖经验——测什么变量、怎么定对照组、观察周期多长。新手运营提的实验方案经常变量混杂,测试结果没法归因。
我们让大模型基于历史实验数据和当前投放痛点,自动生成实验假设,包括:实验变量(如文案风格、落地页结构、出价倍率)、目标指标、预期收益区间、风险控制线。大模型还会做一件事:回溯分析历史实验,找出“看起来很成功但其实是偶然波动”的案例,减轻幸存者偏差对团队判断的干扰。
这个模块的价值不在准确率,而在“让团队的实验方法论变规范了”。投放所有的新实验都要和大模型生成的假设库对齐,不一致的地方运营要说清楚理由——这个流程本身让实验设计质量有了明显提升。
6. 效果评估与踩坑记录:大模型广告系统是怎么被验证的
6.1 对账和归因:大模型在效果评估里的角色
做营销广告,最终老板只问一个问题:多花的钱带来多少真实增量?大模型在营销广告里的ROI必须用严格的对比实验来验证。我们在验证时遇到的问题很典型:大模型优化的广告点击率确实涨了,但点击率涨不等于增量收入涨——因为点击的可能是本来就会转化的“自然流量用户”。
我们的归因方案分三层:实验层(A/B测试跑增量对比)、归因层(同一用户在广告触达和自然访问之间的转化路径映射)、模型层(用uplift model找出真正被广告说服的人群)。大模型在这三层里的角色是:用意图特征做用户分组,保证实验组和控制组的用户“广告敏感度”分布一致——这一直是A/B测试里最容易被忽视的坑,用户分组随机但不对等,实验结果就废了。
注意:大模型在效果评估上帮的是“帮你看清因果”而不是“直接告诉你结果”。投资回报率验证没法省,该跑的实验时长、该有的对照组、该做的显著性检验,一步都不能少。
6.2 实测过程中的典型意外与修复
记录三个印象最深的坑,排名按维修复杂度从低到高。
第一个是“大模型文案被拦截率偏高”。我们生成的文案在合规校验环节被拦截了快18%,远超之前模板库的4%——模型太喜欢用“最”“第一”“100%”这种词了。解决方案是在生成后的输出校验阶段增加一个“改写器”,命中违禁词时自动用同义词替换和句式调整,拦截率降到了5.8%。
第二个是“文案多样性退化”。跑了两个星期后,我们发现同一个业务线的文案开始趋同,都变成了“XX元起+立即下单”的句式。原因是创意打分模型倾向于给“类历史高点击”的文案打高分,模型被评价器带跑了。修复方式是给打分模型加了一个“多样性惩罚项”,同时每次从候选池里选广告文案时强制覆盖至少3种骨架风格,效果恢复。
第三个坑比较隐蔽:“推送频率失控”。大模型上下文增强后,Push内容的匹配度高了,运营忍不住加频次——结果用户投诉率上涨。后来定了一个死规则:无论模型判断内容多精准,单一用户单周Push触达上限是4次,超过就走冷却。技术再强,用户关系不能被透支,这个原则要写在工程代码里,不能指望运营自觉。
6.3 对同行做类似项目的一些建议
最后聊几个能直接带走的心得,都是我在这类项目里学到的东西,但不代表适用所有团队,参考为主。
- 先做意图理解,再做内容生成。意图理解是广告系统的地基,地基不牢,文案写再好投放也是瞎打。我们最早被“文案生成”吸引先去做了创意,后面回头补意图,浪费了一个多月。
- 大模型生成的创意,一定要用传统模型过滤一道。大模型的创意候选质量方差极大,直接用等于赌博。一个便宜的点击率预估模型就是最好的“编辑”。
- Prompt工程要持续迭代。我们的广告文案Prompt每两周左右会更新一次,主要工作是把“最近表现好的文案风格”沉淀成few-shot示例。Prompt不是写一次就完了,它是活的资产。
- 别把大模型当成唯一技术支柱,规则引擎和传统模型依然是系统稳定性的底座。大模型负责智能,规则负责底线,这个组合在我们团队内部目前看来是最可靠的。
7. 未来的演进方向与个人实操体会
这一节不做什么宏大展望,就说两件我实际在推进的事。
第一件事是把大模型从“辅助创意和投放判断”逐步升级为“参与广告全链路的自动化决策”。目前意图理解和创意生成已经自动化了,但预算调拨还需要人为确认,实验设计也还需要人来审。我的目标是让系统在大模型建议的基础上自动执行低风险决策,只把高风险决策留给人。这条线走通之后,广告投放的人力介入点会进一步减少。
第二件事是大模型的多模态能力在视频广告素材上的进一步应用。目前我们的视频还是编导主导、大模型辅助脚本,下一步想把视频画面和口播的音画一致性也纳入模型辅助的范畴,让编导的产出效率再翻一番。
最后说句实在话。这一路实践下来,我最大的体会是:大模型在这种业务场景里不是“魔法棒”,更像一个“能听懂人话的超强实习生”——给它清晰的指令、好用的工具、明确的边界,它能顶一个五人小组的活;但你如果指望它自己知道该干什么、不该干什么,那一定会翻车。所有看似智能的成绩,背后都是工程上和运营上的持续调教和约束。把约束做好了,大模型就是营销广告系统里最踏实的一环。