题目重点:用户进入评论框时生成三条相关建议,在现有特征库、LLM网关、翻译、排名和限流组件上优化接受率、延迟与token成本。
题意与假设
这道练习题保留了面经中值得训练的核心约束,并将需要澄清的条件单独列出。现场拿到变体时,先和面试官确认这些条件。
- 日请求20M是练习给定数字,平均20,000,000/86400≈231.5QPS;峰值、重试和取消另算,不能多加一个0。训练设峰值10倍、P95端到端500ms仅作预算示例。
- 现有组件包括实时user/post embedding库、版本化LLM gateway/回测/streaming、缓存、翻译、rank、rate limit和traffic shaping。缓存缩写未明确含义,先确认读写与失效能力再用。
- 用户只是focus评论框,不保证会发言;建议不得代替用户自动发布。隐私帖子权限、语言偏好和安全政策需在服务端检查。
解题路线
- 触发先去抖与权限校验,传postVersion/requestId/language与有限用户偏好。先读帖子可复用的三候选缓存;未命中走特征检索、短上下文生成、多候选去重、安全过滤、relevance rank,再返回三条。不要为同一用户反复focus重新付费生成。
- 缓存按postVersion+language+model/prompt/policyVersion键;普适候选可共享,敏感个性化建议不能跨用户缓存泄露。权限与删除即时校验,过期内容不能只靠TTL等待。singleflight合并同帖子并发miss,热点post异步预生成。
- 模型路由从轻模型baseline开始,复杂/低质量样本才升级重模型;限制输入内容摘要、最大输出token和候选数量。固定可用短语降级比超时空白更可靠,但不能把模版冒充“理解所有语言”。
- 五十语言优先原语言生成与分组评估;低资源语言可翻译到pivot再生成/回译,成本和往返延迟计入预算,保留语气/文化/实体。翻译与安全过滤都可能漏掉暗语,语言专家抽检和用户反馈形成标签。
- 已有gateway版本与backtest用于同样本离线对比,rank按相关性/多样性/安全约束排序;streaming不能把未经安全检验的半句直接展示。短三候选若完整输出成本很小,先完成审核再展示更简单。
- A/B按用户随机,衡量展示后被选择/编辑/最终发布的漏斗、用户评论总增量和负反馈;增加点击可能只是替代自己输入。记录exposure实际可见、model/prompt版本,监测语言分组、P95、token/成功发布与举报守护指标。
手动走一遍
平均231.5QPS,若缓存命中80%,生成流量约46.3QPS;每次输入300/输出60token,平均生成约13,889输入token/秒、2,778输出token/秒。单次链路预算例权限/缓存30ms、特征40、生成250、安全rank80、网络50,总450ms;实际P95不能把独立阶段P95简单相加当测量结果。
规模与取舍
月token预算=请求量×missRate×(输入/输出token),再按实际模型单价分别计费;重试、回译和升级比例需另加。缓存命中路径与miss路径的延迟分布不同,需真实load test与端到端追踪,不宣称以上假设就是生产SLA。
易错点与追问
容易失分的边界
- 只算20M平均QPS而不算峰值和模型耗时,无法得到GPU并发与排队预算。
- 模型先stream不当文字再撤回不能算成功过滤;用户已经看见。
- 缓存忽略postVersion/权限/语言会输出过时或不可见内容。
继续深挖
- 如何验证低成本?按真实流量日志重放路由,核对cache命中、token、升级/重试,观察成本与接受率joint curve。
- 采用率低先辨别建议不相关、语气不像本人、延迟错过时机或用户本就不想评论;分漏斗而非只换大模型。
- focus预生成导致大量unused候选,如何平衡早生成与浪费?根据意图概率选择预取,单独记录unused spend。
