DSL 是什麼?
最近在 FB 上看到有人貼文在討論 Prompt 用法,內容提到可以用一種「DSL 語法」的方式,讓 ChatGPT 更清楚理解你想要的輸出格式和語氣。
老實說我當下看到是滿頭問號,因為我根本不知道什麼是 DSL。就打開 ChatGPT 詢問了一下。
如果你跟我一樣,是那種對於一堆專有名詞已經快無感的人,這邊簡單講一下我目前「半懂不懂」的理解:
DSL 全名是 Domain Specific Language,中文翻譯是「領域專用語言」。
但實際上我還是沒完全搞懂什麼叫領域專用語言,只知道它有點像 SQL,那種你會寫:
SELECT * FROM user WHERE age > 30或像是:
CREATE TABLE ...總之就是一種 「語法有固定格式」的溝通方式。比起用自然語言去請求,它更像是在「下指令」,用以向 AI 清楚描述目標要的是什麼。
🤖 為什麼 ChatGPT 也能吃 DSL?
原先我以為這個用法是寫在官方的說明文件中,或是某種通用 AI 的實作方法裡,但在反覆查詢以及和 ChatGPT 聊天後,大概了解的是,這樣的語法能讓 AI 有結構性的去了解語句的表達式。簡單來說就類似於 動作 + 目標 + 條件 的語句組成。
例如我下了這樣的 prompt:
/plan<建立自動化備份系統>::tone="務實、有條理,寫給我自己看的筆記風格" --format=step-by-step它就會輸出一份分段清楚、有流程、有結構的備份系統規劃流程。 至於是否一定要用英文來建構,實際嘗試的結果是 不用。但英文比較不容易出現語意上的理解偏誤,AI 還是根據機率來推敲出可能的文意,中文單詞可能效果還是不會比英文好。
📦 幾個我覺得有用的 DSL Prompt 範例(通用)
為了避免太技術的詞彙讓人一看就想關掉,我這邊列幾個我後來試出來、覺得好用的格式(不是技術限定,也不是寫程式的人才能用):
🎯 規劃流程用:
/plan<我要做的事情>::tone="簡明直接,列出行動項目就好" --format=step-by-step🧾 寫筆記用:
/note<某主題的學習紀錄>::tone="寫給自己看的技術筆記,不用太多背景解釋" --format=markdown📄 草稿寫文章用:
/blog<你想寫的主題>::tone="寫部落格給一般讀者看,語氣自然不造作" --format=markdown --audience=public🧰 撰寫教學用:
/teach<你要分享的技巧>::tone="像是在社群教學一樣的語氣" --format=Google Slides✍️ 我的體會
我不是那種會追 prompt engineering 最新技巧的人,甚至很多時候我都是隨手打字、想到什麼問什麼。但這種 DSL 風格的 prompt 最大的好處是:
-
可以用 一致的方式要求格式(而不是每次都重新解釋)
-
語氣、對象、格式一開始就定義好,比較不容易出現偏差
-
對於有確切的輸出樣式的情境下,會是很好用的溝通方法。
🧩 那 DSL 有什麼標準格式嗎?
沒有,至少 ChatGPT 是這樣說的。可以自己發明,只要邏輯清楚,AI 就會吃。
可以照下面這種模式寫:
/功能<主題名稱>::tone="語氣描述" --format=你要的輸出格式 --audience=誰要看就像自己設計一個「跟 AI 之間的語言協議」,也許多次使用後就會變成習慣的溝通方式。
🔚 結語
就像本篇是用 /blog<...>::tone=personal 生成的一樣,DSL 的溝通方法我也還在嘗試看看是否能更有效率的達到我所預想的結果。
而就結果來看,作為 Blog 文章的使用情境下,產出一篇草稿文章是完全可行的,例如本篇文章的架構和 icon 即為 ChatGPT 所產出的。
但要到非常客製化的話,在條件的描述上要花點功夫,要完全的模仿真人風格,可能還是多輪的交談會比 DSL 所產出的內容更為貼近本人風格。
以上,希望這份流水帳對你有所幫助。