[AI] Prompt 的眉角:讓你的 LLM 不再雞同鴨講
前言
自從大型語言模型(LLM)普及之後,大家是不是都開始想辦法把 AI 整合到自己的工作流程裡?從寫程式、除錯、文件整理到發想,LLM 真的超好用。但是,有沒有遇過你給它一個指令,它卻回覆得牛頭不對馬嘴,讓你覺得它根本聽不懂你在說什麼?
這種「雞同鴨講」的狀況,其實大部分時候不是模型不夠聰明,而是我們給的「說明書」不夠清楚。這個說明書,就是我們常說的 Prompt。
Prompt 不只是單純輸入問題,它是一種跟 LLM 溝通的藝術,也是一種工程。寫得好的 Prompt,能讓 LLM 成為你的神隊友;寫得不好,就變成一個只能給你模糊答案的黑箱。今天想跟大家分享一些我在實務上常用、而且很有效的 Prompt 技巧,希望能幫大家跟 LLM 合作得更順暢。
怎麼跟 LLM 溝通最有效?從角色設定開始
想像一下,你要跟一個同事請教問題,你會直接丟一句「請解釋區塊鏈」嗎?通常不會對不對?你會先設定情境:「嘿,我是新來的,對區塊鏈有點好奇,可以請你用資深工程師的角度,跟我這個新手解釋一下嗎?」
對 LLM 也是一樣!給 LLM 一個明確的「角色(Role)」,它會更好地理解你的意圖,並以該角色應有的知識、語氣和思考模式來回應。這能讓輸出更聚焦,更符合你期待的情境。
實例對照:
沒有角色設定的 Prompt:
1 | 請解釋什麼是區塊鏈。 |
LLM 可能會回覆一段很泛、很教科書式的定義,適合給大眾看的那種。
有角色設定的 Prompt:
1 | 你是一個資深的軟體工程師,請用淺顯易懂的方式,向一位剛入門的同事解釋什麼是區塊鏈,並舉例說明它在實務上的應用。請確保解釋內容不超過 300 個中文字,並避免過於學術的詞彙。 |
這樣 LLM 就知道它要扮演「資深工程師」,溝通對象是「入門同事」,而且要「淺顯易懂」並「控制字數」。回覆的內容和語氣會完全不同,更貼近你的實際需求。
不再模稜兩可:清晰的指令與限制
LLM 雖然很厲害,但它也很擅長「腦補」或「猜測」。當你的指令不夠清晰時,它就可能會猜錯你的意圖,然後給你一些你根本不想要的內容。明確的指令和限制,可以大大減少這種「猜錯」的機率,節省你來回溝通和修改的時間。
實例對照:
模糊的 Prompt:
1 | 幫我寫一個 Python 函式。 |
它可能會問:「你要寫什麼函式?」「參數是什麼?」「回傳值是什麼?」或者直接給你一個 Hello World 的函式。這時候你還是得再解釋一遍。
清晰的 Prompt:
1 | 請用 Python 寫一個函式,接收兩個數字作為參數,並回傳它們的總和。請注意函式命名要符合 PEP8 規範,並包含 Docstring。輸出結果只包含程式碼,不要有任何解釋。 |
這樣模型就知道:
- 語言: Python
- 目標: 計算總和
- 輸入: 兩個數字
- 輸出: 總和
- 程式碼規範: PEP8、Docstring
- 格式限制: 只輸出程式碼
它給你的程式碼會更精準,甚至可以直接拿來用:
1 | def add_two_numbers(num1: int, num2: int) -> int: |
你甚至可以加入「負面指令」(Negative Constraints),例如「請不要包含任何解釋,直接輸出程式碼就好」,這在希望 LLM 精確地只給你某種特定輸出時特別有用。
多給幾個「範例」,模型會學得更快 (Few-shot Prompting)
有時候,用文字描述再多,都不如直接給幾個「輸入-輸出」的範例,讓 LLM 自己去歸納規則來得快。這就是所謂的 Few-shot Prompting。特別適用於有特定格式、風格,或是需要複雜轉換的任務。
實例對照:
沒有範例的 Prompt:
1 | 請將以下句子轉換為被動語態: |
模型可能能正確轉換,但也可能在遇到更複雜的句子時出錯,或者回覆的格式不一定是你想要的。
有範例的 Prompt:
1 | 請將以下句子轉換為被動語態。以下是幾個範例,請依循此模式轉換: |
給了兩個範例之後,模型會學得更快,而且輸出格式會更穩定。它會知道你要的結果是什麼樣子,而不是只知道要做什麼。
讓 LLM 自己「思考」:Chain of Thought (CoT) 的威力
當你給 LLM 一個複雜的問題,如果它直接給答案,你很難判斷這個答案是不是正確的,或者它是怎麼推導出來的。Chain of Thought (CoT) 是一種很強大的技巧,它不是直接要求答案,而是請 LLM 先解釋它的「思考過程」。這能大幅提升模型解決複雜問題的準確性,同時也讓你更容易檢查它的邏輯。
實例對照:
沒有 CoT 的 Prompt:
1 | 有三個人 A、B、C。A 比 B 重,C 比 A 輕。誰最重? |
LLM 有時可能會因為沒有足夠的思考空間而直接給出錯誤答案,或是選擇一個「聽起來合理」但實際上不對的選項。
有 CoT 的 Prompt:
1 | 有三個人 A、B、C。A 比 B 重,C 比 A 輕。請先分析他們之間的重量關係,然後找出誰最重。請列出你的思考步驟。 |
LLM 的回覆可能會像這樣:
1 | 好的,我來分析一下三個人 A、B、C 之間的重量關係: |
你看,有了思考步驟,不僅答案更可信,我們也能理解模型是怎麼推導出來的。如果它某一步想錯了,你也可以更容易地糾正它。這在處理程式邏輯、數學問題或複雜的專案規劃時特別有用。
結構化輸出:讓你的程式更容易處理 LLM 的回覆
如果你是把 LLM 當成後端服務來呼叫,讓你的程式去解析它的回覆,那麼要求結構化輸出就超級重要了。讓 LLM 回傳 JSON、XML 或是 Markdown 表格,會比純文字好處理一百倍!這樣能大幅簡化後續的程式碼處理邏輯,讓 LLM 更像是 API 的一部分。
實例對照:
純文字輸出的 Prompt:
1 | 請幫我分析這篇文章,並列出三個主要論點。 |
模型可能會回覆一長段文字,裡面用無序列表或段落來表達論點。你的程式要解析這些內容,可能需要寫很多正則表達式或複雜的字串處理邏輯,而且還很容易出錯。
JSON 格式輸出的 Prompt:
1 | 請分析以下文章內容,並以 JSON 格式回傳三個主要論點。JSON 結構應包含一個名為 "main_points" 的陣列,每個元素包含 "title" 和 "summary" 兩個鍵值。文章內容如下: |
LLM 就會回傳一個你的程式可以直接解析的 JSON 物件:
1 | { |
這樣你的程式只需要簡單的 JSON 解析,就能把資料取出來,方便進行後續處理、儲存到資料庫或顯示在使用者介面上。
小結
Prompting 說穿了,就是一門如何「有效溝通」的學問。它沒有標準答案,只有更適合當下情境的方案。每次寫 Prompt,都可以試著把你跟一個真人合作時會怎麼溝通的思維帶進去:
- 設定對象: 你希望它扮演什麼角色? (e.g., 資深工程師、行銷專家)
- 明確任務: 你要它做什麼? (e.g., 總結、翻譯、撰寫程式)
- 給足背景: 為了完成任務,它需要知道什麼資訊? (e.g., 文章內容、程式碼片段)
- 定義輸出: 你希望它回覆什麼格式?有哪些限制? (e.g., JSON、Markdown、不超過 N 字、只給程式碼)
- 引導思考: 如果問題複雜,讓它先思考再給答案 (CoT)。
- 提供範例: 如果有特定風格或格式要求,直接給它幾個示範。
這些技巧都是我在實務中不斷嘗試和踩坑後,覺得最能提升 LLM 使用效率的「眉角」。鼓勵大家多嘗試、多實驗,找到最適合自己工作流程的 Prompt 寫法,讓 LLM 成為你開發工作上真正的助力!
如果您喜歡我寫的文章,幫我按個5下讚吧!感謝您的鼓勵和支持!


![[AI] Prompt 的眉角:讓你的 LLM 不再雞同鴨講](/img/covers/llm-prompt-techniques-practical-tips.jpg)
![[後端] Log 不只是用來看錯誤](/img/covers/logging-basic.jpg)
![[工程分享] 重構不是看到不順眼就重寫](/img/covers/refactor-basic.jpg)