一个AI聊天应用,每次用户提问要先等200毫秒"思考该用哪个模型"——这听起来像个冷笑话,但确实是大多数多模型路由系统的真实写照。
Chymera的开发者最初也踩进了这个坑。他想要的效果很简单:用户打字问"Python怎么写快排",系统自动甩给代码强的模型;问"明天北京天气",直接走带实时搜索的。但第一版方案, latency(延迟)高到让他直接弃坑。
第一版:用AI调度AI,200毫秒全耗在"问路"上
最直觉的做法是什么?再搭一个轻量级大语言模型(LLM),专门负责"阅读理解"用户问题,然后贴标签分类。开发者试了,秒删。
问题很赤裸:用户问一句话,系统要先发一次API调用给分类模型,等它返回"这是coding类",再真正去调代码模型。两次网络往返,200-500毫秒就这么没了。用户还没看到第一个字,时间已经溜走大半。
「The latency was unacceptable — you're adding a full round trip before the actual answer even starts.」开发者原话。
这像个餐厅里专门雇个人,先听客人点菜、再跑去后厨传话。客人饿得前胸贴后背,菜还没下锅。
第二版:7行JavaScript,零延迟硬分类
弃坑后的替代方案朴素到有点反直觉:纯规则,零模型,本地跑。
开发者用原生JavaScript写了个分类器,直接扫描用户输入的关键词、句式、长度。没有API调用,没有推理开销,执行时间以微秒计,对用户而言就是"零延迟"。
分类逻辑拆成7个档位:闲聊(chitchat)、编程(coding)、推理(reasoning)、创意(creative)、搜索(search)、事实查询(factual)、通用(general)。
代码结构很直白:先把输入清洗成小写,按空格切词,然后逐层过滤——
第一层抓闲聊:5个词以内,且命中预设的寒暄词库(比如"你好""谢谢""再见"),直接归类chitchat。
第二层抓实时搜索:出现"今天""现在""2024""2025"等时间信号,或者"最新""股价""天气"这类强时效词,立刻标记search。开发者特意把这条前置,因为"时间敏感"的优先级高于一切。
第三层按能力域分流:检测到"代码""函数""报错"等信号进coding;"证明""推导""逻辑"进reasoning;"写首诗""故事""风格"进creative;长句+事实词进factual。都没命中就丢给general兜底。
关键设计在于顺序。开发者测试发现,关键词匹配的顺序比词库本身更重要。比如"2025年Python趋势"同时触发了年份(search信号)和Python(coding信号),但时间信号前置确保它被正确路由到带实时搜索能力的模型,而不是一个训练数据截止于2024年的代码模型。
为什么不用AI做这件事?
这个问题本身有点讽刺:我们正处在一个用AI解决一切问题的狂热期,但有时候最便宜的方案反而是不用AI。
开发者的取舍很清晰。意图分类是个边界相对明确的任务——用户问的是哪类问题,往往有关键词可循。规则引擎在这类场景下的准确率和速度,足以覆盖绝大多数case,而成本是模型方案的千分之一。
更重要的是用户体验的"首字延迟"。大语言模型的流式输出(streaming)已经让用户对"思考中"的等待有一定容忍度,但如果在流式输出开始前还要额外等一次分类推理,感知上的卡顿会被放大。
Chymera最终的路由策略也很有意思:闲聊类问题走响应最快的小模型;coding任务交给Llama 3.3 70B(通过Groq部署,速度极快);多步推理用Qwen QwQ 32B;需要实时搜索的走Gemini 2.5 Flash。没有全能冠军,只有专项最优解。
手动切模型的时代该结束了吗?
ChatGPT、Claude、Gemini都支持手动切换模型,但开发者观察到一个被忽视的用户成本:「The mental overhead of "hmm, should I use GPT-4o or o1 for this?" is friction that shouldn't exist.」
普通用户不背模型参数表。他们不知道o1-preview适合数学推理,不知道Claude 3.5 Sonnet的代码能力被很多人高估了。强迫用户做选择,等于把产品的技术债务转嫁成用户的认知负担。
Chymera的规则分类器当然会误判。一个故意用闲聊语气写的代码问题("嘿, buddy,帮我看看这行Python啥意思")可能被错分给chitchat。但开发者似乎接受这种trade-off:边缘case的准确率损失,换取主流场景的速度和简洁。
这套方案开源在GitHub上,代码量小到可以塞进一条推文。有人评论说"这太简单了",开发者回复说"简单是feature,不是bug"。
当行业都在堆算力、拼参数、卷上下文长度的时候,一个7行JavaScript的分类器能不能撑起下一代AI交互的底层逻辑?或者说,用户真的在意背后用了几个模型,还是只在意第一个字什么时候出现?
热门跟贴