简介:本教程面向开发者、测评人员和技术负责人,讲解如何在选型或接入前自行复现厂商公布的编程能力、生成效果、幻觉率和单任务成本等指标。内容包括拆解宣传口径、固定测试条件、记录耗时与用量、设计对照组、核查输出结果,以及排查常见偏差。读完后,你可以用同一套流程判断宣传数据是否可信,并形成可复用的评测报告。
本教程帮助读者搭建一套可重复执行的模型能力复核流程。厂商宣传中的数据通常只给出结论,不给出测试条件。本教程把这些结论转换成读者可以执行、记录和复查的测试项。完成后,你应当能够:
厂商宣传通常使用“大幅提升”“显著降低”之类的表述,这类表述无法直接验证。第一步要把每一条宣传转换成四个要素:测试对象、测试任务、判定标准和对比基线。
例如,“幻觉率从某个数值降到另一个数值”可以拆成:测试对象是某个模型版本;测试任务是回答一组带参考答案的事实性问题;判定标准是回答中出现与参考答案不一致或无依据的断言即计为幻觉;对比基线是上一代版本,在相同题目上的结果。
这一步的目的是在测试开始前明确“什么算通过”。如果先跑数据再定标准,容易不自觉地偏向想要的结论。
模型输出具有随机性,同一提示词多次运行结果可能不同。测试前应固定以下条件,并把它们写入报告:
每条样本建议运行 3 次以上,记录分布而不是只取一次结果。如果同一样本的几次结果差异很大,说明该任务本身不稳定,单次成功率不能代表模型能力。
所有被测模型必须使用同一份脚本、同一组参数和同一批样本。脚本负责发送请求、计时、记录响应和用量。下面是通用伪代码:
for case in test_cases:for run in range(RUNS_PER_CASE):start = now()resp = call_model(model=TARGET_MODEL,prompt=case.prompt,temperature=FIXED_TEMPERATURE,max_output_tokens=MAX_OUT,tools=TOOL_CONFIG)latency = now() - startsave_record(case_id=case.id,run=run,output=resp.text,usage=resp.usage,latency=latency,tool_config=TOOL_CONFIG,timestamp=start)
脚本中的密钥应从环境变量或密钥管理服务读取,不要写入代码或日志。
单价下降不等于单任务成本下降。推理档位较高时,模型可能产生更多推理相关的输出Token,耗时也会变长。因此需要从用量明细中读取实际数据,并按下面的方式计算:
单任务成本 = 输入Token数 × 输入单价+ 输出Token数 × 输出单价+ 工具调用费用(如有)
耗时建议拆成两部分统计:首字延迟(从发送请求到收到第一个字节)和生成耗时(从首字到结束)。两者分开记录,才能判断慢的原因是排队还是生成过程本身。
计算结果应取中位数和分位数,而不是只看平均值。平均值容易被少数极端样本拉偏。
生成类任务包括代码、页面、三维模型、图像描述等。这类输出无法用简单的字符串匹配判断对错,建议分三层检查:
对于声称“不依赖外部服务”的生成能力,应设计对照组:在禁用外部工具的条件下重复同一任务,比较两组结果。同时,检查调用日志,确认请求中是否包含未声明的工具或外部接口调用。如果日志显示了额外调用,应如实记录,但在证据充分前不要直接下结论。
幻觉率的核查依赖一套带参考答案的事实题库。建议按以下流程执行:
样本量较小时,比例的波动会很大。例如 50 道题中错 4 道与错 6 道,比例相差 4 个百分点,但这种差异很可能只是随机波动。报告中应同时写出样本量和判定规则。
报告应包含以下内容,便于他人复现:
| 项目 | 内容 |
|---|---|
| 测试对象 | 模型名称、版本标识、调用时间 |
| 测试条件 | 温度、最大输出长度、工具配置、运行次数 |
| 样本信息 | 样本数量、覆盖场景、来源说明 |
| 结果指标 | 通过率、幻觉率、耗时中位数、单任务成本 |
| 与宣传口径对比 | 测试条件是否一致,差异在哪里 |
| 局限性 | 样本偏差、判定争议、未覆盖的场景 |
| 配置项 | 含义 | 取值逻辑 | 风险 |
|---|---|---|---|
| 采样温度 | 控制输出随机程度 | 复核时取较低值,创作类任务可适当提高 | 温度过高导致结果不可复现 |
| 最大输出长度 | 限制单次输出的Token上限 | 按任务实际需要设定,并留出余量 | 设置过小会截断输出,导致误判 |
| 单次超时 | 等待响应的最长时间 | 按任务复杂度设定,并记录超时次数 | 超时过短会把慢响应误判为失败 |
| 重试次数 | 失败后重新请求的次数 | 建议 1 到 2 次,并记录每次重试 | 重试会增加成本,还可能掩盖真实失败率 |
| 并发数 | 同时发送的请求数 | 不超过服务方允许的速率限制 | 并发过高会触发限流,影响耗时数据 |
完成测试后,按以下四层检查结果是否可信: