Charlie Tang Hoong

案例 03 · 精选案例

不占住连接,也能扛住 AI 助手的流量

重构 AI 客服助手的请求路径:一次对话改为进队列并由前端轮询,而不是占住一条同步连接 —— 已交付并合并。

角色
Senior Web Developer
能力
应用 AI · 架构 · 可靠性
领域
带 AI 客服助手的生产环境电商平台
变更
同步请求路径 → 队列 + 前端轮询
A request handed to a queue instead of holding a connection openBefore: the browser holds one connection open to the model for tens of seconds, so a slow answer can exceed a gateway timeout and the next customer waits behind it. After: the request is enqueued, a worker calls the model, and the browser polls for the result, so nothing holds a connection open.BEFOREBrowserModelone connection held open · tens of secondsA slow answer can exceed a gateway timeout — and while it runs,the next customer waits behind it.AFTERBrowserQueueWorkerModelbrowser polls every few seconds — nothing is held open
Anonymised. No client name, no industry, no real endpoints.

背景

一个线上电商平台,除了既有的业务流程之外,还有一个服务客户的 AI 客服助手。

问题与模糊之处

每一个 LLM 产品的中心都有一个结构性的错配:一次模型回合动辄数十秒,而一个网页请求在抵达模型的路上会经过的所有东西 —— 网关、防火墙、代理 —— 它们的超时预算都是为毫秒级请求设计的。所以同步设计会同时有两种失效模式。明显的那一种是:一个慢回答可能超过路径上某一处的上限。被忽略的那一种是:它跑的时候占住了那条路径,于是下一位客户排在后面等。从外面看,这两种一模一样:AI 很慢。而两者都不是模型的问题。

我的角色

我参与公司的 AI 客服系统 —— 知识结构、响应路由、工具调用、会话管理、评测、安全控制与转人工 —— 并且设计并交付了这里描述的请求路径变更。平台本身的生产环境电商系统也由我维护。

这是在职期间刻意采取的公开层级用词。内部记录支持更强的动词,但公开页面用的是这一版。

需求发现

有用的问题不是「怎么让模型更快」,而是「这条路径上有什么东西预期请求会很快结束?而当它没有结束的时候,其他人会怎么样?」回答这个问题,就把题目从模型调优换成了连接架构。

架构与取舍

不再同步处理。请求进队列;浏览器每隔几秒轮询一次,准备好就渲染出来。没有任何东西占住连接,所以路径上的超时上限不再支配一次对话,客户是被并行服务的,而不是彼此排队。代价是客户端稍微复杂一点、以及一个看得见的等待状态 —— 这个交换我会再做一次,因为另一个选择是让它安静地、而且不公平地失败。

实现与集成

在平台既有框架上的 queue workers,搭配前端轮询,以及模型调用外围的重试与错误处理。另外带进两项控制:闲置会话会到期 —— 安静下来的对话会被提示一次,没有响应就关闭并释放它占住的资源;以及较轻的请求路由到较小的模型层级,而不是每一次调用都打最大的模型 —— 这是不牺牲重要回答质量的前提下,最简单的推理成本控制。

生产环境控制

模型调用外围的重试与错误处理;会话生命周期管理;以及一套「设计进去而不是事后加上」的评测思路 —— 包含一次回答需要检索并合并多项信息时的正确性,以及在对抗性与社交工程探测下的行为。那套评测是正在建立中,不是已经上线的加固 —— 我描述的是一个设计,不是一个结果。

成果

这次重构已完成并合并进平台。这项工作不公布任何性能数字,未来也不会 —— 我没有一个能诚实宣称的生产环境结果。

可复用的经验

当一个 AI 功能被说成「慢」,先量路径,再去动模型。以我的经验,模型做的还是它一直在做的事,是它周围的架构改变了使用者的体验 —— 而修法几乎永远是:不要再占住连接。

证据待补

客户那套助手的任何东西都不发布 —— 知识结构、提示词、评测集、任何性能数字,都不发布。上面描述的机制是通用的,不属于客户;用我自己的内容做的独立实现是另一套系统,与该雇主的业务无关。

这背后的方法

聊聊吧

Forward Deployed Engineer · Forward Deployed AI Engineer · Applied AI Engineer · Solutions Engineer · Customer Engineer · AI Solutions Architect · Technical Delivery Lead

常驻马来西亚雪兰莪。可接受巴生谷一带的客户驻点(含长期驻点),以及新加坡与亚太区的项目。