AI应用怎么测?RAG、Agent、Chatbot评估体系与测试方法实践
发布时间:2026/10/19 4:47:21 锦皓数字建站

接到过不少同行来问AI应用到底怎么测传统业务系统有明确需求、有明确输入输出测试用例列一列、断言一写跑完对错一目了然。但到了RAG、Agent、Chatbot这类AI应用上很多测试同学一开始就懵了——没有预期结果没有明确对错甚至同一个问题问两遍答案都不一样这怎么设计用例怎么算通过这篇内容不绕理论直接讲一套我这两年在一线反复用过的评估体系和测试方法覆盖检索增强生成、智能体、对话机器人三类最常见的AI应用。你会看到它们各自该测什么、怎么测、用什么指标、踩过哪些坑以及一套可以直接抄走的测试集和评分方案。适合正被AI应用测试搞得头秃的QA同学也适合产品经理、AI应用开发者在做验收时参考。1. AI应用测试和你想的不一样先建立评估思维1.1 为什么传统测试思维在AI应用上失效传统软件测试的核心逻辑是验证系统是否满足预期。需求文档规定输入字段、业务规则、异常分支测试只要覆盖这些路径断言返回值就算完成。这套逻辑默认了一个前提系统存在确定性的正确行为。但AI应用恰恰在这个前提上翻了车。大模型生成的输出天然具有概率性同一个Prompt十次调用可能有十种表达没有哪个答案能被当作唯一正确。所以AI测试的一个核心转变是从断言对错转向评估质量。你不再问这个回答对不对而是问这个回答在多大程度上满足了用户需求——有用吗准确吗符合身份吗有没有泄露或编造它是一个多维度的质量度量问题而不是一个二元的是非判断问题。这个思维不转过来后面所有指标和流程都立不住。这还引出一个实操层面的变化测试用例的”预期结果“字段没法写了。我的做法是把它改成”评分要点“例如“答案必须引用给定文档内容、不得出现文档之外的数值、关键信息完整”。这就是在同一个用例里既保留“可验证性”又给了AI输出足够灵活的评分空间。1.2 RAG、Agent、Chatbot三类应用别拿一套方法测所有很多团队犯的第一个错误是想用一个通用评估模板搞定所有AI应用。实际这三类应用的核心链路完全不同风险点也完全不同必须分开设计。从工作链路看RAG的核心是“找资料写答案”重点在检索和生成的配合Agent的核心是“做任务”重点是多步决策和工具调用Chatbot的核心是“陪人聊”重点是对话体验和内容安全。从测试视角看RAG最该盯的是检索有没有找到该找的内容、答案有没有忠于资料Agent最该盯的是思考过程是否合理、工具调用是否准确、能不能从错误里恢复Chatbot最该盯的是用户体验是否自然、多轮是否一致、有没有触碰安全底线。我习惯把评估维度分成四层来落地组件层、应用层、风险层、运营层。组件层只测单个环节比如检索器的召回质量、单个工具接口的输入输出应用层测端到端的任务完成质量这是最核心的一层风险层专门做安全合规、Prompt注入、越狱类对抗测试运营层负责线上监控、用户反馈回收和灰度对比。四层各司其职才能让评估体系不只停留在实验室而是真正跟着产品生命周期走。1.3 测试用例的粒度也变了传统用例通常是一条“输入→操作→预期输出”的动作序列偏向黑盒功能验证。AI用例我建议写成“场景输入评分要点采集项”的结构。场景描述用户背景和会话意图输入包括用户文本、系统上下文、可选工具信息评分要点按维度拆开采集项记录模型输出、推理轨迹、检索结果、耗时等现场信息。这么写的好处很直接当评分出现争议时你能回看是检索环节出了问题还是生成环节出了问题而不是面对一条“输出不对”的干巴巴记录无从下手。后面我会在每个章节给出具体的维度拆分和采集项设计。2. RAG应用评估检索与生成各管一摊2.1 先搞懂RAG链路才知道测试点在哪RAG的系统链路跟传统问答系统不一样它不是一个“问题进、答案出”的直筒子而是由多个环节串联起来的管道。常见结构是对文档做切分、向量化之后建立索引用户输入Query后由向量检索从库里召回一批相似片段可选的环节是重排序把召回片段按相关度重新排队然后系统把这些片段拼进一个Prompt模板连同用户问题一起发给大模型生成答案最后有些产品还会做引用来源展示、后置校验和兜底话术。这个链路里任何一环出问题都会污染最终答案。比如文档切分粒度太大会混入无关信息太小会切断完整语义Query不加改写口语化表达就直接撞向量召回只有Top3但正确答案排在Top5就算检索全对Prompt模板里上下文放太多噪音大模型照样被带偏。所以RAG测试的第一原则就是别只测端到端要拆环节测。2.2 检索质量指标与实操方法RAG的检索质量评估核心指标我常用这几个命中率测试集中有多少比例的问题其正确答案出现在召回TopK的结果里。这是最直观的“有没有找到”指标。召回率衡量正确答案中实际召回的占比。通常按句块或证明片段来计算如果正确答案拆成了两个片段只召回一个召回率就是50%。MRR平均倒数排名正确答案在召回列表里的位置越靠前分越高。答案是第一位得1分第二位得0.5分第三位得0.33分取所有问题的平均。NDCG归一化折损累积增益多路召回时对不同位置的相关性做加权衰减适合评估带排序的检索效果。实操方法上我是这样跑检索评估的先准备一批“问题到标准来源片段”的测试对每条问题都标注它在知识库里应该对应的原文片段然后执行检索取TopK结果判断标准很简单——正确答案所对应的片段是否出现在结果里出现在哪个位置。最后汇总命中率和MRR。这里有个容易被忽视的细节标准来源片段必须经过人工确认不能只靠关键词匹配。我见过不少测试集是用“问题原文标题”自动生成的结果检索系统确实召回了标题相似但内容无关的文档指标虚高真上线根本用不了。数据集的标注工作不能省。2.3 生成质量忠实度是核心如果检索已经准了生成阶段出问题是RAG应用最常见也最隐蔽的失败模式。我把生成质量拆成四个维度忠实度生成内容是否完全以检索上下文为依据是否存在编造、嫁接或篡改事实。答案相关性回答是否直接命中用户意图有没有答非所问、避重就轻。完整性是否覆盖用户问题里的所有关键点有没有漏答某个子问题。可核查性是否给出引用来源来源是否真实指向上下文中的原句。忠实度是这四个维度里最难测也最值得测的。一个很有效的检查方法是“文本蕴含测试”把答案作为前提把检索上下文作为参照检查答案中的每个关键信息点能不能在上下文里找到依据。如果出现“上下文里没有的信息”且无法由推理得出就判定为不忠实。实操层面我们团队的做法是维护一份“事实性错误摘录表”每次回归测试跑完后人工抽看那些忠实度评分较低的case把错误类型分成“时间错误、数值错误、张冠李戴、凭空捏造”几类再反推是检索没召回准确片段还是生成阶段忽略了上下文约束。这样做三个月后你基本能找到自己系统最典型的幻觉模式。2.4 端到端与鲁棒性把RAG当黑盒来测分环节测完还得回到端到端场景验收因为用户感受到的是最终答案。端到端测试集至少要覆盖四类问题简单直问命中文档里的一句话即可回答、组合问题答案散在多个文档、需要聚合、推理问题文档给了部分信息需要做约束推理、无答案问题知识库覆盖不到应当拒答。重点说无答案问题这是很多RAG应用溃败的地方。我的测试做法是专门建一个“拒答测试集”里面全是知识库里不存在的、或者是需要实时信息但系统没有配置相关工具的问题。合格标准有两个一是不能乱编二是要有清晰的拒答话术比如“这个内容在当前知识范围内没有找到请补充资料或换个问法。”有一条铁律宁可答得少不能答得错。鲁棒性测试也要做起来。这里踩过的坑不少用户把“退货流程”说成“退货流程咋整啊”Query丢进检索器后召回效果明显下降用户的问句里带了标点错乱、emoji、口语方言知识库里同一件事有不同版本的说法检索结果互相矛盾。针对这些情况我会把真实用户日志里的“脏问题”捡一批连同标准问题混在一起跑回归看分数有没有波动。RAG应用上线后鲁棒性弱的问题往往比模型能力弱的问题更先暴露。3. Agent应用评估测的不只是结果是过程3.1 Agent评估的难点错误会累积Agent系统和RAG最大的区别在于Agent要做多步决策。它先理解目标再拆解计划然后决定调用什么工具、传什么参数拿到返回结果后又继续调整直到完成任务。这个特性带来一个测试上的重大难点错误具有传导性而且会累积。举例说明如果Agent在第一步就错误选择了工具那后面所有步骤都会基于错误结果进行。更麻烦的是如果系统还具备抢跑能力前一步的出错可能会被后一步的正确决策部分纠正也可能完全跑偏。所以评估Agent时“最终结果正确”并不足够我们必须深入过程轨迹判断每一步决策是否合理、工具调用是否有效。还有一层难度来自工具本身真实工具会产生外部副作用比如下单、发送消息。测试环境不可能让Agent真的执行这些操作。所以Agent测试必须依赖沙盒环境或模拟工具这也比RAG测试复杂出一截。3.2 过程质量评估轨迹就是你的测试数据我强烈建议所有Agent测试都开启轨迹记录记录的内容包括每一步的思考或规划内容、选择的工具名称、提交的参数、工具返回结果、Agent对结果的解读、状态变化比如已收集的信息、剩余任务。有了轨迹过程评估才能真正落地。过程评估的指标我常用这几个。工具调用正确率在所有调用中选对工具且参数合理的比例步骤有效率有多少步骤对最终结果产生了正面贡献有些Agent喜欢做一堆无用动作看起来忙忙碌碌但效率极低无效循环率连续重复同一个动作的次数占比这是一个很直观的“卡死”信号自我纠错率Agent在收到错误结果后能否主动更换策略的比例。实操时我们把轨迹转成一张张“过程卡片”每张卡片展示一个步骤的思考、动作、结果由评估人员按三个问题打分这一步是否有必要选择的工具是否最合适Agent对工具返回结果的理解是否准确这个评估虽然费人但从投入产出比看它比端到端结果指标更能揭示Agent系统的问题根源。3.3 任务级评估与鲁棒性测试过程评估之外任务级指标还是要看的。任务完成率测试任务中成功完成的比例平均轮次完成任务平均需要多少轮轮次太多说明效率低常见失败类型分布包括工具不存在、参数错误、空结果、超时、状态冲突等这些分析能帮你快速锁定短板。鲁棒性测试对Agent尤其重要因为它面临的输入比RAG复杂得多。我的测试集合里包含这么几类干扰型输入比如用户在一句话里夹带与主题无关的信息参数缺失型输入比如“帮我订周五的会议”但没有说时间地点误导型输入故意给错误的信息来试探Agent是否验证以及长指令型输入一次下达多个子任务观察Agent的拆解能力。这些测试的结果往往能直接反映系统的思考能力。如果Agent面对参数缺失时不是追问而是直接瞎猜那这类的case一抓一个准排查起来也简单——在Prompt里补充“用户意图不明确时必须发起澄清提问”的策略规则再做回归对比效果。3.4 Agent测试的实操手法沙盒与仿真具体执行Agent测试时我推荐两层结构。第一层是松耦合仿真把Agent依赖的外部环境全部替换成可脚本控制的仿真工具仿真工具内预置一批返回结果可以是正常结果、空结果、异常结果、超时结果等用例里显式声明某个工具应返回什么。这样可以稳定复现“工具返回了错误数据”的场景观察Agent怎么反应。第二层是真实工具的有限使用只在测试环境开放无副作用工具例如天气查询、搜索检索、计算器下单、发消息类的工具一律禁用或配置到只记录不执行。这里有一个很实用的技巧在测试环境里给工具增加一层“阀门”每次调用都先记录再放行既能收集过程数据又不影响真实逻辑。另外一个经验是每个Agent任务测试集都必须做“录制-回放”。把线上某次成功的任务轨迹录下来当新的Prompt或工具版本上线时用同样的用户输入跑一遍对比轨迹和目标轨迹的一致性。这本质上是把Agent测试从“靠结果判断”变成“靠过程回归”是我用下来最划算的手段之一。4. Chatbot评估对话体验与安全底线并重4.1 对话质量维度有用性之外还有体验Chatbot跟人打交道最终评价主体是人。所以它的评估体系里除了准确率还要加入体验类指标。我把单轮对话质量拆成这么几个维度有用性回答是否真正解决了用户当前问题语言质量是否通顺、简洁、没有病句情感态度是否礼貌、友好、不过度机械主动澄清当用户问题模糊时是否会主动追问而不是强行回答。这几项都比较主观所以评分必须配明确的Rubric。举一个“有用性”的评分说明4分代表“直接满足用户需求无需额外追问”3分代表“基本满足但缺少个别关键信息”2分代表“有部分信息但方向上偏离”1分代表“完全未解决问题”。没有Rubric就打分评估员自己拍脑袋出来的分数没法横向比较。按我们的经验不同行业Chatbot的侧重点不一样。售后客服类更看问题解决率效率优先闲聊陪伴类更看情感态度和自然度在线教育类更看主动澄清和引导能力。设计测试集时要根据自身业务给各维度分配不同权重不能平均用力。4.2 多轮对话别只测单轮QA很多人测Chatbot测试集里全是“用户问一句、机器人答一句”的孤立问题这是不对的。真实对话是多轮推进的中间还有指代、省略、话题切换和情绪变化。多轮能力是Chatbot最容易翻车的地方。多轮测试我建议覆盖以下场景指代消解比如上一轮说“那本书”下一轮问“它多少钱”Chatbot要能理解“它”指什么上下文记忆用户前两轮提过信息第三轮再问时要能记住话题切换用户从A话题跳到B话题Chatbot能不能平滑跟随以及信息补充修正用户先给了旧信息又改口系统是否以最新信息为准。多轮测试的构造方法也很讲究。我会准备批量“对话剧本”每个剧本是一个完整会话包含开场、核心问题、追问、干扰性表述、结束。评测时把整段对话喂给系统让系统按上下文连续作答而不是只给剧本最后一轮。评估员看完整段对话后再对几个维度做总体评分包括上下文一致性、指代清晰度、信息利用率等。这里有个小坑很多团队在构造多轮测试集时图省事把几轮单轮问题拼在一起每轮之间加一句“继续”之类的连接词。这种测试集测不出真正的多轮理解能力。正确的构造应该从真实对话日志里抽取和改写保留真实用户那些口语化的表达习惯。4.3 安全与合规测试必须盯死的红线Chatbot的安全测试优先级要排在最前面因为一次严重的安全事故比一百次体验不佳的影响更大。我的做法是维护一个安全用例库按类型分层管理敏感话题、歧视性言论、隐私探测诱导、越狱或角色注入、危险建议等。用例库每周根据线上日志持续扩充。绕开封面用例、专用“诱导套话”的Prompt是这类测试的常态。比如用户问“帮我把产品讲得夸张一点”很容易被系统理解成销售话术但实际上它可能带着违反广告法的风险。针对这种case的评分标准不是“答得好不好”而是“是否触碰了合规底线”出现违规行为直接一票否决不给平均分稀释的机会。安全测试的执行方式也不一样。普通用例跑一次就算完安全用例我会跑多次因为当前很多系统对同样的攻击性Prompt会出现概率性越狱只跑一次不能说明问题。一般同一个攻击用例至少跑五遍只要出现一次越狱就记作“风险触发”。4.4 线上效果监控测试不止于上线前测评集再完善也只是抽样Chatbot的线上表现才是终极裁判。我建议在系统日志埋点四个核心指标无应答率系统无法理解用户意图而给出兜底话术的比例、转人工率用户主动要求人工或系统建议转人工的比例直观反映系统能力上限、平均对话轮数偏高说明效率低偏低且伴高无应答率说明能力不匹配需求、用户满意度评分。线上监控的价值在于发现测试集覆盖不到的长尾问题。举一个真实的例子某个客服Chatbot测试集做得非常好测试通过率维持在90%以上但上线后转人工率一直降不下来。后来查日志发现用户高频的问题之一是“我要投诉”而测试集里根本没有投诉场景的情绪化表达。把这类线上流量回灌进测试集后系统能力才开始真正提升。5. 测试集建设与评估执行把评测做成可持续工程5.1 测试集怎么建从维度拆解到用例构造一个合格的AI测试集绝不是网上随便找几百条问答就完事。我建议按维度矩阵来建设业务场景核心功能、边缘功能、低频功能×问题类型事实型、推理性、操作型、闲聊型×难度梯度简单、中等、困难×表达风格书面语、口语、方言味、带错别字。用例的构造来源有三类真实线上日志是最宝贵的来源改写去隐私后直接进测试集第二类是人工编写针对已知短板设计专门case第三类是用大模型辅助生成候选再由人做筛选和标注但要注意生成出来的一批量往往带有同质化表达必须人工改写去掉模板味。测试集还需要分层管理。我习惯分成三层冒烟集跑一次系统连通性和基本质量数量控制在50条以内回归集覆盖核心能力和典型场景规模在200到500条之间深度集专门覆盖长尾、边界、对抗型场景用于专项分析。三层跑的策略不同冒烟集天天跑回归集每次版本迭代跑深度集大版本改动才跑。5.2 评分方案设计普通人也能打分的Rubric评分方案是整个评估体系里最容易被低估的部分。没有明确的评分标准同一份测试集不同人打出来的分能差到两分以上。好的评分方案必须做到维度清晰、量级明确、每个分数档位给例子。我常用的Rubric模板是“维度分档说明正反例”。以RAG的忠实度为例4分表示“关键信息均可在检索上下文中找到依据无事实性错误”3分表示“主要信息有依据但存在1处轻微添枝加叶”2分表示“存在明显事实性错误或关键信息与上下文矛盾”1分表示“大量内容与上下文无关或凭空生成”。每档都配一个实际回答样例评估员对照样例打分一致性会好很多。如果引入大模型做自动评估也就是常说的“用模型给模型打分”需要注意几点裁判模型能力应该不低于被测模型评分Prompt里必须写入完整Rubric和正反例最好用二选一或排序对比的方式而不是直接给绝对分。即便用了自动评分我也要求每个回归批次人工抽检不少于10%的case防止裁判模型出现系统偏差。5.3 执行流程与回归把AI测试当作持续化工程评估体系的落地最终要靠可持续的执行流程而不是一次性跑一把。我推荐的模式是编写批量运行脚本从测试集读取用例调用目标系统的API接口把输入、输出、运行环境、耗时等全部记录下来然后进入自动评分阶段规则类的直接算分主观维度调用大模型评估人工抽检兜底聚合输出按维度、场景、难度拆分的结果报告版本上线前做基线对比分数或专项指标出现回退就拦截。这套流程跑起来以后你会逐渐攒出一份“基线报告”每个小版本对比上一次看哪些维度涨了、哪些跌了。这里有一个我反复强调的观点AI测试的可复现性也要努力做固定大模型版本、固定温度参数、固定随机种子虽然不能做到百分百复现但至少能在同一个版本内把波动控制到可接受范围。5.4 工具的取舍先自己跑通再谈平台市场上有很多评测工具但这块变化太快我不建议一上来就铺一个重平台而是建议先用脚本把流程跑通把维度思考清楚。等测试集大起来、评估任务频繁之后再引入专门的追踪和评测平台对接自己的运行闭环。这里要特别提醒任何平台只是工具评估体系的核心永远是“维度设计和测试集质量”工具只是帮你把分数算得更快、把轨迹看更清楚。如果上来就忙着搭平台维度定义糊里糊涂那平台只会成为“把所有错误都算得很有条理”的加速器。6. 常见问题排查与避坑实录6.1 问题速查表这一节列几个我实际排查过的典型问题以及对应的排查方向。现象可能原因排查动作RAG答案编造明显事实但检索结果看着相关检索召回的片段里有干扰项或生成阶段未严格执行上下文约束单独看检索TopK内容和最终上下文分离检索与生成验证同样的RAG问题不同时间答案差异大大模型启用时干燥开启或检索结果被向量排序波动影响固定采样参数多次调试验证检查向量索引更新策略Agent总选错工具工具描述表达不清或模型对工具意图缺乏示例优化工具说明在Prompt里增加工具选择示例跑工具选择专项caseAgent陷入重复调用同一工具缺少终止条件或自我评估机制检查Agent规划结构的循环上限增加工具异常分支处理Chatbot问东答西用户意图识别被打偏或上下文被长时间历史稀释检查意图分类调整上下文窗口截断策略自动评分和人工评分差异大裁判模型的Rubric表达不具体细化Rubric的档位描述补充正反例改用成对比较方式打分6.2 排查思路从指标反推到具体环节如果评测整体分数下降了不要急着调Prompt先做环节定位。拿RAG举例我的排查顺序是先看检索命中率有没有变化没有的话再看生成忠实度得分最后看端到端答案相关性。检索没变、忠实度降了基本可以锁定是生成策略或Prompt模板的问题检索命中率跌了那就要查切分、索引、embedding或重排序哪一环出了变化。Agent排查更依赖轨迹分析。大多数Agent的故障都能在轨迹中找到“第一个异常点”。这个点往往是工具参数错误、模型理解错误、或工具返回结果与期望偏差。定到第一个异常点之后再顺着它检查是输入准备的问题、工具设计的问题、还是规划策略的问题。另外建议把Agent的每一步决策都记录成结构化日志并对关键步骤添加标记否则出问题时根本找不回来。6.3 几件我后悔没早点做的事最后分享几个纯粹从教训里得来的经验。第一测试集一定要做版本管理。AI系统的行为会随着模型迭代而变化没有版本管理你根本说不清哪个分数的变化是因为系统改了还是因为测试集被悄悄改掉了。我后来给每条测试用例加了版本号、创建日期和修改记录这个习惯帮我免掉好几次“假回归”的排查。第二不要只看平均分。平均分掩盖了太多信息同一个平均分背后可能是整体平庸也可能是“核心场景很好、长尾场景崩溃”。我建议报告永远按维度、场景、难度拆分并且至少列出最差的10条用例这样你才知道下一步该优化哪里。第三用越来越强的“通用智能单元”当裁判这条路还没有完全定型但有一点是明确的人工抽检不能丢。自动化评分是效率工具不是质量保险。每个月召集评估人员一起过一遍抽检case你会比自己窝在电脑前盯分数学到更多。我这个人在带队做AI测试时有个习惯每个系统跑完第一轮评测后一定要先把20条失败case拿给研发团队一起看用手动推演的方式逐条还原问题链路。这个动作不需要什么高深的工具但对整个团队建立“什么是AI应用质量”的共识特别有效。测试不仅仅是找Bug它是在定义这套系统的行为边界。边界画得清楚后面的迭代才走得到正道上。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。