第 22 章・應用場景篇(進階:Agent 與工具)

財務工程:Code 工具精算

上一章讓 Agent 自己挑工具;這一章反過來,把工具當成 Workflow 的一個節點,由我們精準指定。而且我們要解決 LLM 的一個致命弱點——它不會算數。做法是:把需要精確計算的部分交給「Code 工具節點」跑真正的 Python,再讓 LLM 只負責解讀。

業界痛點
凡是牽涉金額與公式的場景——房貸試算、投報率、報價毛利、折舊攤提——都不能讓 LLM「憑感覺算」。大型語言模型擅長文字,卻常在多步算術上出錯,差一位小數在財務場景就是災難。傳統做法要嘛寫死一個計算程式(不會解讀)、要嘛人工用 Excel(慢又易錯)。理想解法是:精確計算交給程式、白話解讀交給 AI,各司其職。

本章目標

解決什麼
用 Code 工具做精確的房貸試算,再由 LLM 白話解讀並給理財建議
用到的技術
第 7 章的 Code Interpreter 工具,作為 Workflow 的一個節點;工具輸出接給 LLM
難度
★★★★☆ 學會「把算術交給工具、把語言交給 LLM」的黃金分工
✨ 成果搶先看

先看做完長什麼樣——這樣你就知道自己在往哪裡前進。跟著本章做,你也能生出下面這個結果:

① 使用者填寫的欄位
貸款金額(元):10000000
年利率(%):2.1
貸款年數:30
↓ AI 處理,產出 ↓

房貸試算解讀

📊 數字說明

您申請貸款 1,000 萬元,利率 2.1%,期限 30 年(360 期),試算結果如下:

項目金額
每月應繳本息37,464 元
總還款金額13,487,047 元
總利息支出3,487,047 元
利息佔本金比例34.9%

簡單來說:借 1,000 萬元,30 年下來要多付出約 348.7 萬元的利息,相當於本金的 34.9%。這個比例在目前 2.1% 的低利率環境下,其實算是相對友善的,若利率更高(例如 3~4%),這個比例通常會拉高到 50~70% 以上。


💡 實用建議

1️⃣ 觀察「利息佔比」隨時間遞減的特性

房貸還款初期,每月繳款中「利息」占比較高,「本金」占比較低;隨著時間推移,本金攤還比例會逐漸增加。若手頭寬裕,在還款前期(尤其前 5~10 年)多繳一些提前還本金,能有效縮短總繳息期間,效果比後期還款更顯著。

2️⃣ 縮短年限 vs. 拉長年限的取捨

  • 若改成 20 年期,每月負擔會提高,但總利息會明顯下降(因為攤還本金速度加快、計息基礎縮小更快)。
  • 若您現金流穩定、沒有更高報酬的資金去處,縮短年限是降低利息成本最直接的方法
  • 反之,若您有其他投資報酬率高於 2.1% 的機會,拉長年限、把多餘資金拿去投資,可能更划算——但需承擔投資風險。

3️⃣ 善用「部分提前還款」而非全額增貸繳款

多數銀行提供部分提前還本金的彈性,不需要一次還清,也能達到「縮短年限」或「降低月付額」的效果。建議:

  • 每年有年終獎金或閒錢時,可撥一部分指定沖還本金

(完整結果更長,這裡先看重點——下載本章 DSL 自己跑就看得到全部)

👇 在 Dify 裡實際執行、長這樣

成果搶先看
成品輸入貸款條件,Code 精算月付與總利息,LLM 再用白話解讀並給理財建議。
效益速覽(估算)
省時間
查表算 Excel→即時
精算不出錯
省人力
不需逐案人工算
客服即時試算
創造價值
精準+易懂
冷數字變實用建議
⬇ 把這個工作流帶走,直接用
不想從頭做?下載本章的 DSL 檔,到你的 Dify「工作室 → 匯入 DSL 檔案」上傳,就能一鍵複製這個範例、改成自己的。
下載 DSL 檔

22.1設計思路:讓程式算、讓 AI 說

流程是四個節點:開始 → Code 精算 → LLM 解讀 → 輸出。開始節點收三個數字(貸款金額、年利率、年數);Code 工具節點用標準的本息攤還公式算出每月應繳、總利息等(這是不容出錯的部分);LLM 節點拿到精算結果後,只做一件事——把冷冰冰的數字翻成人話並給建議。

房貸試算工作流:開始 → Code 精算 → LLM 解讀 → 輸出
圖 22-1四節點分工圖。中間的 CODE 精算 是這一章的主角——一個執行真正 Python 的工具節點。它算出的數字絕對精確,LLM 碰都不碰、只負責解讀。

22.1.1節點①「開始」:設計輸入表單

房貸試算收三個數字:金額、年利率、年數。點「開始」節點,在「輸入字段」按「+」新增欄位(設變數名、顯示標籤、型別):

節點設定
圖 22-1a 開始節點收三個數字欄位(型別選「數字」),交給後面的 Code 節點精算。

22.2Code 工具節點:把公式寫進去

點 Code 節點,語言選 python3,貼上本息攤還公式。程式用 {{#開始.principal#}} 這種語法把使用者輸入的數字帶進來,最後用 print 輸出計算結果。

Code 節點設定:python3 與本息攤還公式
圖 22-2Code 工具節點的設定。Language 選 python3、Code 欄位是本息攤還公式,藍色標籤是從開始節點帶進來的 principalrateyears。這段程式在 Dify 的沙箱裡真的被執行,回傳精確數字。

Code 欄位的完整內容直接給你({{#開始.principal#}} 等變數用「/」插入變數選單帶入,不要手打):

p = float("{{#開始.principal#}}")          # 貸款本金
r = float("{{#開始.rate#}}") / 100 / 12    # 月利率
n = int("{{#開始.years#}}") * 12            # 總期數(月)

if r == 0:
    m = p / n
else:
    m = p * r * (1 + r)**n / ((1 + r)**n - 1)   # 本息攤還月付公式

total = m * n
print(f"每月應繳本息:{m:,.0f} 元")
print(f"還款期數:{n} 期({n // 12} 年)")
print(f"總還款金額:{total:,.0f} 元")
print(f"總利息支出:{total - p:,.0f} 元")
print(f"利息佔本金比例:{(total - p) / p * 100:.1f}%")
為什麼不直接叫 LLM 算?
本息攤還公式含次方與連除,LLM 手算極易出錯且不可驗證。Code 節點跑的是確定性的程式,同樣輸入永遠同樣輸出、可稽核。這就是「工具」存在的意義——把 LLM 不擅長的事,交給擅長的程式。

22.3測試運行:1000 萬、2.1%、30 年

試算結果:每月 37,464、總利息 348 萬、LLM 解讀與建議
圖 22-3結果面板。上半是 Code 工具算出的精確數字(每月應繳 37,464 元、總利息 3,487,047 元、利息佔本金 34.9%);下半是 LLM 的白話解讀——「等於多付了近 350 萬的利息」,還附上「利息佔比屬中低水準」等實用建議。數字精準、解讀親切。
帶來的改變
需要算數的 AI 應用不再怕算錯——精確度交給程式擔保;使用者拿到的不只是冷數字,還有能懂的解讀與建議;同一套骨架換個公式,馬上變成投報試算、報價毛利、折舊計算。

輸出、發布與使用:把成果交付出去

做好的應用要能發布、分享給別人用才有價值。以下是這個應用的輸出設定與發布/使用畫面:

輸出節點
輸出節點工作流的最後一站。「輸出變數」把某個節點的輸出(例如 LLM 的 text)對應成整條流程的最終結果——決定使用者最後拿到什麼。
發佈選單
發佈選單做好後按右上「發佈 → 發布更新」即上線;選單還提供『運行』獨立網頁、『訪問 API』、『嵌入網站』與『工作流程作為工具』等交付方式——這就是把應用分享給別人使用的入口。

22.4本章回顧