這篇其實就是 Andrew Ng 大大與 OpenAI 合作的一門免費課程【Chatgpt Prompt Engineering For Developers - Guideline】章節的第二段筆記。很建議大家直接看原本的課程影片,內容蠻淺顯易懂的。
第二原則 - 給模型思考的時間
也就最有名的 `Let's think step by step`(依步驟思考)這句提示的意思,不過更重要的是對問題解決步驟的拆解(Chain of Thought)
原則一、提供步驟來完成任務
例如將你的任務拆解成:
步驟一: ...
步驟二: ...
步驟三: ...
範例:
執行下方動作:
1 - 將下方 ``` 內的文字以一個句子的長度做摘要
2 - 將摘要轉換到法文
3 - 列出法文摘要內的名稱
4 - 輸出含有後方鍵值的 json 物件: french_summary, num_names。
將你的答案以分行分隔。
文字:
```
在一個迷人的村莊裡,兄妹傑克和吉爾踏上了一個任務,要從山頂的井裡打水。
他們爬山時歡唱著,但不幸的是,傑克絆倒在一塊石頭上,然後滾下了山,
吉爾也跟著他。儘管有些瘀傷,兩人還是回到家裡,
受到了家人的慰藉。儘管發生了意外,他們的冒險精神依然不減,並繼續愉快地探索。
```
輸出結果:
範例二
執行下方動作:
1 - 將下方 <> 內的文字以一個句子的長度做摘要
2 - 將摘要轉換到法文
3 - 列出法文摘要內的名稱
4 - 輸出含有後方鍵值的 json 物件: french_summary, num_names。
使用下面的格式:
文字: <要摘要的文字>
摘要: <摘要>
翻譯: <摘要的翻譯>
名稱: <摘要翻譯內的名稱>
輸出 JSON: <Json 格式以 summary, num_names 作為鍵值>
文字:
```
在一個迷人的村莊裡,兄妹傑克和吉爾踏上了一個任務,要從山頂的井裡打水。
他們爬山時歡唱著,但不幸的是,傑克絆倒在一塊石頭上,然後滾下了山,
吉爾也跟著他。儘管有些瘀傷,兩人還是回到家裡,
受到了家人的慰藉。儘管發生了意外,他們的冒險精神依然不減,並繼續愉快地探索。
``
輸出結果:
原則二、在模型直接給出結論前,提供指令讓它理出它的解決方案
下面這個範例更令人印象深刻,先來看它直接反應時錯誤的回覆。
範例:
判斷學生的答案是正確還是錯誤。
問題:
我正在建立一個太陽能發電設施,需要幫助計算財務數據。
- 土地成本為每平方英尺 100 美元。
- 我可以以每平方英尺 250 美元的價格購買太陽能板。
- 我談到了一份維護合同,每年將花費我 100,000 美元的固定費用,
外加每平方英尺需要額外 10 美元。
以每平方英尺的數量作為函數來回答,第一年運營的總成本是多少?
學生的解答:
假設 x 為以平方英尺為單位的安裝面積。
成本:
1. 土地成本:100x
2. 太陽能板成本:250x
3. 維護成本:100,000 + 100x
總成本:100x + 250x + 100,000 + 100x = 450x + 100,000
(注意上方的答案,維護成本是錯誤的,應該是 100,000 + 10x 才對)
ChatGPT 給的答覆:
這樣要求直接給答案,會得到錯誤的判斷,但是如果我們給它整理頭緒的指令,它就會得到正確的答案了。
範例:
你的任務是判斷學生的答案是正確還是錯誤。
請以下方的步驟來判斷:
- 先以你自己的解決方案針對問題做解答
- 然後比較你的解決方式和學生的解決方式來判斷學生的是否正確
在你自己解出問題之前不要決定學生的解決方式的正確與否
使用下方的格式:
問題:
```
問題的描述會在這裏
```
實際的解答:
```
解答的步驟跟你的解決方案在這
```
學生的解答與實際的解答計算後是否相同:
```
是或者否
```
學生的分數:
```
正確或者不正確
```
問題:
```
我正在建立一個太陽能發電設施,需要幫助計算財務數據。
- 土地成本為每平方英尺 100 美元。
- 我可以以每平方英尺 250 美元的價格購買太陽能板。
- 我談到了一份維護合同,每年將花費我 100,000 美元的固定費用,
外加每平方英尺需要額外 10 美元。
以每平方英尺的數量作為函數來回答,
第一年運營的總成本是多少?
```
學生的解答:
```
假設 x 為以平方英尺為單位的安裝面積。
成本:
1. 土地成本:100x
2. 太陽能板成本:250x
3. 維護成本:100,000 + 100x
總成本:100x + 250x + 100,000 + 100x = 450x + 100,000
```
ChatGPT (GPT4)的回覆:
ChatGPT3.5 的回覆(注意它還是錯的):
(請注意,上方這個提示,ChatGPT3.5 與 ChatGPT4 有不一樣的回覆,所以 GPT4 的邏輯思考更強些是很明顯的,不過也可間接證明: 即使使用了 ChainOfThought 的手法,再加上強如 GPT3.5 的大型語言模型,它的推理能力也是不太可靠。)
模型的限制
ChatGPT 這類大型語言模型最為人詬病的,就是會有講的頭頭是道,但卻是瞎掰的,所謂【幻覺】的現象。我們直接來看一個範例:
跟我說說痞子客出版的拉不拉丁星球這本書
ChatGPT 的回覆:
它回覆的煞有其事,但是這其實一切都只是一個瞎掰的問題。而課程裏面有介紹到一個減少幻覺的方式。就是加上一段【請先尋找相關的資訊再依照相關的資訊來回答問題】的提示,但是經過實際的確認,其實幫助不大,我們和大家分享其中一個ChatGPT(GPT3.5)回答得比較好的範例:
但是相同的,ChatGPT4 回覆的就很精準。即使我們沒有加上【請先尋找相關的資訊再依照相關的資訊來回答問題】這句提示,如下: