首字只要 800ms,用户为什么还是等了 7 秒?

简介: 首Token延迟≠用户体验!用户真正需要的是可执行答案(如“可退款+原因+下一步”),而非空事件或心跳。性能评测须拆解queue_ms、first_text_ms、useful_ms、complete_ms四阶段,并采用开放到达模型压测,结合答案质量设门禁——让AI性能真正对齐业务决策。

“模型首 Token 延迟已经做到 800ms,为什么用户还说慢?”

因为很多系统把收到第一个 SSE 事件当成“首字”。那个事件可能只有 role、空白符,甚至只是心跳。用户真正需要的是“订单能否退款、要补什么材料、下一步点哪里”。如果答案到第 7 秒才出现,800ms 对体验没有解释力。

image.png

性能对象不是一个模型接口,而是一条业务链

以售后助手为例,一次请求可能经历:租户排队、意图路由、订单检索、权限校验、模型生成、退款规则工具、内容安全检查和前端渲染。任一环节的 P99 抬头,都会让用户觉得“AI 卡住了”。

因此,测试报告至少要拆出四个时间:

  • queue_ms:请求进入到真正开始执行;
  • first_text_ms:首个非空、可见字符出现;
  • useful_ms:首次出现可行动结论,例如“可以退款”以及原因;
  • complete_ms:结构化结果和全部文本完成。

image.png

下面的探针用 httpx 读取流式响应。关键点是过滤空事件,并由业务判定函数识别“有效答案”,而不是把 socket 收到字节当体验完成:

import json, time, httpx

ACTION_FIELDS = {
   "decision", "reason", "next_step"}

async def probe(payload: dict) -> dict:
    start = time.perf_counter()
    first_text = useful = None
    merged = ""

    async with httpx.AsyncClient(timeout=30) as client:
        async with client.stream("POST", "http://sut/chat", json=payload) as resp:
            resp.raise_for_status()
            async for line in resp.aiter_lines():
                if not line.startswith("data:"):
                    continue
                event = json.loads(line[5:])
                text = event.get("delta", "")
                if text.strip() and first_text is None:
                    first_text = time.perf_counter()
                merged += text
                state = event.get("business_state", {
   })
                if useful is None and ACTION_FIELDS <= state.keys():
                    useful = time.perf_counter()

    end = time.perf_counter()
    ms = lambda t: None if t is None else round((t - start) * 1000)
    return {
   "first_text_ms": ms(first_text),
            "useful_ms": ms(useful), "complete_ms": ms(end)}

为什么常规并发脚本会把结果测得太乐观

很多压测脚本是“一个虚拟用户收到完整响应后,再发下一次”。当服务变慢,发压端也跟着变慢,于是进入系统的新请求反而减少。最危险的排队时刻被脚本自动回避,这就是协调遗漏。

对客服高峰这类明确到达率的业务,应采用开放到达模型。下面的调度器每秒固定发起请求,不因上一个请求变慢而停下:

import asyncio, time

async def open_loop(rate_per_sec: int, seconds: int, payload: dict):
    tasks, loop = [], asyncio.get_running_loop()
    begin = loop.time()
    total = rate_per_sec * seconds

    for i in range(total):
        due = begin + i / rate_per_sec
        await asyncio.sleep(max(0, due - loop.time()))
        tasks.append(asyncio.create_task(probe(payload)))

    return await asyncio.gather(*tasks, return_exceptions=True)

def percentile(values, p):
    xs = sorted(v for v in values if v is not None)
    return xs[min(len(xs) - 1, int((len(xs) - 1) * p))]

image.png

性能门禁必须与答案质量一起看

单纯压低延迟,可能诱导模型更早输出未经工具确认的答案。建议将样本按纯问答、检索、单工具、多工具、超时恢复分桶,分别统计 P50/P95/P99,并同时检查:业务字段完整率、工具成功率、降级正确率、单请求 Token 与外部调用成本。

一个可执行的门禁可以是:纯问答 useful P95 小于 2.5 秒;单工具场景小于 4 秒;工具超时后 1 秒内明确告知用户并提供人工入口;任何场景不得为了抢首字而先承诺后核验。

所以,TTFT 没有过时,只是它只能回答“流什么时候动了”。用户关心的是“什么时候拿到能做决定的信息”。把这两个问题分开,性能测试才真正站到了业务一侧。

相关文章
|
19天前
|
人工智能 NoSQL 测试技术
AI岗位渗透率升至37.56%:2026届秋招,测试开发应届生的准备方式也该变了
2026秋招AI岗位激增47.3%,渗透率达37.56%,但门槛同步升高:简历堆砌AI术语难过关,真能力看项目深度。应届生需夯实测试开发基础,再以RAG、Agent等真实AI测试项目体现工程力——会用AI不值钱,能测AI才稀缺。
|
19天前
|
人工智能 安全 测试技术
AI红队测试是什么:转岗大模型评测的最短路径
本文详解AI红队测试——面向大模型与Agent的安全评测新方向。结合欧盟AI法案落地、前沿安全风险(如Prompt注入、越权调用)及企业工程需求,阐明其非传统渗透测试,而是覆盖对抗诱导、边界守卫与可控性验证的系统性质量工程。为测试工程师提供从自动化能力迁移至AI安全评测的清晰进阶路径。
|
21天前
|
人工智能 监控 测试技术
大促流量一来,大模型服务就卡——推理性能压测
本文揭秘大模型性能测试核心差异:告别传统QPS/RT,聚焦TTFT(首字延迟)、TPOT(逐字间隔)等流式指标。通过真实大促事故(首字延迟从0.8秒飙至15秒),剖析容量规划缺失、KV cache打满、无降级等痛点,并给出阶梯压测、拐点识别、混长文本等实战方法,助你应对AI面试高频题。
|
21天前
|
人工智能 监控 机器人
模型一本正经地胡说八道——幻觉检测与线上监控
本文以真实舆情事故切入,详解大模型幻觉的检测与防控三道工程防线:离线评测、发布门禁、线上监控,强调用faithfulness指标量化“胡说”程度,将幻觉从不可见风险转化为可观测、可告警、可回滚的可控指标。
|
26天前
|
人工智能 机器人 测试技术
改了一行 Prompt,用例全红了——Prompt 回归测试与 CI 门禁
本文探讨AI测试开发核心难题:Prompt变更如何防回归。以真实故障为例,一句“回答尽量简洁”致准确率暴跌25%,暴露Prompt被当文案而非代码的隐患。提出“Prompt即代码”理念,通过版本化、黄金用例集、promptfoo自动化评测与CI门禁四步法,实现变更可追溯、可测试、不可随意上线。
|
1月前
|
人工智能 自然语言处理 Java
RAG系统测试实战:如何验证企业知识库AI助手是否可靠?
近两年,企业纷纷构建基于RAG的AI应用:不训大模型,而是将产品文档、制度流程等内部知识接入,通过检索增强生成实现智能问答。但其质量保障远超传统测试——需覆盖知识库完整性、检索准确性、生成忠实度与答案相关性等多层验证,是AI时代测试工程师的核心新能力。
RAG系统测试实战:如何验证企业知识库AI助手是否可靠?
|
19天前
|
SQL 人工智能 算法
AI岗位渗透率升到37.56%:测试岗正在分成“新旧两种人”
2026秋招AI岗位渗透率达37.56%,测试岗正加速分层:传统执行岗溢价消失,懂AI应用、Agent工程、LLM评估的全栈测开人才需求暴增340%,薪资高30%-50%。转型,刻不容缓。
|
14天前
|
人工智能 安全 测试技术
Agent 上线前,谁来回答“它安全吗”?拆解 Agent Assurance 的三层设计
AI Agent测试已从“答得对不对”升级为“做得对不对”。本文揭示Agent质量保障三层体系:结果验证(查数据库/文件等真实效应)、行为验证(审计工具调用是否越权)、发布验证(识别“无法证实”的风险缺口),强调Evidence &gt; 自述,推动测试成为可信上线的关键门禁。
|
1月前
|
人工智能 算法 测试技术
5年测试开发面试为什么开始考算法?从测试平台到AI质量工程看技术能力变化
近年测试开发面试重心转向数据结构、算法与系统设计,反映岗位正从“测试执行者”升级为“质量工程系统建设者”。尤其面对大模型、AI Agent等不确定性系统,算法能力成为高效调度测试、分析结果、验证智能行为的核心基础。
5年测试开发面试为什么开始考算法?从测试平台到AI质量工程看技术能力变化
|
2月前
|
设计模式 人工智能 安全
从代码生成到需求交付:一个开发 Skill 的工程化实践
腾讯团队提出AI编程新范式:将需求交付拆解为8阶段工程流程,融合项目知识库、自动化工具与质量门禁。虽代码生成率达94%,但核心突破在于把研发经验转化为可执行规则——AI不再仅写代码,而是在严格约束下完成端到端交付。