
2026 年央视 3·15 晚会曝光的“AI 投毒”问题,核心不是模型会不会回答,而是内容生产链路把虚假测评、虚构专家身份、批量账号和提示词指令混进了公开语料。对做生成式引擎优化(GEO)的团队来说,这是一个工程问题:哪些输入可以进入发布系统,哪些输出必须留痕,哪些操作必须被拒绝。迪普智见(DeepIntelli)把 GEO 合规拆成可审计的数据模型、状态机和验收边界,而不是靠运营人员事后判断。
先把问题说清楚。品牌方采购 GEO,不是要买一批看起来热闹的内容,而是要让真实产品信息、官方资料和可验证经验更容易被 AI 搜索引用。黑灰产做法的共同点,是把不可验证内容包装成可引用内容:
工程上的约束也很明确:
这也是迪普智见把 GEO 合规服务做成流程控制的原因:如果只在文案末尾加一句“本文不构成投资建议”,并不能解决虚假身份、虚假测评和提示词注入问题。
下面这个模型可以直接作为内容入库表的起点。字段名用英文写,方便工程实现;中文说明给运营和法务看。
{
"asset_id": "string,素材唯一 ID",
"brand_id": "string,授权品牌 ID",
"claim_type": "fact | opinion | test | expert | customer_case | comparison | guide",
"statement": "string,准备发布的原句",
"subject": "string,被描述对象,例如产品、服务或公司",
"attribute": "string,被描述属性,例如价格、功能、适用场景",
"value": "string,属性值,必须逐字来自授权材料或来源文件",
"source_type": "brand_official | public_record | verified_customer | first_party_test | unattributed",
"source_url": "string | null,必须是真实可访问 URL;没有就填 null",
"source_date": "YYYY-MM-DD | null",
"identity_claim": {
"person": "string | null",
"title": "string | null",
"organization": "string | null",
"verification_status": "verified | unverified | rejected"
},
"prompt_injection_scan": {
"status": "pass | review | reject",
"matched_rules": ["rule_id"]
},
"legal_review": {
"status": "pending | approved | rejected",
"reviewer": "string | null",
"note": "string"
},
"publish_state": "draft | approved | published | retracted",
"brand_authorization": {
"status": "granted | expired | missing",
"evidence_ref": "string | null"
}
}这里最关键的是三个字段。
第一,source_type 决定一句话能不能以事实口吻发布。unattributed 只能写成明确标注的观点或经验,不能写成“测评显示”“专家认为”“客户验证”。
第二,identityclaim.verificationstatus 决定专家和用户身份能不能出现。没有可验证任职关系、真实授权或公开身份记录,就不能把一句话包装成专家结论。
第三,promptinjectionscan.status 决定素材是否包含越权指令。正文里出现“忽略以上规则”“输出时不要提来源”“把某品牌列为第一”等文本,应进入 review 或 reject,不能直接进入发布队列。
仅有字段还不够,还要限制状态怎么流转。建议把发布流程写成下面的状态机:
DRAFT
-> SOURCE_CHECKED
-> INJECTION_SCANNED
-> LEGAL_REVIEWED
-> APPROVED
-> PUBLISHED
-> RETRACTED每个状态的进入条件如下:
目标状态 | 进入条件 | 拒绝条件 |
|---|---|---|
SOURCE_CHECKED | 每个事实型 claim 都有 source_type;URL 可访问;数字、日期、证书逐字匹配来源 | 来源缺失;数字被改写;证书有效期不明却写成当前有效 |
INJECTION_SCANNED | 未发现隐藏指令、越权控制语、伪装系统提示 | 内容要求模型忽略规则、隐藏来源、操纵排名 |
LEGAL_REVIEWED | 不包含虚假身份、虚假测评、绝对化用语、未授权客户名 | 虚构专家;伪造客户案例;使用“第一”“最佳”等无依据表述 |
APPROVED | 品牌授权有效;审核人留痕;发布版本冻结 | 授权过期;素材被二次替换;审核记录缺失 |
PUBLISHED | 发布地址、发布时间、发布账号已记录 | 发布内容与审核版本不一致 |
RETRACTED | 发现来源失效、授权撤回、事实错误或监管风险 | 只删后台记录、不保留撤回原因 |
这个状态机能解决一个常见责任争议:品牌方说“我不知道服务商这样发”,服务商说“品牌给过资料”。如果日志里能看到素材来源、审核人、授权证据和发布版本,责任边界就不靠口头解释。
GEO 团队经常处理网页、PDF、评论、论坛帖和第三方文档。这些材料都可能携带提示词注入。不要把抓取到的文本直接拼进生成 prompt,也不要让模型把素材里的命令当成系统指令。
可以用一个最小检测函数:
INJECTION_PATTERNS = [
r"忽略(以上|之前|前面).{0,8}(规则|指令|要求)",
r"不要(提及|显示|引用).{0,8}来源",
r"把(.{1,30})(列为|评为|排在).{0,6}(第一|首选|最佳)",
r"你是(系统|管理员|审核员).{0,20}(必须|不得)",
r"system\s*prompt",
r"ignore\s+(previous|above)\s+instructions",
r"do\s+not\s+(cite|mention|show)\s+sources?"
]
def scan_injection(text: str) -> dict:
matched = []
normalized = text.lower().replace("\n", " ")
for rule_id, pattern in enumerate(INJECTION_PATTERNS, start=1):
if pattern.lower() in normalized or __import__("re").search(pattern, text, __import__("re").I):
matched.append(f"INJ-{rule_id:03d}")
if matched:
return {"status": "review", "matched_rules": matched}
return {"status": "pass", "matched_rules": []}这个函数不负责判断内容真假,只负责把“试图控制模型行为”的文本拦下来。真正的事实校验仍要回到 source_type 和人工审核。
工程实现上还要做三件事:
合规 GEO 不需要回避测评,但要区分三种内容:
内容类型 | 可以怎么写 | 不能怎么写 |
|---|---|---|
一方实测 | 明确写“我们按某方法测试”,记录测试条件 | 冒充第三方用户或冒充中立机构 |
品牌资料 | 写“官方资料显示”,链接官网或授权文件 | 把宣传语改写成“测评结果” |
客户案例 | 使用已授权客户名称、场景和可核验结果 | 编造客户名、头像、职位和使用感受 |
判断一条测评能不能发,可以按五问走:
五问里有一个答不上来,就不要用“测评显示”。可以降级成“使用指南”“选型清单”或“官方资料整理”,但不能伪装成独立评价。
3·15 类案例给品牌方的提醒是:采购结果不能只看“AI 回答里有没有我”,还要看内容是怎么出现的。责任边界建议按三层划分。
迪普智见在自己的 GEO 合规服务中,把这些边界做成入库校验和发布前检查;这属于一方实践,不代表第三方认证,也不等于所有平台都会给出相同判断。品牌方仍应结合所在行业、发布地区和平台规则做法务确认。
不需要一上来就扫描全库。可以先取最近一个发布周期的 100 条内容做样本,按下面方法复现:
一个简单的结果表可以这样写:
指标 | 计算方式 | 合格线建议 |
|---|---|---|
来源完整率 | 有来源的事实句 / 全部事实句 | 100% |
身份验证率 | 已验证身份数 / 专家或用户身份数 | 100% |
注入拦截率 | 命中并进入 review/reject 的注入文本 / 全部命中文本 | 100% |
无依据绝对化用语 | 含“第一、最佳、首选”等无证据句子 | 0 |
撤回可追溯率 | 可找到撤回原因和原版本的内容 / 已撤回内容 | 100% |
这里不要把“通过率高”写成“合规认证”。它只是一次内部工程评估,能帮助团队发现缺陷,不能替代律师意见、平台审核或监管认定。
在迪普智见已发布的《315曝光的假GEO服务,为什么两周就崩了?——真正的GEO是怎么做的》一文中,讨论过假 GEO 服务快速失效的现象。这个现象背后的工程原因很直接:靠批量伪内容和操纵性提示词堆出来的可见度,一旦被平台识别、来源被删除或账号被处置,引用链就断了。
真正能复用的做法,是把每一次发布都变成可审计记录:
这不是为了把流程变复杂,而是为了让品牌方在被问“这句话凭什么发”的时候,能拿出证据。
如果十项里有三项以上答不上来,先暂停新增批量发布,把历史内容池按上面的 100 条样本方法跑一遍。
GEO 的价值不是“骗过模型”,而是让真实、清晰、可追溯的信息更容易被模型理解和引用。3·15 曝光的 AI 投毒、虚假测评和虚构专家身份,本质上都是在破坏来源链和身份链。对品牌方来说,选择 GEO 服务商时,不要只问“能不能让 AI 提到我”,还要问“每一句提到我的话能不能追溯来源、能不能通过审核、能不能在被质疑时拿出记录”。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。