提示工程 · Prompt 寫作

獲得優質輸出的六大技巧

運用清楚的說明、角色與風格、分隔符號、步驟、範例和輸出長度,讓模型少猜一點,讓結果更接近任務要求。

不會讀心術

大型語言模型很強大,但可惜的是,它不會讀心術。

當我們想要什麼,就要盡量清楚地告訴它,不要讓模型猜我們心裡到底在想什麼。

猜得越少,結果越有可能接近我們的要求。

下面是六個簡單但常用的方法。

1. 撰寫清楚的說明

為了得到想要的回覆,需要提供真正重要的細節和上下文。否則,模型只能猜。

模糊的說法 更清楚的說法
如何在 Excel 中加入數字? 如何在 Excel 中把一列美元金額相加,並把結果自動放在右側的「總計」欄?
誰是總統? 2021 年的美國總統是誰?美國總統選舉通常多久舉行一次?
寫一個費波那契數列的方法 使用 Python 寫一個計算費波那契數列的方法,並用註解說明每個部分的作用。
寫一段會議記錄並摘要 寫一段虛構會議記錄,用 Markdown 列出發言者、要點和明確出現的待辦事項。

Prompt 不是越長越好。關鍵是:會影響結果的資訊有沒有說清楚。

2. 指定風格、讀者和角色

如果我們希望輸出有特定語氣,可以直接說。

指定風格

當我請你幫忙寫東西時,你的回答內容每一段至少包含一個笑話或俏皮話。

替我的同學張三寫一封感謝信,感謝在他的介紹下,我成功找到了一份工作。

同一封感謝信,寫成嚴肅公文或輕鬆聊天,讀起來會完全不同。與其等模型猜,不如把想要的風格直接寫出來。

當然,「每段一個笑話」只是一個很鮮明的示範。真正使用時,也可以寫成「真誠、自然,不要使用誇張的讚美」。

指定角色

如果任務需要一個明確視角,也可以指定角色:

你現在是一位「大學國文教授」,需要從國文課講解的角度回答我的問題。

解釋李白寫「天生我材必有用,千金散盡還復來」時,內心的情感變化和想表達的思想感情。

把角色和讀者放在一起

那如果面對同一個知識點,我們還希望十歲的孩子也能聽懂呢?

你現在是一位「獲得諾貝爾物理學獎的天體物理學家」,需要從天體物理科普的角度回答我的問題。
回答是給 10 歲的孩子看的,要讓他們能夠看懂,而且充滿想像力。

解釋黑洞的形成原理,以及黑洞的特性。

這裡同時寫清楚了回答視角、目標讀者和表達風格,比只寫「解釋一下黑洞」多了三層資訊。

角色描述的作用,是幫助模型理解視角、讀者和標準。它不會讓模型真的獲得某個頭銜,也不能證明答案一定專業。

與其說「你是世界上最厲害的專家」,不如把真正需要的判斷標準寫出來。

3. 用分隔符號區分不同內容

當 Prompt 裡同時有任務說明、原始材料和輸出格式時,可以使用三引號、Markdown 標題或 XML 標籤把它們分開。

請用一首短詩概括三引號中的文字。

"""
在蒼茫的大海上,狂風捲集著烏雲。海燕像黑色的閃電,在高傲地飛翔。
"""

也可以這樣寫:

<task>比較兩首與黃鶴樓有關的詩,並說明理由。</task>
<article>昔人已乘黃鶴去,此地空餘黃鶴樓……</article>
<article>故人西辭黃鶴樓,煙花三月下揚州……</article>

還可以直接使用欄位名稱,把摘要和標題分開:

我將為你提供一篇文章的摘要和標題。
請判斷標題能否準確概括摘要,同時要讓讀者看懂文章主題。
如果不符合這兩個標準,請提供 5 個備選標題。

摘要:一場持續性強降雨影響多個北方地區,降雨持續時間較長、影響範圍較廣,部分地區可能出現大暴雨。

標題:北方多地遭遇強降雨,部分地區需注意大暴雨

這裡的「摘要:」和「標題:」也是分隔符號。它們沒有使用特殊符號,卻仍然清楚告訴模型:哪一段是摘要,哪一段是標題。

對簡單任務來說,使用分隔符號前後可能看不出明顯差別。任務越複雜,材料越長,清楚的邊界就越重要。

分隔符號不會讓模型突然變聰明,它只是幫助我們把「指令是什麼、材料是什麼、格式是什麼」標示清楚。

4. 指定完成任務的步驟

許多任務本來就需要分幾步完成。把這些步驟寫出來,模型會更容易跟上我們的思路。

請按照下面的順序完成任務:

1. 用一句話概括三引號中的文字,前綴寫「摘要:」。
2. 把這句摘要翻譯成英文,前綴寫「翻譯:」。

"""
{{需要處理的文字}}
"""

需要注意,步驟不是越多越好。先寫真正影響結果的步驟,不要為了看起來專業,把簡單任務拆成幾十步。

5. 舉例說明

有時候,我們想要的風格或格式很難用一句規則講清楚。

這時可以直接提供範例。

你是「神奇動物命名器」,根據範例的風格替動物取名字。

動物:貓
名稱:暗夜特工

動物:狗
名稱:超能閃電

現在替「馬」取一個名字。

一到三個高品質範例,通常就能讓模型看出我們想要的對應關係。

但模型也會模仿範例裡的問題,所以範例不能只挑最理想的情況,還要涵蓋真實任務會遇到的邊界。

6. 指定輸出長度

我們可以用大約多少字、多少句話、多少段或多少個要點來限制輸出。

但這幾種要求,模型遵守起來並不完全相同。

我們繼續使用同一段材料,連續試三輪。為了方便對照,下面三個 Prompt 中的原文完全相同。

第一輪:大約 50 個字

使用大約 50 個字,概括三引號包裹的內容。

"""
在蒼茫的大海上,狂風捲集著烏雲。在烏雲和大海之間,海燕像黑色的閃電,在高傲地飛翔。

一會兒翅膀碰著波浪,一會兒像箭一般直衝烏雲。牠叫喊著,在叫喊聲裡充滿著對暴風雨的渴望。
"""

「大約 50 個字」看起來很明確,但模型是按照 Token 生成文字,不是每寫一個字就同步數一次字元。結果可能接近 50 個字,也可能明顯超出。

第二輪:兩個段落

使用兩個段落,概括三引號包裹的內容。

"""
在蒼茫的大海上,狂風捲集著烏雲。在烏雲和大海之間,海燕像黑色的閃電,在高傲地飛翔。

一會兒翅膀碰著波浪,一會兒像箭一般直衝烏雲。牠叫喊著,在叫喊聲裡充滿著對暴風雨的渴望。
"""

這一次,結果是不是有兩個段落,一眼就能看出來。和精確字數相比,段落數通常更容易觀察。

第三輪:三個要點

使用三個要點,概括三引號包裹的內容。

"""
在蒼茫的大海上,狂風捲集著烏雲。在烏雲和大海之間,海燕像黑色的閃電,在高傲地飛翔。

一會兒翅膀碰著波浪,一會兒像箭一般直衝烏雲。牠叫喊著,在叫喊聲裡充滿著對暴風雨的渴望。
"""

要點數也很直觀,我們可以立刻檢查結果是不是三條。

這三輪處理的是同一段文字,改變的只有長度表達方式。可以看到,「大約 50 個字」控制的是字元範圍,「兩個段落」和「三個要點」控制的是結構,它們不是同一種要求。

段落數和要點數通常更容易觀察,但也不能因此省略檢查。如果業務必須嚴格符合字元數、段落數或要點數,應在模型生成後用程式或編輯流程再次驗證。

最後再看一遍

這六個技巧並不是每條 Prompt 都必須全部使用。

簡單任務,直接說清楚就夠了。複雜任務,再逐步增加上下文、分隔符號、步驟和範例。

真正的目標不是把 Prompt 寫得很長,而是讓模型少猜一點,讓我們更容易檢查結果。

上一章: 機率、取樣與 Temperature

下一章: 結構化 Prompt 範本與技巧

Luffy Liu
Luffy Liu

Independent product builder · AI, agents and real workflows.