iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0
AI 自動化

用 Dify 建構個人專屬 AI Agent 應用系列 第 15

Dev-Advisor 查詢改寫節點實作與前半段成果復盤

  • 分享至 

  • xImage
  •  

今天是鐵人賽的第 15 天,賽程正式過半,回顧前半段,我們從最初熟悉平臺與提示詞工程,到正式啟動 Dev-Advisor(開發諮詢助手)專案,逐步搭建出包含內部知識庫RAG檢索與外部DuckDuckGo聯網搜尋的雙軌工作流。

在先前的聯網實測中,我們發現將使用者的口語化提問直接傳入搜尋引擎時,容易檢索出混雜非核心關鍵字的技術文件與雜訊。今天我們主要完成兩件事:在工作流中正式加入「查詢改寫(Query Rewrite)」節點以優化搜尋品質,並對前半段架構進行復盤與後續規劃。

一、 查詢改寫節點實作
為了讓搜尋引擎能接收到更精確的關鍵字,我們調整了下半部的外部諮詢管線:

  • 原始管線:問題分類器 -> DuckDuckGo Search -> LLM2
  • 調整後管線:問題分類器 -> LLM3(查詢改寫器) -> DuckDuckGo Search -> LLM2
  1. 跨語言檢索設計策略
    在技術諮詢場景中,官方第一手技術文檔、Release Notes與Issue討論大多為英文。若直接以使用者的中文口語去搜尋,常會檢索到二手轉載或過時資訊。因此,我們為LLM3設定的核心策略是「跨語言提煉」:允許使用者以熟悉的中文口語隨意提問,由LLM3自動翻譯並濃縮為純英文技術關鍵字交給DuckDuckGo,最後再由後端的LLM2整合並以流暢的繁體中文輸出。

  2. 節點配置與提示詞設定
    在問題分類器與搜尋節點之間新增一個名為LLM3(查詢改寫器)的節點:

  • 模型選用:選用反應速度快且資源消耗較低的 Gemini 3.5 Flash-Lite,專門處理關鍵字提煉任務
  • SYSTEM PROMPT 設定內容如下:
你是一個精準的搜尋引擎關鍵字提煉工具。
請分析使用者的技術問題,提煉出最適合搜尋引擎(如 DuckDuckGo/Google)的 2 到 4 個核心關鍵字。

【規則】
1. 輸出必須以英文核心詞為主(搜尋引擎對英文技術關鍵字的檢索品質最佳)。
2. 徹底過濾所有問句、禮貌用語及多餘文字(例如:「請查一下」、「有哪些」等)。
3. 嚴格禁止任何開場白、結尾說明、標點符號或 Markdown 引號。
4. 輸出範例:Python latest stable release features
  • USER 訊息:透過面板上的「+ 新增消息」建立 USER 區塊,並透過變數引用綁定最前端的 開始 / query,確保改寫器能讀取使用者輸入的原始題目
  1. 搜尋變數重新綁定進入
    DuckDuckGo Search節點,將Query string欄位的變數來源由原本的使用者輸入改為綁定 LLM3 / text。
    此後,搜尋引擎接收到的將會是經過改寫器提煉後的純淨英文檢索關鍵字。

二、 實作除錯紀錄

在本次節點調整過程中,我們記錄了以下幾項問題與解決方式:

  1. API 高負載錯誤(503 UNAVAILABLE)
    當工作流連續觸發多個相同模型節點時,偶爾會碰上 Google API 伺服器的高峰排隊限制。將負責關鍵字提煉的節點替換為較輕量的 Flash-Lite 版本,有助於降低請求延遲與負載。

  2. 缺少USER變數導致關鍵字偏離
    初期測試時,DuckDuckGo 回報無搜尋結果,檢查日誌後發現送出的檢索詞竟為search engine keyword extraction tool。原因在於節點僅有SYSTEM指示而未加入USER訊息輸入,導致模型把提示詞內容本身當成輸出。在面板中手動新增USER框並綁定 開始 / query 後,模型便能正確針對使用者提問提煉關鍵字。

  3. 模型邊界約束驗證
    在搜尋結果不相關的除錯階段,LLM2嚴格依照提示詞約束,直接回報現有資料中不包含目標資訊而非自行捏造,驗證了系統提示詞的防護機制有效。

三、 執行結果驗證

修正完成後,使用相同題目進行測試:

輸入問題:
請查一下目前 Python 最新穩定版本(Stable Release)是哪一版?有哪些主要亮點?

輸出結果:
經過LLM3改寫為純淨英文關鍵字並檢索後,系統成功抓取到相關資訊並整理輸出:
根據最新的參考資料,目前 Python 的最新穩定版本系列為 Python 3.14(最新的維護版本為 3.14.7)。
Python 3.14 主要穩定版本於 2025 年 10 月 7 日正式發布,包含語言語法、執行階段實現及標準庫的多項改進。

主要亮點與新特性:

  1. 無鎖線程模式(Free-threaded mode):進一步優化多執行緒並行處理能力
  2. JIT 編譯器(JIT Compiler):導入即時編譯技術以提升程式執行效能
  3. 延遲註解(Lazy Annotations):優化型別標註(Type Annotations)的處理機制
  4. 現代化彩色 REPL(Modern Colorized REPL):提供帶有色彩強調與現代化互動體驗的控制台介面

實測結果顯示,加入查詢改寫後,檢索結果不再受到口語冗詞干擾,資訊抓取的精確度明顯提升。

四、 前半段成果復盤與後續規劃

回顧 Day 1~15,Dev-Advisor 已經建立了基本運作原型:

  • 具備區分內部規範與外部問題的分流能力
  • 能透過 RAG 機制檢索內部標準文件
  • 具備外部搜尋與查詢改寫的前置處理能力

但現有架構仍有需要進一步優化之處:

  1. 流程過於固定:目前分支屬於硬編碼邏輯,若遇到需要同時參照內部規範並比對外部新技術的複合問題,單一路徑無法有效處理
  2. 缺乏多輪記憶:目前為單次問答結構,無法延續上下文進行連續追問
  3. 未串接外部介面:目前功能仍侷限於平臺畫布內測試,尚未向外提供服務介面

後續 15 天(Day 16~30)的規劃重點:

  • 評估並導入Agent模式,嘗試讓模型自主決定工具調用時機
  • 加入多輪對話記憶(Memory)機制,支援上下文連續諮詢
  • 規範回覆中的來源標註(Source Attribution)格式
  • 透過API串接外部介面,將Dev-Advisor整合至實際應用環境中

五、 今日小結

今天我們在Dev-Advisor中完成了查詢改寫節點的建立與除錯,解決了口語搜尋帶來的雜訊問題,並驗證了前置處理對檢索品質的改善效果。


上一篇
在工作流中串接 DuckDuckGo 聯網搜尋與免費模型切換
系列文
用 Dify 建構個人專屬 AI Agent 應用15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言