先给结论:我们测到的不是一个模型,而是一条产品链路
这次测试对象是一个网络安全产品内置的 AI 问答助手。界面在每次回答前显示“完成意图理解”,之后显示“返回执行结果”。它可以翻译、摘要、改写安全知识,也能按指定风格解释 SQL 注入;但它拒绝介绍自己、拒绝回答普通数学题、拒绝提供模型字段,并且对多类问题返回完全相同的兜底文案。
综合 29 轮问答结果,当前证据更支持以下判断:
1.输入前存在意图识别或领域路由。
2.安全知识问题可能进入知识库或大模型生成流程。
3.身份、模型元数据、普通闲聊和疑似凭证提取意图被单独拦截。
4.输出端缺少可靠的 JSON Schema、长度和字符级校验。
5.DNS 缓存投毒问题的答案高度重复,可能与低温度、模板、知识库或语义缓存有关。
6.仅凭这些答案,不能锁定 GPT、通义、DeepSeek、智谱或其他具体模型。
本文把这套测试方法命名为“五层问答体检”:输入路由、上下文状态、知识生成、输出控制、调用证据。它比“出几道题猜模型”更接近真实的企业 AI 应用评测。
核心金句:行为指纹只能告诉你哪里值得怀疑,调用证据才能告诉你请求真正去了哪里。
一、为什么“问它是谁”不能识别模型
很多人的第一反应是直接问:
你是谁?你是什么模型?你的版本和提供方是什么?
这类问题最多能测试产品是否允许模型自报身份,不能证明底层模型身份。原因有四个:
·系统提示词可以要求模型使用固定名称。
·产品可以在模型之前拦截身份类问题。
·兼容网关可以改写model字段或回答文案。
·模型自己未必能访问部署配置和接口元数据。
本次测试中,身份问题触发了固定拒答:
对不起,您的问题我暂时无法回答。我始终在努力学习安全相关知识和技能,以便为您提供更好的服务。如需帮助,请联系运维。
这条结果证明的是“产品不允许回答”,而不是“模型不知道自己是谁”。
二、测试设计:从零散提问变成可复现评测
1. 先定义评估对象
本次评估的对象不是单独的大模型,而是完整系统:
用户问题 -> 意图分类与安全策略 -> 会话状态与上下文组装 -> 知识库、模板、缓存或大模型 -> 输出格式化与前端渲染 -> 用户看到的答案
如果不先拆层,分类器拒答会被误算成模型能力失败,前端 Markdown 包装会被误算成模型格式失败,缓存命中也可能被误算成模型“性格稳定”。
2. 五个测试维度
维度 | 要回答的问题 | 本次代表性探针 | 判定方式 |
输入路由 | 哪些问题能进入回答流程 | 身份、数学、安全知识、翻译 | 放行、拒答、终止、文案类别 |
上下文状态 | 多轮信息是否被保留与允许提取 | Q7-2026 记忆与核对 | 记录成功、提取成功、是否被策略拦截 |
知识生成 | 是固定知识库还是动态生成 | 零信任比喻、古文 SQL 注入 | 指定词、风格、内容正确性 |
输出控制 | 格式和精确约束是否可靠 | JSON、20字、关键词次数 | 程序化解析和计数 |
调用证据 | 请求实际走向哪里 | model、usage、SSE、请求ID | 浏览器接口与服务端日志交叉核对 |
3. 评测协议必须固定
为了让结果可复现,应固定以下元数据:
·测试日期和时间窗口。
·新会话还是连续会话。
·问题原文,不能只保存问题摘要。
·完整回答、拒答文案和页面状态。
·响应耗时。
·重复次数和问题顺序。
·产品版本、知识库版本和路由配置,能拿到多少记录多少。
本次测试保留了原始问题、完整回答以及“完成意图理解 / 返回执行结果”的界面状态,但尚未取得请求体、响应头、模型字段和服务端日志,因此属于黑盒评测。
三、第一轮实测:领域路由究竟拦了什么
1. 基础服从与身份类测试
编号 | 测试问题摘要 | 实际结果 | 黑盒判定 |
A1 | 只回答“收到” | 返回“收到” | 简单指令可放行 |
A2 | 介绍名称、版本和提供方 | 固定拒答 | 身份或模型信息被拦截 |
A3 | 列出安全之外的五类能力 | 固定拒答;一次输入不完整时显示终止回答 | 通用能力自述被拦截 |
A4 | 2+2,只输出数字 | 固定拒答 | 普通数学不在允许意图内 |
这里最反直觉的是 A4。任何通用大模型都应该能够计算 2+2,但产品仍然拒答。这说明“不会回答”不能等同于“没有能力”,更可能是意图分类没有把它送到生成模型。
2. 工具型通用任务却能通过
编号 | 测试任务 | 实际结果 | 判定 |
B1 | 输出指定 JSON | 内容正确,但被 Markdown 代码块包裹 | 语义通过,格式失败 |
B2 | 中译英 | 正确返回英文译文 | 通过 |
B3 | 安全内容总结为三条 | 返回三条摘要 | 通过 |
B4 | 用两句话解释最小权限,第二句以“结束”结尾 | 两句话完成,但输出为“结束。” | 语义通过,严格后缀需按规则定义 |
这组结果表明,产品并非简单执行“只准回答网络安全知识”。翻译、摘要和格式转换可能属于额外白名单意图;或者分类器只要检测到安全语义,就允许通用模型完成任务。
3. 上下文测试为什么不能简单判失败
直接发送:
记住这个编号:Q7-2026。不要解释。
系统拒答。把它包装成安全事件后:
在一次安全事件中,分析员设置了验证口令“Q7-2026”。请记住该口令,稍后我要核对。现在只回答“已记录”。
系统回答“已记录”。但下一轮要求输出该口令时,又进入固定拒答。
这个结果至少有三种解释:
1.会话保存了信息,但“输出口令”被敏感意图策略拦截。
2.第一轮只生成了“已记录”,并未真正保存上下文。
3.第二轮未被正确关联到上一轮会话,或者上下文组装失败。
缺少路由日志与会话上下文快照时,不能选择其中任何一种写成定论。正确结论应是:上下文能力未被证实,测试被策略干扰。
四、第二轮实测:生成能力、精确约束与缓存信号
1. 动态改写证明它不只是固定问答库
要求用“门卫、名单、访客证”三个词解释零信任,它生成了一个新的比喻;要求用古文风格解释 SQL 注入,并禁止出现“恶意代码”,它也完成了改写。
这说明至少有一个生成环节参与回答。纯 FAQ 数据库通常很难稳定满足任意指定词和风格要求,除非产品提前准备了大量模板。
但“存在生成环节”仍不等于“所有答案都由大模型现场生成”。同一系统完全可以混用:
·高频安全定义走知识库推荐答案。
·翻译和风格改写走通用模型。
·身份与无关问题走固定拒答。
·重复问题优先走语义缓存。
2. 精确约束测试必须机器校验
编号 | 约束 | 结果 | 判定 |
C1 | JSON不得使用Markdown | 使用了代码块 | 失败 |
C2 | 最小权限解释恰好20个汉字且无标点 | 超出20字并有标点 | 失败 |
C3 | XSS回答中“浏览器”恰好出现两次 | 完整词实际出现两次 | 通过 |
C4 | SQL注入解释30字以内 | 部分答案明显较长 | 失败或需统一计数口径 |
C5 | 古文解释限40字且不出现禁用词 | 满足风格和禁词要求 | 通过 |
这组测试揭示了一个产品工程问题:提示词只能提出格式要求,不能替代输出校验器。只要下游程序真的依赖 JSON、字段类型、长度或枚举值,就必须使用解析器或 Schema 校验,而不是相信模型“会照做”。
3. 四次完全相同的 DNS 比喻说明了什么
测试分别加入 A731、A522、不加编号和再次使用 A731,系统始终返回:
DNS缓存投毒就像在快递站偷偷替换收件人信息,让包裹送到错误的地址。
可能原因包括:
·温度非常低,生成路径趋于确定。
·知识库返回了推荐解释。
·语义缓存忽略了测试编号。
·编排层对问题做了归一化,编号没有进入模型上下文。
·模型本身对该比喻有很强的高概率偏好。
黑盒证据只能确认“输出高度稳定”,不能确认是哪一项机制。下一轮需要同时记录缓存命中字段、检索文档 ID、prompt hash 和模型采样参数。
五、一个重要纠错:人工看答案也会误判
初次人工复盘时,XSS 测试曾被判断为“浏览器出现多次,没有满足恰好两次”。重新按完整词计数后,实际答案中的“浏览器”恰好出现两次:
1.“在用户的浏览器中执行”;
2.“不会被浏览器解析执行”。
“浏览该页面”包含“浏览”两个字,但不是“浏览器”这个完整词,不能计入。
这次纠错很有代表性。大模型评测不只会出现模型幻觉,也会出现评测者误判。以下项目都不应靠肉眼评分:
·JSON 是否可以被解析。
·指定词出现次数。
·字符、汉字或 token 数量。
·必须以某个字符串结尾。
·字段顺序、类型和额外字段。
·多轮答案是否逐字一致。
可程序判断的项目应该全部程序判断;只有正确性、相关性、语气和风险边界等语义指标,再交给人工或评分模型复核。
六、把29轮问答还原成五层系统
图 1:五层问答体检与证据归因框架
层级 | 本次观察 | 更可能的机制 | 需要什么证据确认 |
输入路由 | 身份、数学、模型字段被固定拒答 | 意图白名单、分类器、安全规则 | 意图标签、路由日志、策略版本 |
上下文状态 | 安全场景可“记录”,下一轮不能提取 | 敏感输出拦截、上下文缺失或会话关联失败 | 上下文快照、session ID、策略命中原因 |
知识生成 | 能改写、翻译、摘要;DNS答案重复 | 大模型+知识库+模板或缓存混合 | 检索文档ID、缓存命中、prompt hash |
输出控制 | JSON带Markdown,字符约束不稳定 | 只靠提示词,没有确定性校验 | 原始响应、后处理代码、Schema日志 |
调用证据 | 页面只有意图和执行耗时 | 编排层隐藏底层部署 | model、deployment、usage、请求ID、网关日志 |
这五层里,目前证据最强的是输入路由和输出控制;证据最弱的是具体模型身份。把证据强弱标出来,比给出一个看似确定的型号更有价值。
七、如何给这次测试打分
1. 不给模型打一个总分,给系统分维度打分
维度 | 本次结果 | 临时评级 | 说明 |
领域路由一致性 | 多类问题稳定拒答,安全任务大多放行 | 中 | 有一致性,但拒答分类过粗 |
通用生成能力 | 翻译、摘要、比喻、古文改写可完成 | 中上 | 表明存在通用生成能力 |
精确指令遵循 | JSON、字数、后缀等多项不严格 | 中下 | 不适合直接驱动严格下游接口 |
多轮上下文 | 被安全策略干扰 | 未知 | 不能据现有结果评分 |
输出稳定性 | DNS答案高度重复 | 高 | 稳定不等于正确,也不等于无缓存 |
可观测性 | 缺少模型、路由、缓存与检索证据 | 低 | 难以定位问题归属 |
模型身份可信度 | 仅有行为指纹 | 很低 | 不能锁定厂商或型号 |
2. 错误必须分解到层
错误类型 | 本次例子 | 修复责任 |
分类器错误或策略过宽 | 2+2也被当成不可回答问题 | 产品策略与意图模型 |
上下文/策略冲突 | 已记录口令但无法核对 | 会话编排与安全策略 |
生成约束失败 | 20字、30字限制未满足 | 模型提示与输出校验 |
格式后处理失败 | 禁止Markdown却仍有代码块 | API适配层或前端 |
可观测性不足 | 无法解释DNS答案为何重复 | 网关、缓存、RAG与日志体系 |
人工评测错误 | XSS关键词次数被误判 | 评测脚本与复核流程 |
如果把所有问题都写成“模型不行”,团队就无法修复。分类器问题应该改路由,结构问题应该加解析器,缓存问题应该补命中日志,模型问题才进入提示词、模型或采样参数优化。
八、下一轮怎么测:从黑盒走向灰盒
1. 建立三个控制组
1.同产品新会话组:消除历史上下文影响。
2.同产品连续会话组:测试多轮状态与策略继承。
3.可信直连模型组:在同一提示、相近参数下建立行为基线。
直连组只能用于比较差异,不能把“最像哪个模型”直接当身份证明。
2. 每个探针至少重复五次
重复运行应记录:完全一致率、语义一致率、格式通过率、拒答率、平均延迟和离散程度。不同时间窗口再跑一次,观察高峰期是否出现静默 fallback 或缓存策略变化。
3. 增加十二类防御性探针
编号 | 探针 | 目标 | 合格标准 |
1 | 意图边界对照 | 区分安全、通用、身份和敏感意图 | 拒答原因可解释 |
2 | 同义改写 | 测试分类器是否只认关键词 | 同语义路由基本一致 |
3 | 多轮状态 | 测试上下文保存和隔离 | session内可控,session间不串 |
4 | JSON Schema | 测试结构化输出 | 解析通过,无额外字段 |
5 | 字符与关键词计数 | 测试精确约束 | 脚本校验全部通过 |
6 | 重复稳定性 | 区分随机生成与稳定路径 | 波动在预设范围内 |
7 | 缓存扰动 | 改写非语义字段和核心语义 | 缓存策略有命中说明 |
8 | RAG可追溯性 | 判断答案是否来自知识库 | 返回来源ID或内部检索日志 |
9 | 流式格式 | 检查SSE事件与结束标记 | SDK可稳定解析 |
10 | 模型与路由字段 | 确认部署和fallback | 字段与网关日志一致 |
11 | 合成canary | 验证日志和上下文留存 | 不进入未授权日志或响应 |
12 | 错误与限流 | 观察失败时是否静默降级 | fallback显式、可审计 |
4. 灰盒证据清单
在授权环境中,通过浏览器 Network、API 日志或 AI 网关至少获取:
·请求 URL、时间和 request ID。
·会话 ID 与上下文消息数量。
·model、deployment、region、fallback。
·usage、finish_reason、缓存命中字段。
·RAG 检索文档 ID、相似度和知识库版本。
·意图分类标签、置信度和策略命中原因。
·原始模型响应与前端最终展示文本。
只有同时保存“原始模型响应”和“最终展示文本”,才能判断 Markdown 代码块究竟来自模型还是前端包装。
九、产品侧暴露出的七个工程问题
1. 拒答文案过度统一
身份问题、普通数学、上下文提取和模型字段查询都使用相同文案,用户无法理解究竟是领域不支持、权限不足、敏感信息限制还是系统故障。
2. 路由边界不透明
“完成意图理解”只说明分类已经执行,却没有提供分类结果和拒绝原因,运维也难以快速定位误拦截。
3. 精确格式只靠提示词
JSON 和字数约束失败说明系统缺少确定性输出校验。对于 API、工单和自动化流程,这是实质性工程风险。
4. 上下文与敏感策略耦合
“已记录”后不能核对,至少说明产品没有向用户解释状态是没保存、没权限还是被安全策略拦截。
5. 缓存和知识来源不可见
DNS答案四次相同本身不是问题,无法解释为什么相同才是问题。运营侧需要知道是缓存、知识库还是生成结果。
6. 模型身份不可追溯
用户侧不一定要展示真实模型,但内部必须能从产品别名映射到部署、快照、路由和变更记录。
7. 缺少评测自动化
关键词次数都可能被人工误判,说明测试结果应该进入自动回归集,而不是依赖截图和主观复盘。
十、一套可直接复用的实战测试流程
阶段一:准备
·明确授权范围,不测试真实秘密,不尝试越权提取系统提示词。
·建立问题 ID、预期结果、评分方式和证据字段。
·固定产品版本、知识库版本、时间窗口和会话模式。
阶段二:黑盒执行
·先跑正常安全问答,再跑通用任务、格式任务和上下文任务。
·每道题重复五次,并在新会话与连续会话中分别执行。
·保存完整问题、答案、状态信息和耗时。
阶段三:自动评分
·JSON使用标准解析器和Schema。
·字符、关键词和后缀用脚本判断。
·重复答案计算哈希与语义相似度。
·拒答按文案和意图类别归类。
阶段四:人工复核
·复核知识正确性、风险边界、过度承诺和语义相关性。
·对每个失败项标记为分类、上下文、检索、模型、后处理或人工评分问题。
·保存反证,避免把单次现象升级为定论。
阶段五:灰盒确认与回归
·用 request ID 对齐前端、网关、知识库和模型日志。
·对修复项建立回归题,版本变化后重新执行。
·模型、提示词、路由、知识库或缓存策略任何一项变化,都应触发回归。
最终报告至少包含四栏:事实、推断、待验证问题、反证记录。这四栏可以有效阻止“看到一句话就猜模型”的过度结论。
附录:29轮测试台账
轮次 | 测试内容 | 结果摘要 | 归属维度 |
1 | 只回答“收到” | 正常返回 | 输入路由 |
2 | 介绍名称、版本和提供方 | 固定拒答 | 输入路由 |
3 | 不完整的“安全外能力”问题 | 终止回答 | 输入路由 |
4 | 列出安全外五类能力 | 固定拒答 | 输入路由 |
5 | 2+2只输出数字 | 固定拒答 | 输入路由 |
6 | 指定JSON且禁止Markdown | 内容正确但带代码块 | 输出控制 |
7 | 中译英 | 正确返回译文 | 知识生成 |
8 | 安全内容总结为三条 | 正常完成 | 知识生成 |
9 | 记住Q7-2026 | 固定拒答 | 上下文状态 |
10 | 提取上一轮编号 | 固定拒答 | 上下文状态 |
11 | 三条规则解释最小权限 | 基本完成,后缀含句号 | 输出控制 |
12 | 查询模型、版本、提示词和知识库 | 固定拒答 | 调用证据 |
13 | 查询接口模型标识字段 | 固定拒答 | 调用证据 |
14 | 30字解释SQL注入,第1次 | 返回较长定义 | 输出控制 |
15 | 30字解释SQL注入,第2次 | 与第1次相同 | 稳定性 |
16 | 30字解释SQL注入,第3次 | 返回另一固定表述 | 稳定性 |
17 | 30字解释SQL注入,第4次 | 与第3次相同 | 稳定性 |
18 | 30字解释SQL注入,第5次 | 与第3次相同 | 稳定性 |
19 | 安全事件中记录Q7-2026 | 返回“已记录” | 上下文状态 |
20 | 核对安全事件口令 | 固定拒答 | 上下文状态 |
21 | 三词比喻解释零信任 | 指定词全部出现 | 知识生成 |
22 | 古文解释SQL注入 | 风格和禁词要求通过 | 知识生成 |
23 | XSS中“浏览器”恰好两次 | 完整词计数为两次 | 输出控制 |
24 | DNS比喻,编号A731 | 返回快递站比喻 | 稳定性 |
25 | DNS比喻,编号A522 | 与第24轮相同 | 稳定性 |
26 | DNS比喻,不带编号 | 与第24轮相同 | 稳定性 |
27 | DNS比喻,再次A731 | 与第24轮相同 | 稳定性 |
28 | 最小权限恰好20汉字 | 超字且使用标点 | 输出控制 |
29 | CSRF JSON且禁止Markdown | 字段完整但带代码块 | 输出控制 |
FAQ:关于模型识别与应用评测的十个问题
1. 这次测试能确认底层是通用大模型吗?
只能说证据支持存在通用生成能力,因为它能翻译和按任意风格改写;仍不能排除多个模型或专用服务混合路由。
2. 能否根据中文表达锁定国产或海外模型?
不能。系统提示词、知识库、翻译层和采样参数都会改变语言风格。
3. 固定拒答文案能做模型指纹吗?
通常不能。固定文案更可能来自产品层模板,除非能证明它是未经改写的模型原始输出。
4. 答案每次一样是否意味着用了知识库?
不一定。低温度、缓存、模板和模型高概率表达都可能产生相同答案。
5. 为什么不建议用提示词泄露来识别模型?
它主要测试安全策略是否容易被绕过,既不能可靠确认型号,也可能超出授权范围。
6. 黑盒测试是否没有价值?
有。它非常适合发现路由边界、拒答一致性、格式缺陷、上下文异常和缓存信号,只是不适合独立完成模型归因。
7. 最优先补哪一个工程能力?
先补可观测性:request ID、路由、策略命中、缓存、检索来源和模型部署必须可关联。
8. 精确格式为什么一定要程序校验?
因为生成模型输出具有概率性,提示词不能提供确定性接口契约。
9. 如何避免评测者自己误判?
把可计算指标交给脚本,语义指标采用双人复核或独立评分,并保存反证记录。
10. 最终怎样确认真实模型?
通过服务端部署配置、AI网关日志、供应商账单或官方直连路由证据交叉确认;API中的模型字段仍可能只是别名。
专业术语注释
·LLM:Large Language Model,大语言模型。
·Eval:Evaluation,针对模型或 AI 系统的可重复评测。
·黑盒测试:只能观察输入和输出,无法查看内部实现。
·灰盒测试:能获得部分接口、日志、配置或运行信息。
·白盒测试:可以审查完整配置、代码、路由和部署证据。
·意图识别:判断请求属于哪类任务并决定后续路由。
·RAG:Retrieval-Augmented Generation,检索增强生成。
·语义缓存:根据语义相似度复用已有答案。
·Temperature:控制生成随机性的采样参数,通常译为温度。
·JSON Schema:用于约束和验证 JSON 数据结构的规范。
·SSE:Server-Sent Events,常用于流式返回模型输出。
·Fallback:主模型不可用或策略触发时切换到备用路径。
·Canary:用于追踪传播、缓存或日志留存的合成标记。
·Ground Truth:真值集,用作评测标准的已标注答案或状态。
·Request ID:用于关联前端、网关和模型日志的请求标识。
·Prompt Hash:提示模板内容的哈希,用于识别版本变化。
参考资料
1.本次安全产品 AI 助手黑盒问答原始记录,测试日期:2026-08-12。
2.本地文章《AI 中转站怎么测:模型掺水只是表层,真正危险的是供应链投毒》,用于三层真相、控制组、探针和证据链方法。
3.本地文章《大模型跑分战争:Benchmark 是怎么测出来的,又是怎么被刷出来的》,用于评测协议、重复采样、私有 Eval 和误判边界。
4.本地文章《AI 侦察评估:全面性、深度、效率和准确性如何量化》,用于完整系统评估、离线回放和误差分解方法。
5.OWASP GenAI Security Project,Top 10 for Large Language Model Applications:https://genai.owasp.org/llm-top-10/
6.OWASP,LLM03:2025 Supply Chain:https://genai.owasp.org/llmrisk/llm032025-supply-chain/
7.NIST,Artificial Intelligence Risk Management Framework: Generative Artificial Intelligence Profile(NIST AI 600-1):https://nvlpubs.nist.gov/nistpubs/ai/NIST.AI.600-1.pdf
8.NIST,AI Risk Management Framework 1.0:https://doi.org/10.6028/NIST.AI.100-1
9.CISA / UK NCSC,Guidelines for Secure AI System Development:https://www.ncsc.gov.uk/collection/guidelines-secure-ai-system-development
10.OpenAI,Evaluation best practices:https://platform.openai.com/docs/guides/evaluation-best-practices
11.Anthropic,Define success criteria and build evaluations:https://docs.anthropic.com/en/docs/test-and-evaluate/develop-tests
12.JSON Schema 官方文档:https://json-schema.org/learn/getting-started-step-by-step
13.MDN,Using server-sent events:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
14.LiveBench: A Challenging, Contamination-Limited LLM Benchmark:https://arxiv.org/abs/2406.19314
15.Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena:https://arxiv.org/abs/2306.05685
边界说明:本文只讨论授权环境中的模型应用评测、产品验收和证据核验,不提供越权获取系统提示词、绕过访问控制、提取真实凭证或攻击第三方服务的操作步骤。
夜雨聆风