在前兩天的進度中,我們分別驗證了 Agent 的兩項核心能力:Day7的DuckDuckGo即時搜尋,以及Day8的私有知識庫(RAG)。今天我們要進行混合壓力測試:設計一道複合問題,測試Agent能否同時調用「知識庫」與「搜尋工具」。
測試情境與題目設計
為了驗證複合能力,我請AI幫我設計一道能同時測試「內部規範」與「即時外部資料」的題目:
「請告訴我專案內部關於資料庫密碼的規範是什麼?另外,請幫我上網搜尋 Spring Boot 目前最新釋出的 GA 穩定版本是幾號?」
預期中,Agent應該要完成兩件事:
實測結果:知識庫命中,但搜尋被直接略過
送出問題後,回覆內容分為兩部分:
然而,檢視回答上方的狀態標籤,畫面上依然只顯示了 已使用 知識庫,完全沒有觸發ddgo_search。而且 Spring Boot 目前根本還沒出到 4.1 版,這顯然是模型跳過搜尋後自己腦補產生的「幻覺」。
除錯過程:嘗試用提示詞強制約束
為了確認是不是提示詞約束力不足,我進一步將System Prompt改為更強烈的命令句:
要求問題只要包含「上網搜尋」或「最新版本」,【必須強制調用】搜尋工具,嚴禁僅憑內建記憶回答。
但發布更新並清空對話後再次實測,結果依然一模一樣:Agent 還是只調用了知識庫,完全無視工具調用的指令。
技術分析:為什麼無法同時觸發?
經過實測可以發現,這屬於Dify在處理複合需求時常見的架構限制:
今日心得
今天原本的目標是想看到兩個工具同時漂亮地跑出來,但意外踩出了Agent在「知識庫檢索」與「工具調用」兩者並存時的決策衝突。這也證明了在複雜場景下,單靠單一Agent與純文字提示詞,很難百分之百保證工具被依序執行。