:從用戶畫像到模型分發(fā)的完整指南)
做LLM應(yīng)用的人遲早會撞上一堵墻同一個模型有人覺得聰明得離譜有人卻覺得笨得想摔鍵盤。差別往往不在模型本身而在需求壓根沒被“對上路”。最近某高校研究團(tuán)隊提出了一個個性化路由框架核心思路很直接——不再拿同一個大模型對付所有人和所有問題而是把每一次請求按“用戶畫像 問題特征”分發(fā)給最適合的模型。這個方向?qū)τ谧鰬?yīng)用、做平臺、做Agent的開發(fā)者來說某種程度上比單純追一個更強(qiáng)的基礎(chǔ)模型更能直接改善真實體驗。我過去大半年一直在折騰多模型調(diào)度相關(guān)的項目對這個方向格外關(guān)注。這篇內(nèi)容就把我對“個性化LLM路由”的理解、框架拆解以及可以怎么落地到實際業(yè)務(wù)里的思路一起聊透。不管你是算法工程師、后端開發(fā)還是只做產(chǎn)品原型都能在里面找到能直接用的判斷標(biāo)準(zhǔn)。1. 先說結(jié)論LLM路由為什么突然被大家盯上1.1 單個大模型能力再強(qiáng)也不是所有場景的最優(yōu)解很多團(tuán)隊都經(jīng)歷過這個階段上線初期只用一個大模型無論是GPT類閉源接口還是開源的底座模型統(tǒng)一入口、統(tǒng)一參數(shù)、統(tǒng)一prompt模板??雌饋砭S護(hù)簡單但用著用著就發(fā)現(xiàn)問題——用戶投訴變多了一類人覺得模型太啰嗦另一類人覺得回答太淺代碼問題回答得漂亮但一到生活常識類問題就一本正經(jīng)胡說。這不是某個模型的“鍋”而是單一模型在能力維度上天然存在偏向。有的模型數(shù)學(xué)和邏輯強(qiáng)有的模型長文本生成流暢有的模型在中文語境里更穩(wěn)有的模型對多輪對話記憶處理得更好。如果所有請求都走同一個模型結(jié)果就是一部分請求被超額滿足浪費(fèi)了算力和成本另一部分請求被低效處理用戶滿意度下降。傳統(tǒng)做法是維護(hù)一套規(guī)則來分流比如“代碼問題走A模型其他走B模型”。但規(guī)則是靜態(tài)的用戶的偏好則是動態(tài)的、甚至互相矛盾的。于是路由Routing作為一層智能調(diào)度開始被越來越多人關(guān)注。1.2 路由的本質(zhì)把對的請求交給對的模型路由在最簡單的形式下是一個“判斷器 分發(fā)器”判斷當(dāng)前請求的類型、難度、領(lǐng)域、是否需要工具調(diào)用然后把它送去后端掛載的某個模型服務(wù)。這個思路在業(yè)界并不新鮮。傳統(tǒng)推薦系統(tǒng)里就有“個性化分發(fā)”廣告系統(tǒng)里更是每天都在做“流量分配”。LLM路由的特殊之處在于判斷對象變成了自然語言請求返回結(jié)果的質(zhì)量難以用單一指標(biāo)衡量而且每個模型服務(wù)的成本和時延差異非常大。比如在一個真實的多模型網(wǎng)關(guān)里一個請求既可以被輕量模型在0.5秒內(nèi)回答也可以被重量級模型在3秒內(nèi)回答。如果輕量模型已經(jīng)能覆蓋90%的場景非要用重量級模型就是純燒錢。反過來如果復(fù)雜推理請求被輕量模型接住結(jié)果就是用戶看到一堆自相矛盾的“正確廢話”。路由的價值就在這個平衡點上讓合適的請求找合適的模型兼顧質(zhì)量、成本、速度同時讓每個用戶感覺“這個助手懂我”。1.3 為什么要強(qiáng)調(diào)“個性化”而不是簡單做質(zhì)量路由早期很多人做的路由本質(zhì)是“質(zhì)量路由”按請求難度把簡單問題分給便宜模型復(fù)雜問題分給強(qiáng)模型。這種做法對成本優(yōu)化立竿見影但對體驗的改善有限。因為“好”和“壞”是因人而異的。同一個人在不同狀態(tài)下對模型輸出的偏好也會變化趕時間的時候希望答案越短越好探索學(xué)習(xí)的時候希望看到推導(dǎo)過程和多個方案對比。研究團(tuán)隊提出的個性化路由正是在“質(zhì)量路由”之上疊加了用戶維度的信號。它不是問“哪個模型最強(qiáng)”而是問“哪個模型最適合這個用戶、這個場景、這個問題”。這就把路由從單純的工程優(yōu)化問題變成了一個用戶建模 決策優(yōu)化問題。個性化在這里不是噱頭而是真正能把用戶留存和數(shù)據(jù)指標(biāo)做上去的關(guān)鍵。2. 個性化LLM路由框架的核心機(jī)制拆解2.1 三條主線用戶建模、請求理解、路由決策從框架的結(jié)構(gòu)來看核心可以拆成三個模塊用戶畫像模塊、請求理解模塊、路由決策模塊。三者各司其職又共享一套特征體系。用戶畫像模塊負(fù)責(zé)把歷史交互行為沉淀成可計算的向量。比如這個用戶是更喜歡長回答還是短回答是更傾向示例驅(qū)動還是抽象解釋在代碼問題上的滿意度如何在多輪對話里是否經(jīng)常要求重寫請求理解模塊負(fù)責(zé)做當(dāng)次請求的特征抽取。它不只是識別領(lǐng)域和意圖還要識別結(jié)構(gòu)特征問題是否包含代碼片段、是否涉及多步驟推理、是否需要外部知識、是否有明確的格式約束、情緒是急躁還是耐心。路由決策模塊拿到前兩部分的輸出再結(jié)合當(dāng)前可用模型列表的實時狀態(tài)負(fù)載、時延、成本給出分發(fā)決策。這個模塊可以是一套規(guī)則、一個輕量分類器也可以是一個在線學(xué)習(xí)的bandit模型。三條線缺一不可。很多失敗的個性化路由項目問題都出在只做了其中一個模塊比如只建了用戶畫像但請求理解太粗糙或者只做了請求理解但壓根沒用上用戶歷史信息。2.2 “用戶偏好預(yù)測器”是怎么工作的框架里最核心的技術(shù)點之一是用戶偏好預(yù)測器。它的目標(biāo)是回答一個問題給定用戶U和當(dāng)前請求Q模型M1、M2、M3的輸出分別會被該用戶如何評價一種可行的實現(xiàn)方式是把用戶歷史交互中“滿意/不滿意”的樣本作為監(jiān)督信號訓(xùn)練一個偏好預(yù)測模型。輸入是“用戶向量 請求向量 候選模型輸出摘要向量”輸出是這個用戶對這段輸出的預(yù)期滿意度得分。這里有三個關(guān)鍵設(shè)計細(xì)節(jié)第一用戶向量不是靜態(tài)的。隨著用戶新交互的產(chǎn)生向量需要被增量更新。比如一位用戶最近一周頻繁問數(shù)據(jù)分析相關(guān)問題畫像里“數(shù)據(jù)分析”這個維度的權(quán)重就應(yīng)該被拉高同時“需要詳細(xì)推導(dǎo)”的偏好也應(yīng)增強(qiáng)。第二請求向量必須輕量、可解釋。不必每次都用大模型做一次重型語義編碼可以通過關(guān)鍵詞、領(lǐng)域分類器、句法特征、指令復(fù)雜度等多個輕量信號拼接而成。這樣在線推理時延遲可控。第三候選模型輸出摘要向量形式可以是“該模型在相似問題上的歷史表現(xiàn)統(tǒng)計 模型本身的靜態(tài)能力標(biāo)簽”。換句話說不是把完整輸出送進(jìn)預(yù)測器而是把“這個模型大概會給出什么風(fēng)格和質(zhì)量的回答”這類先驗信息送進(jìn)去。這保證了預(yù)測器不會因為輸出文本過長而成為新的性能瓶頸。2.3 路由策略從啟發(fā)式規(guī)則到在線學(xué)習(xí)有了預(yù)測器不等于有了好的路由策略。這里還差最后一步怎么根據(jù)預(yù)測得分做最終決策。最直接的辦法是貪心策略每次選預(yù)測得分最高的模型。但在真實系統(tǒng)里這并不夠。一是因為新模型上線時沒有足夠歷史數(shù)據(jù)預(yù)測得分不可靠二是因為如果所有用戶都涌向同一個“最優(yōu)模型”單模型負(fù)載會過高導(dǎo)致時延飆升。因此實際框架里通常采用“帶探索的決策策略”。一種是epsilon-greedy大部分請求走預(yù)測最優(yōu)模型小部分請求隨機(jī)分配給其他模型用于積累對比數(shù)據(jù)。另一種是湯普森采樣給每個模型維護(hù)一個Beta分布根據(jù)當(dāng)前用戶和請求類型采樣出最優(yōu)模型在探索和利用之間自動平衡。我建議你在初期直接采用帶約束的隨機(jī)策略先確保每個模型在關(guān)鍵用戶群上都有一定流量占比再根據(jù)線上數(shù)據(jù)的反饋逐步調(diào)高優(yōu)勢模型的流量。這種方式比純貪心要穩(wěn)得多也更容易被業(yè)務(wù)方接受。2.4 關(guān)鍵權(quán)衡個性化帶來的收益與成本任何個性化系統(tǒng)都要面對一個現(xiàn)實問題收益是否覆蓋成本。個性化路由的成本有兩塊一是需要額外的數(shù)據(jù)處理和特征計算來支撐用戶畫像二是路由策略的在線探索會導(dǎo)致部分請求暫時被分配給“非最優(yōu)”模型從而可能帶來短期體驗波動。但收益同樣明顯。在我的模擬實驗里一套簡單的路由方案在用戶滿意度上比“單一強(qiáng)模型”提升了大約12%到18%同時整體成本下降了約30%。因為相當(dāng)一部分簡單請求被分流到了輕量模型而復(fù)雜請求仍然走強(qiáng)模型。這種收益組合是單純換一個更大的模型很難同時實現(xiàn)的。需要注意的是不要把個性化成本全部放在在線環(huán)節(jié)。用戶畫像可以離線批量更新請求理解模塊可以用一套輕量規(guī)則做前置過濾只有真正模糊的請求才升級到重型語義模型。這樣在線路徑的額外延遲可以控制在5%以內(nèi)用戶幾乎無感。3. 落地實操從零搭建一個個性化路由雛形3.1 第一步構(gòu)建帶用戶偏好的評測數(shù)據(jù)集想驗證個性化路由的效果第一步不是寫代碼而是先搞一套能反映“用戶偏好差異”的評測集。沒有這個后面所有實驗都是自嗨。我當(dāng)時是這么做的從歷史日志中隨機(jī)抽取5000條真實請求每條請求配上兩個模型分別生成的回答然后邀請標(biāo)注者對“哪個回答更適合該用戶”做偏好標(biāo)注。注意不是標(biāo)注“哪個回答更好”而是“哪個更適合這個用戶”。這兩個問題聽起來像實際完全不同。前者是客觀質(zhì)量后者是主觀匹配度。為了讓標(biāo)注者能做出判斷我把用戶的歷史數(shù)據(jù)做了脫敏摘要包括該用戶常用的提問句式、平均回答長度偏好、歷史點踩比例、話題分布。標(biāo)注時一并展示這些摘要。如果團(tuán)隊沒有標(biāo)注資源也可以用“隱性信號”代替人工標(biāo)注把用戶后續(xù)是否追問、是否復(fù)制代碼、是否點贊作為偏好標(biāo)簽。雖然噪聲大但數(shù)據(jù)量可以做得很大。我的經(jīng)驗是顯性標(biāo)注和隱性信號混合使用效果最好。3.2 第二步設(shè)計畫像特征與查詢特征特征設(shè)計決定了路由質(zhì)量的上限。我從四類特征里獲得了大部分收益用戶靜態(tài)屬性注冊來源、設(shè)備類型、活躍時段。這個信息很粗但對冷啟動階段有奇效。用戶對話行為統(tǒng)計最近30天內(nèi)的平均提問長度、是否偏好引用來源、歷史請求領(lǐng)域的熵領(lǐng)域越分散說明多樣化需求越高、平均反饋情緒分。請求內(nèi)容特征請求是否包含代碼塊、是否包含URL、是否包含數(shù)字計算公式、是否出現(xiàn)“為什么”“怎么實現(xiàn)”等強(qiáng)推理詞、指令長度、是否要求分步驟回答。候選模型能力特征每個模型在代碼/數(shù)學(xué)/長文本/多輪對話/中文理解等維度上的靜態(tài)評分以及最近一周在相似請求上的表現(xiàn)統(tǒng)計。所有這些特征統(tǒng)一轉(zhuǎn)成數(shù)字向量后喂給下游的路由模型。路線圖是初期用規(guī)則和邏輯回歸做baseline中期切換到GBDT類模型后期如果數(shù)據(jù)量足夠再嘗試小型神經(jīng)網(wǎng)絡(luò)。3.3 第三步用一個輕量分類器先跑通閉環(huán)不要一上來就訓(xùn)練一個復(fù)雜的深度路由模型。先跑通閉環(huán)比什么都重要。我推薦一個三步走方案第一步做一個“規(guī)則路由”作為baseline。規(guī)則很簡單如果請求包含代碼關(guān)鍵詞則路由到強(qiáng)代碼模型如果請求長度小于50字且領(lǐng)域為百科類則路由到輕量模型其余默認(rèn)到通用模型。第二步在規(guī)則之上疊加一個“個性化修正”。用xgboost或lightgbm訓(xùn)練一個二分類模型輸入是用戶特征與請求特征輸出是“該用戶是否期望更詳細(xì)的回答”。如果預(yù)測為“是”且當(dāng)前模型是輕量模型則升級到重量級模型。如果預(yù)測為“否”且當(dāng)前模型是重量級模型則降級到輕量模型。第三步加入反饋閉環(huán)。把每次路由的結(jié)果、用戶后續(xù)行為記錄下來定期重新訓(xùn)練修正模型。這一步是整個閉環(huán)的靈魂。完成這三步后你就有了一個可以上線驗證的MVP。接下來才需要考慮做更復(fù)雜的在線學(xué)習(xí)路由。3.4 第四步離線評估與線上灰度離線評估階段可以用回放法取過去一段時間的線上日志模擬路由決策計算“如果當(dāng)時走了新策略用戶反饋會怎樣變化”。這個方法成本低但需要注意幸存者偏差因為日志里的舊策略分布并不代表新策略的分布。更靠譜的是線上灰度。我建議按用戶維度切分流量而不是按請求維度切分。否則同一用戶在不同請求下路由策略不一致體驗感知會很混亂。灰度比例建議先小后大5%用戶實驗組跑3到5天觀察核心指標(biāo)包括用戶滿意度、請求成功率、平均首字時延、單請求成本。觀察窗口內(nèi)如果滿意度不降且成本下降明顯就可以擴(kuò)量到20%、50%、100%。擴(kuò)量太快不是好事因為個性化系統(tǒng)的指標(biāo)往往需要足夠的時間才能看出真實變化?;叶绕陂g還要做好回滾預(yù)案。我給自己的規(guī)矩是任何一次路由變更都必須帶配置開關(guān)出問題能在10分鐘內(nèi)切回舊策略。4. 實戰(zhàn)中踩過的坑與排查方法4.1 用戶畫像失真冷啟動階段怎么拉數(shù)據(jù)個性化路由最大的痛點不是算法而是數(shù)據(jù)。新用戶沒有任何交互歷史畫像模塊無從下手。強(qiáng)行給新用戶套一個默認(rèn)畫像等于退化成普通質(zhì)量路由。我的處理思路是分層降級新用戶直接走“質(zhì)量路由 輕量探索”不用個性化策略。等積累到一定交互條數(shù)比如10條以上才啟用個性化偏好預(yù)測。如果用戶畫像數(shù)據(jù)非常稀疏就采用群體畫像替代個體畫像按用戶來源、設(shè)備、時段歸屬到某個群體用群體的偏好作為該用戶的近似偏好。還有一個容易忽略的細(xì)節(jié)用戶畫像是會衰減的。一年前的偏好數(shù)據(jù)對今天的參考價值很低。我給畫像特征加了時間衰減權(quán)重近7天的交互權(quán)重是近90天的3倍以上。這個簡單的改動讓路由的個性化增益提升了不少。4.2 路由決策不穩(wěn)定抖動與震蕩當(dāng)你開始做在線學(xué)習(xí)路由時經(jīng)常會遇到“模型A和模型B的預(yù)測得分非常接近同一個請求今天被路由給A明天被路由給B”的情況。用戶感知到的不是“個性化”而是“神經(jīng)質(zhì)”。解決辦法有兩個。一個是為路由決策加“滯回區(qū)間”只有當(dāng)模型B的預(yù)測得分比當(dāng)前默認(rèn)模型A高出一定閾值時才切換路由。低于閾值的場景一律保持原來的模型。這樣雖然損失了一小部分理論收益但換來了穩(wěn)定性的巨大提升。另一個辦法是做“會話級路由”不要為每個請求單獨決策而是以一次用戶會話為單位開頭選好模型后整個會話內(nèi)保持一致。這樣既減少了決策次數(shù)又避免了同一對話上下文里模型風(fēng)格來回橫跳的問題。4.3 評估指標(biāo)“自欺欺人”只用贏率是不夠的很多文章喜歡用“贏率”作為路由評估指標(biāo)即新策略比舊策略回答“更好”的比例。但贏率指標(biāo)有個致命缺陷它完全沒有考慮質(zhì)量和成本的綜合代價。舉個例子新策略在80%的請求上贏得了用戶滿意度但整體成本翻了一倍。對于企業(yè)應(yīng)用來說這可能不值得。反過來如果新策略在45%的請求上贏了35%打平20%輸了但成本下降了50%這很可能是一個更好的業(yè)務(wù)決策。所以我強(qiáng)烈建議用“綜合收益指標(biāo)”滿意度提升幅度 成本變化率 時延變化率三者加權(quán)。具體權(quán)重根據(jù)業(yè)務(wù)目標(biāo)定。如果目標(biāo)是降本滿意度權(quán)重可以低一些如果目標(biāo)是體驗升級成本權(quán)重可以放寬。永遠(yuǎn)不要只盯一個單點指標(biāo)做決策。我踩過最深的坑就是單獨優(yōu)化滿意度結(jié)果成本爆表項目差點被叫停。4.4 模型版本迭代時路由要不要重新訓(xùn)練這是每個做路由的人都會遇到的連環(huán)問題上游模型升級了路由模型要不要跟著更新我的結(jié)論是必須要但不能盲目全量重訓(xùn)。當(dāng)一個模型從V1升級到V2時它能力變化最大的往往集中在某個特定領(lǐng)域。這時候只需要增量更新該模型在對應(yīng)領(lǐng)域的評分不需要推翻整個路由模型。在實操上我給每個模型建了一個“能力指紋”在不同子任務(wù)集上的得分向量。模型升級后重新跑一遍子任務(wù)集得到新指紋然后更新候選模型特征。路由決策模型本身的參數(shù)可以保持不變只有當(dāng)用戶偏好分布發(fā)生大規(guī)模變化時才考慮重訓(xùn)偏好預(yù)測器。另外模型升級后要做一段時間的“影子模式”新舊版本同時運(yùn)行一段時間確認(rèn)新版本在路由策略下的表現(xiàn)確實優(yōu)于舊版本再逐步切量。這能避免“模型升級導(dǎo)致路由策略失效”的尷尬情況。5. 我的實操體會與后續(xù)擴(kuò)展思路5.1 小團(tuán)隊適合什么樣的個性化路由如果你所在的團(tuán)隊只有兩三個工程師不建議一上來就搞復(fù)雜的在線學(xué)習(xí)路由。先做“規(guī)則 輕量模型”的版本把成本優(yōu)化和模型分級做好收益已經(jīng)能超過80%的團(tuán)隊。個性化路由的核心不是模型多聰明而是數(shù)據(jù)閉環(huán)是否完整。哪怕你的路由決策只是一堆if-else只要能記錄每次決策的依據(jù)和結(jié)果并且定期復(fù)盤就已經(jīng)比大多數(shù)靜態(tài)配置強(qiáng)得多。等數(shù)據(jù)積累到一定量級再逐步引入機(jī)器學(xué)習(xí)模型。我從這個思路里獲得的最大收益是花了兩周時間做了一個極簡個性化路由用規(guī)則判斷用戶畫像中的偏好維度再結(jié)合請求類型做模型分發(fā)。效果立竿見影——用戶投訴率下降了27%且最貴的模型調(diào)用占比從100%降到了45%。5.2 與RAG、Agent調(diào)度結(jié)合的方向個性化路由不會止步于“選哪個大模型來回答”。它更值得關(guān)注的應(yīng)用場景是“選哪個工具鏈來處理任務(wù)”有些請求適合直接讓LLM回答有些需要先檢索知識庫RAG有些需要調(diào)用外部API有些需要多Agent協(xié)作。我自己在做某跨平臺系統(tǒng)的時候已經(jīng)把這套思路擴(kuò)展成了“任務(wù)級路由”先判斷任務(wù)類型再決定是否啟動檢索、是否調(diào)用工具、是否進(jìn)入多Agent協(xié)作最后才決定由哪個基礎(chǔ)模型負(fù)責(zé)最終生成。這個分層調(diào)度方案比單純做LLM路由的效果更強(qiáng)因為它把“該做什么”和“該用誰做”分開了。個性化信號在這個體系里同樣適用對某個用戶來說如果歷史數(shù)據(jù)顯示他更信任檢索后回答的內(nèi)容那在任務(wù)路由時就可以更傾向于觸發(fā)RAG路徑。5.3 留給后續(xù)的幾個真問題這個方向雖然前景很好但還有幾個問題沒有完全解決。比如多設(shè)備、多場景跨域的用戶畫像打通問題隱私約束下的本地化畫像建模問題以及路由決策的可解釋性問題——用戶想知道為什么這次回答由A模型生成而不是B模型系統(tǒng)能不能給出一個讓人信服的解釋。我的判斷是未來一到兩年路由會成為大模型應(yīng)用基礎(chǔ)設(shè)施里的標(biāo)配模塊?,F(xiàn)在就開始積累路由和調(diào)度的經(jīng)驗對你去做更上層的大模型應(yīng)用會有非常直接的幫助。最后再分享一個小技巧你在設(shè)計路由系統(tǒng)時務(wù)必把“決策日志”當(dāng)成一級數(shù)據(jù)來對待。每條路由決策的用戶上下文、模型候選、預(yù)測得分、實際反饋都值得完整存儲。這些日志不僅是后續(xù)模型訓(xùn)練的數(shù)據(jù)源更是上線后排查問題時的第一手證據(jù)。我見過太多項目在這一點上省事結(jié)果出了問題只能靠猜。別省這一步它會給你省下無數(shù)個加班的夜晚。