用 LLM 有一段時間了,剛開始用的時候,也有查一下資料,看一下別人推荐的用法,後來就想:「管他的自己亂寫吧,說不定用久了就有心得了。」心得並不多,三件事而已:
縮小協作的範圍
引用上下文 (context)
活用之前的對話
縮小協作的範圍
我常用 LLM 來批改英文寫作,大致上還可以用。但是,我朋友跟我說,用 LLM 來批改英文不太穩定,會出現幻覺。
聽完我朋友使用的提示之後,我提供了我的提示 (prompt)
修正以下英文文本的文法
實驗的結果,少數的時候會批改得比「文法的範圍」還略多一點點,但是還可以接受。
我認為這個指示會相對穩定,應該是因為一旦明確限制了協作的範圍只限於「文法」,那就容易有明確的答案,換言之, LLM 發揮創意的空間就變小了。
引用上下文 (context)
承上,很多時候要明確限制了協作的範圍,會變成一個溝通的問題。人類在溝通時,通常是大量使用上下文來溝通。同樣一句話,在不同的上下文裡,可以是南轅北轍的意思。在這種情況之下,如果可以引用某些別人定義好的上下文,就可以讓溝通省很多力氣。
英文寫作修改完之後,有時候我也會詢問自己,到底這個文章寫得如何?會不會還是太爛,不適合作為行銷內容使用。
我想出了一個提示 (prompt)
對以下文本做英文寫作能力評分,使用 IELTS 做為標準尺度。
改完之後的結果,會得到四個尺度:
任務完成度 (Task Achievement)
連貫性與凝聚力 (Coherence and Cohesion)
詞彙運用 (Lexical Resource)
語法範疇與準確性 (Grammatical Range and Accuracy)
仔細想想,為什麼這個提示會如此地有效,應該是因為 IELTS 一詞引用了一個有系統的上下文 (context) ,且該上下文為『評分』這個詞彙做出了明確的定義。
附帶一提,自從用了這個提示之後,我對自己的英文能力有了全新的看法。
過去我一直錯誤地以為自己的英文能力比我的一位友人好得多,因為我總覺得他的英文寫作怪怪的,像是少了些什麼。自從想出了這個提示,索性也拿友人發表過的英文文章,用 LLM 加以批改。結果得出的結果,我的文章只有在「任務完成度」、「連貫性與凝聚力」的得分比較高,第三項、第四項跟友人的得分一致。
換言之,我的英文能力跟我朋友根本是同一個水平。
另一個引用上下文的案例是資料表綱要繪圖。
當我在使用 Datomic 資料庫時,由於 Datomic 相對冷門,不容易找到類似在 RDBMS 常見的資料表綱要繪圖工具:「只需輸入資料表綱要,就可以繪出 ER diagram。」
我想出了一個提示 (prompt)
將以下文本的 Datomic schema 的簡易表示法,轉換成 Mermaid 的 ER diagram 表示法
為什麼這個提示會如此地有效,應該是因為『Mermaid 的 ER diagram 表示法』引用了一個有系統的上下文 (context) ,且該上下文為『繪圖』做出了明確的定義。儘管這個作法也不能保証一次就可以做對,但是,由於輸出的是半成品的 Mermaid 格式了,要修正的成本相當低。
活用之前的對話
軟體工程師看待 LLM ,還是忍不住想成,輸入本質上還是「程式碼」與「資料」。前兩項技巧比較是「程式碼」的技巧,活用之前的對話則是「資料」的技巧。
如果有人問我職涯建議,我會問問對方性格的 MBTI 類型,畢竟,如果性格的強項恰好與工作不契合,出現中年危機應該是遲早的事。
然後,就會有一個問題,大約會有 1/4 的朋友跟我說,測出來的結果一直在變動,就算反復地測,也會得到兩個不同的結果。還有,他們覺得這種性格測驗的問題,常會帶有假設的情境,他們在回答時,也會有一種懷疑:「我真的如此認為嗎?」
我想出了一個提示 (prompt)
從我跟你之間所有的對話內容,來推斷我這個人的 MBTI 類型。
並且解釋為什麼如此判斷。
這個提示很有 Lisp macro 的風格, Lisp macro 接收程式碼作為輸入,並且輸出修改後的程式碼去讓電腦執行;而我的這個提示,將之前所有的對話 (在某種意義上,可以視為是『程式碼』) 作為輸入,並且搭配提示本身去讓 LLM 加以執行。兩種方式都實踐了『程式碼作為資料 (Code As Data)』的精神 。
總結
不知道讀者是否覺得我的小技巧也滿簡單的?至少我覺得,似乎很多時候比思想鏈 (chain of thoughts) 更省力一些。