iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
AI 自動化

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

加入對話變數,實測技術顧問能否針對新手與資深工程師給出不同回答

  • 分享至 

  • xImage
  •  

前兩天搞定了角色人設與Temperature參數調整,今天我想解決另一個很現實的問題:每個來問問題的人,技術程度根本不一樣。

如果一個剛學寫程式的新手問什麼是記憶體洩漏,AI如果直接講一堆底層引用或Profiler工具,新手大概直接放棄;但如果是資深工程師來問,AI還在那邊一行行教基礎語法、寫一堆新手註解,又顯得拖泥帶水。

所以我今天要在Dify裡面加入「對話變數(Variables)」,讓使用者在發問前先在畫面上選好自己的背景,讓AI動態調整回答的深度。

今天動手做了什麼?

在Dify的左側編排面板中,提示詞下方有一個「變數」設定區。我加了兩個輸入欄位:

  1. level(技術程度):型別選「下拉選項(Select)」,設定了「新手初心者」和「資深工程師」兩種選項,設為必填
  2. language(主要程式語言):型別選「文字(String)」,讓使用者輸入主要使用的語言,設為必填

加好之後,要把這兩個變數放進提示詞裡。我直接在原本Day3的資深顧問提示詞最底下,追加了這一段判斷規則:

#當前諮詢對象資訊

  • 使用者技術程度:{{level}}
  • 主要使用語言:{{language}}

#回應調整原則

  • 若使用者為「新手初心者」,請多用生活化比喻說明概念,代碼範例必須加上清楚的逐行註解,避免過於艱澀的底層術語。
  • 若使用者為「資深工程師」,請直接切入核心架構、效能、複雜度分析與最佳實踐,代碼僅需展示關鍵邏輯。

實測結果:同一個問題,不同程度的回答差多少?

右側預覽區上方立刻長出表單,我讓變數中的語言維持 Java,輸入完全相同的問題:

我問的問題:「什麼是記憶體洩漏(Memory Leak)?在 Java 中該怎麼避免?」

  • 第一輪測試:設定為【新手初心者 + Java】

    • AI 回答風格:
      回答偏向基礎語法教學,程式碼寫得非常完整,而且每一行程式碼後面都加上了很貼心的註解(例如 // 使用完畢後,將引用設為 null、// 清空集合,讓對象可以被回收)。解法也主要針對基礎語法,教新手使用 try-with-resources 和手動清空集合。
  • 第二輪測試:設定為【資深工程師 + Java】

    • AI 回答風格:
      清空對話換成工程師身分後,口氣直接變了!它一開頭先點出 Java GC 與 C/C++ 記憶體管理的差異,接著直接列出資深開發者最常踩的深層坑:「非靜態內部類持有外部類引用」、「事件監聽器未解除註冊(removeActionListener)」等。代碼不再寫多餘的註解,最後甚至主動建議去掛「Java Profiler 工具(如 VisualVM、YourKit)」來監控 Heap 狀態。

用表格比較來看:
https://ithelp.ithome.com.tw/upload/images/20260912/20178900vAPXNMZjiv.png

今天的心得

以前寫程式如果要做到這種「針對不同身分動態改變 Prompt」的功能,自己架前後端要寫input表單、傳API、在後端用字串拼接處理變數,過程非常繁瑣。

但在Dify裡只要在設定裡拉好變數欄位,在提示詞用 {{level}} 嵌進去,整個應用的靈活性就大幅提升。它不再是一個死板的機器人,而是能真正因材施教的技術顧問。


上一篇
用同一句 SQL 題目,實測 Dify 溫度(Temperature)調到 0 跟 1 的差別
下一篇
優化對話體驗:如何在 Chatbot 用 Prompt 打造動態開場引導與推薦問題
系列文
用 Dify 建構個人專屬 AI Agent 應用15
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言