Multi-Agent的靈活編排之路

本文從 Copilot 3.0 架構中的規劃(Planning)模組出發,結合 DeepSeek R1 的強化學習(GRPO)訓練實踐,深入探討在多智慧體(Multi-Agent)架構下,大模型如何靈活編排多個智慧體,以更好地解決實際問題。

GRPO Trainning Table
背景
1. 業務場景
商家經營Copilot作為一款專業的經營助手,主要服務於商家在日常經營中遇到的各類問題,其核心功能包括:
  • 基礎業務支援:商家入駐、產品簽約、運營工具使用等;
  • 運營服務:對賬結算、資料分析、策略推薦等;
  • 智慧最佳化:關鍵詞配置、banner生成、商品圖片最佳化等;
體驗入口:支付寶APP搜尋“支付寶商家助手”小程式。開啟小程式可以直接體驗經營助手Copilot。核心功能目前僅支援支付寶入駐商家。

從使用者問題解決維度,Copilot需要具備以下核心能力:
1.全網搜尋與自然語言解答
2.經營資料分析與視覺化
3.平臺策略智慧匹配
4.圖片素材生成與最佳化
5.精準使用者群體圈選
2. 問題分析
在總結Copilot2.0框架的侷限性時,我們發現以下核心問題:
  • 單一LLM架構難以平衡業務需求與通用能力;
  • 意圖識別、query改寫、任務規劃等子模組能力受限;
  • 對複雜query的處理效能不足;
基於這些挑戰,我們在CY25對Copilot架構進行了重大升級,推出了3.0版本。該版本採用Multi-Agent架構,透過planning模型實現智慧Agent排程,顯著提升了系統的問題解決能力。
3. Planning的角色
planning更像是去完成一道複雜的排列組合題,在充分理解使用者問題的前提下(上下文),將使用者問題分配給合適的一個或多個專家去解決問題,是同時包括改寫、拆解、分配、生成執行順序等多個環節的複雜任務。對於這樣的複雜任務,我們首先會想到用CoT來提高準確率。CY24的Copilot2.0中的規劃模組,我們首次嘗試了短CoT模式,效果不錯。在經過對比《沒有思考過程》和《有思考過程》的planning準確率後,我們決定延用去年的CoT方式,並且在此基礎上升級模型,顯式地列印模型思考過程,讓使用者理解我們會有多個Agent共同服務他的問題。
舉個例子,如果有三個 Agent(abc),理論上 planning 的分配方案至少有 15 種。再結合使用者問題,給每個專家分配對應的需要解決的問題。
難點
1. 魚和熊掌如何兼得
用過 deepseek r1 深度思考模型的小夥伴都懂,有時候模型一思考起來就 “剎不住車”。思考過程太長,輸出直接卡住;簡單問題也翻來覆去地驗證,說來說去都是車軲轆話。深度思考本來是為複雜問題設計的,可這也導致模型養成了反覆驗證的習慣。我們現在面臨的難題就是,既要保證複雜問題的準確率,又得讓簡單問題的思考過程 “速戰速決”,節省推理成本,提升使用者體驗。
2. 思考過程如何標註
聽說deepseek模型的很多資料是北大中文系的學生標註的,可我們的小二大多不是中文系專業,如何寫出又符合業務又有邏輯性的思考過程?標一段思考過程耗時長,驗收成本也高,真的有必要人工去寫嗎?帶思考過程的資料標註,對於我們合成數據的要求更高。
3. 每次產品迭代,歷史資料都要重新標嗎
業務迭代頻繁,今天可能是5個Agent,明天升級成8個Agent,歷史標註的資料都不能用了嗎?如何在業務變更的情況下,低成本保證模型的迭代時效也很重要。
效果對比
1. 從案例看

1.1. 多agent案例對比

Query
Copilot3.0
Copilot2.0
使用者問題:如何配置搜尋關鍵詞
對比分析:
Copilot3.0的planning模組將使用者問題分配全網搜知識問答和策略推薦專家,即使使用者問的是操作類,也為使用者推薦合適的策略,更方便一鍵操作。預判使用者的預判。
執行計劃:知識問答專家->策略推薦專家
Copilot2.0的意圖直接判別為知識問答,用faq的形式回覆使用者,雖然沒有錯,但是不夠智慧。

1.2. 思考長度對比

Query
GRPO前
GRPO後
推薦
今日資訊
2. 從指標看
GRPO訓練後,推理長度均值由240.29降至93.28(降幅61.2%),長度波動性明顯改善(標準差從77.30降至26.11),分佈更趨集中。
同時,準確率由78.7%提升至86.1%,絕對提升7.4個百分點,相對提升9.4%
同時驗證了GRPO訓練能在保障模型精度前提下,同時提升準確度和思考長度(即推理成本)。
(上面的結果是在標問3217條資料上跑批得到)
解決方案
1. 資料集構造

1.1. 輸入輸出定義

輸入維度
  • 歷史上下文視窗:採用動態滑動視窗(N輪對話)
  • 專家列表:Copilot中支援的Agent能力
  • 資料分析工具列表
  • 產品服務列表
輸出格式
  • 思考過程
  • 規劃結果(補全問題+專家序列+專家處理的問題+執行順序)
<think>好的,我現在需要處理使用者的問題:“檢視經營週報”。首先,根據提供的工具列表,使用者問題屬於其中的一項。因此,這個問題應該由資料分析專家來處理,因為他們負責查詢和分析工具列表中的資料。接下來,檢查是否有其他相關的子問題常要分解,但使用者的問題很明確,所以不需要進一步拆解。最後,確認是否需要其他專家介入,但這裡只需資料分析專家即可。</think><answer>{"補全後的問題""檢視經營週報","plan": [{"專家""資料分析專家","處理問題": ["檢視經營週報"]  }]}</answer>

1.2. 冷啟動資料

使用Deepseek R1套取合成數據(思考過程+規劃結果),篩選長度較短的樣本,用於sft階段的訓練。該階段主要讓模型學會按照特定的格式輸出。

1.3. 人工標註資料

人工標註合成數據(僅規劃結果),用於GRPO訓練。透過人工標註,確保模型在規劃結果上的準確性和一致性,為後續的強化學習提供高質量的訓練資料。
2. 多階段訓練(SFT+GRPO)
如果說sft是應試教育的話,grpo就是素質教育,給模型一個範圍去探索,從更優的回答中找到下一步迭代的方向。sft的訓練我不過多贅述,下面詳細展開GRPO的訓練過程。

2.1. 訓練配置

基座
QwQ-32B
GPU配置
3機24卡A100
引數配置
比較重要的設定是lrbeta,即KL散度的梯度的權重。這兩個引數設定的越大,模型收斂原則上更快,但訓練往往會不穩定。在實際訓練中,請根據是否出現不穩定的震盪情況適當調整這兩個引數。
訓練框架
ModelScope的ms-swift

2.2. 獎勵函式設計

Reward系統主要從三個方向展開,涉及7個不同的reward function,可以根據每部分的重要性進行加權平均。
例如:
Reward = 0.1 * StrictFormatReward + 0.1 * JSONValidReward + 0.1*ThinkLengthReward + 0.1 * ThinkQualityReward + 0.2 * CorrectnessReward + 0.3 * ExpertValidationReward + 0.1 * ProcessingQualityReward
多維度獎勵體系

格式完整性評估
  • StrictFormatReward:正則匹配XML標籤結構有效性;
classStrictFormatReward(BaseReward):    _pattern = re.compile(r"^<think>\n.*?\n</think>\n\n<answer>\n.*?\n</answer>$", re.DOTALL)def__call__(self, completions, **kwargs) -> List[float]:        processed = self.preprocess(completions)return [1.0if p.answer and self._pattern.match(c) else0.0for c, p inzip(completions, processed)]
  • JSONValidReward:校驗JSON結構完整性和欄位合規性;
思考過程評估
  • ThinkLengthReward:限制思考文字長度;
classThinkLengthReward(BaseReward):def__call__(self, completions, **kwargs) -> List[float]:        processed = self.preprocess(completions)        rewards = []for p in processed:try:                length = len(p.think)if min_length <= length <= max_length:                    rewards.append(1.0)else:# 使用S形曲線計算懲罰                    deviation = abs(length - mid)/eps                      reward = 1.0 / (1.0 + np.exp(5*(deviation-0.5)))  # 平滑過渡                    rewards.append(float(reward))except Exception as e:                logger.error(f"Error calculating think length reward: {e}")                rewards.append(0.0)return rewards
  • ThinkQualityReward:關鍵詞過濾機制(如"微信"等敏感詞檢測);
答案准確性評估
  • CorrectnessReward:改寫準確率,多維度評估(語義相似度/覆蓋度);
  • ExpertValidationReward:專家分配準確率;
  • ProcessingQualityReward:規劃準確率,多維度評估(語義相似度/覆蓋度/多樣性);
3. 多工混合訓練
GRPO可以很好的保證模型的泛化能力,對於分配Agent的任務,模型學習的是在給定的列表中選擇更合適的Agent。如果要加新的Agent,那麼可以在原有資料集基礎上增加新增任務的資料。在sft模型的基礎上進行grpo訓練。我們把歷史資料和迭代後的資料混合在一起進行訓練,並不影響模型的效果。在推理時,使用最新的推理prompt就可以滿足迭代的效果。
舉個例子
因為業務變動原本分配給《策略Agent》的問題,需要剝離一部分分給《人群運營Agent》。
ToDo在prompt中的專家列表新增《人群運營Agent》,新增相關訓練資料,與歷史資料混合。
Tips這裡不需要更改歷史資料,因為歷史的Prompt的專家列表沒有《人群運營Agent》,《策略Agent》就是問題的當下最優選擇。
實驗現象
1. 有思考過程

1.1. 直接GRPO

現象:
所有reward func都是從一個較低的值開始震盪,reward最終在0.5-0.6之間收斂。

1.2. 先SFT再GRPO

現象:
1.模型格式遵循、答案質量一開始就是比較高的水平。
2.隨著模型迭代,改寫、專家選擇、規劃reward都在提高。
3.思考長度顯著下降,並最終收斂在 150 左右。
4.reward 最終在 0.9 左右收斂。
2. 無思考過程

先SFT再GRPO

現象:
1.經過GRPO之後,無思考過程的模型能力也可以有一定的提升;
2.模型的平均輸出變長,最後穩定在100token左右;
3.改寫能力一直很弱,可能需要回溯prompt和資料質量。
雲上經典架構serverless版
本方案採用雲上的Serverless架構,原生支援彈性伸縮、按量付費和服務託管,減少企業手動資源管理和效能成本最佳化的工作,同時透過高可用的配置,避免可能遇到的單點故障風險。    
點選閱讀原文檢視詳情。

相關文章