在初期導入 Dify 建立企業資訊查詢流程時,我們使用了多個「代碼執行」節點來處理 API 回傳資料,例如提取統一編號與公司名稱。
然而,我們很快發現:這樣的設計對非工程背景的成員不夠友善,維護成本也偏高。
因此,我們重新思考了一個問題:
能不能只透過自然語言與 LLM,讓流程變得更簡潔、更直覺?
以下說明企業資訊查詢流程的資料來源與流程設計,並分享我們如何透過 LLM 來簡化流程設計。
流程主要會透過使用商工行政資料開放平臺 Swagger 及 2,000 大企業文件檢索的方式來取得企業的資訊。
會用以下的方式來取得資料,
1.統一編號 → 呼叫公司登記基本資料-應用一來取得公司資訊(統編、名稱、資本額、負責人…)
2.公司名稱 → 呼叫公司登記關鍵字查詢來取得公司資訊(統編、名稱、資本額、負責人…)
3.統一編號 → 呼叫公司登記基本資料-應用三來取得公司的營業項目
4.公司名稱 → 透過文件檢索的方式來取得是否在2,000 大企業之中的行業排名
1.允許使用者輸入「統一編號」或「公司名稱」來查詢,根據使用者輸入的查詢類型(統一編號或公司名稱),流程會分為兩條路徑進行處理
2.透過「問題分類器」讓 LLM 判斷使用者輸入的是「統一編號」或「公司名稱」
3.如果是「統一編號」
3.1.透過「 HTTP」 節點,呼叫「公司登記基本資料-應用一」來取得公司資訊(0, 1 筆)
3.2.如果發生錯誤或取不到任何資料,就要求使用者重新輸入
3.3.透過 「代碼執行」節點,從 HTTP 執行結果的內容中取出「公司名稱」,程式碼如下:
function main({ arg1 }) {const data = JSON.parse(arg1);
const companyName = data[0]?.Company_Name || "無法擷取公司名稱";
return {
result: companyName,
};
}
3.4.透過「 HTTP」 節點,呼叫「公司登記基本資料-應用三」來取得公司資訊
3.5.透過「代碼執行」節點,從 HTTP 執行結果的內容中取出「公司的營業項目」
3.6.用「公司名稱」透過文件檢索的方式來取得是否在2,000 大企業之中的行業排名
3.7.將所有資訊組合起來,透過「LLM」節點整理後,輸出給使用者
4.如果是「公司名稱」
4.1.透過「 HTTP」 節點,呼叫「公司登記關鍵字查詢」來取得公司資訊(0, 1, 多筆)
4.2.如果發生錯誤、取不到任何資料或超過一筆,就要求使用者重新輸入
4.3.透過「代碼執行」節點,從 HTTP 執行結果的內容中取出「統一編號」,程式碼如下:
function main({ arg1 }) {try {
const data = JSON.parse(arg1);
const businessNo = data[0]?.Business_Accounting_NO || "無法擷取統一編號";
return {
result: businessNo,
};
} catch (error) {
return {
result: `解析失敗:${error.message}`,
};
}
}
4.4.透過「HTTP」節點,呼叫「公司登記基本資料-應用三」來取得公司資訊
4.5.透過「代碼執行」節點,從 HTTP 執行結果的內容中取出「公司的營業項目」
4.6.用「公司名稱」透過文件檢索的方式來取得是否在2,000 大企業之中的行業排名
4.7.將所有資訊組合起來,透過「LLM」節點整理後,輸出給使用者
Dify 的流程畫面如下:
以上「代碼執行」節點的程式碼,雖然不會很複雜,但對非工程背景的成員來說,還是會有些難度。
如果將這些內容交由 LLM 來處理,那麼流程會變得更加簡單、直覺。
1.直接呼叫「公司登記基本資料-應用一」及「公司登記關鍵字查詢」將結果透過「LLM」節點來判斷是否有找到正確的公司資訊
2.如果「LLM」節點輸出內容包含「請重新查詢」,則要求使用者重新輸入
3.透過「LLM」節點來取出「公司名稱」及「統一編號」
在 Dify 從開始到取出「公司名稱」及「統一編號」,靠 LLM 節點來處理,如下圖:
4.透過「HTTP」節點,呼叫「公司登記基本資料-應用三」來取得公司資訊
5.用「公司名稱」透過文件檢索的方式來取得是否在2,000 大企業之中的行業排名
6.將所有資訊組合起來,透過「LLM」節點整理後,輸出給使用者
Dify 步驟 4 ~ 6 的流程畫面如下:
改善後的 Dify 的流程畫面如下:
先將資料準備好,再透過 LLM 進行匯整,整個流程簡潔了很多(從原本的 10 幾個 Step,降到了 6 個 Step)。
以下為用「統一編號」來查詢的企業資訊,如下圖:
以下為用「公司名稱」來查詢的企業資訊,如下圖:
以上我們成功將原本仰賴「代碼執行」節點的設計,轉換為以 LLM 為核心、自然語言驅動的架構。
這不僅大幅降低了維護與學習門檻,讓非工程背景的同仁也能輕鬆參與流程設計,更讓整體查詢流程變得直覺、彈性且易於擴充。
最終流程可以簡化為三步驟:準備資料 → 交由 LLM 推論處理 → 直接輸出結果,大幅提升可維護性與開發效率。
問題說明:
在2,000 大企業文件檢索時,如果用公司全稱(華邦電子股份有限公司),查出的華邦電子不在第一筆的話,如下圖,
可以加一個「模版轉換」節點,「公司名稱」組成完整語意單元句,為公司名稱為{{ 公司名稱參數 }},行業排名是多少
這樣就可以在第一筆查到「華邦電子」,如下圖,