ADK Sub-agent STOP 錯誤:停用 Thinking Mode
ADK Sub-agent STOP 錯誤:停用 Thinking Mode
使用 Gemini 2.5 Flash 模型時,若 sub-agent 啟用思考模式(Thinking Mode),有時會導致該 sub-agent 回傳空的 content,觸發 ADK 的 STOP 錯誤,整個對話流程中斷。
錯誤現象
- Sub-agent 被 transfer 進來後無回應
- Log 顯示 finish_reason 為
STOP但 content 為空 - 問題只在 sub-agent 上出現,root agent 不受影響
根本原因
Gemini 2.5 Flash 的思考模式會在回應中產生內部推理(thinking tokens),但在 ADK 的 multi-agent 架構中,sub-agent 的思考輸出有時無法正確轉換為可回傳的 content,導致空回應。
解決方案:對 Sub-agent 停用思考模式
在建立 sub-agent 時,透過 GenerateContentConfig 將 ThinkingBudget 設為 0:
1 | thinkingBudget := int32(0) |
⚠️ Root agent 不需要停用,只需對有問題的 sub-agent 套用即可。
關鍵重點
- 問題只發生在 sub-agent,root agent 不受影響
ThinkingBudget = 0停用思考模式,不影響回應品質- 此為 Gemini 2.5 Flash 特有問題,其他模型(如 Gemini 1.5)不需處理
- 若日後 ADK 修復此問題,可移除此設定讓 sub-agent 恢復思考模式
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 Kenny's Blog!