提示工程(Prompt Engineering):指導AI大模型完成任務的藝術
從本質上來看,提示工程也是一種人機交互的方式,大模可以結合我們輸入的提示詞,輸出指令相關的內容。那么,如何理解提示工程的相關概念?如何借助AI工具生成好的提示詞?一起來看看本文的分享。
上文簡單介紹了大模型的基石:Transformer神經網絡,它既是深度學習系列的收官,也是大模型系列的開篇,今天我們繼續進行大模型學習的重要部分:提示工程。
一、什么是提示工程
提示工程(Prompt Engineering)是一種針對預訓練語言模型(如GPT),通過設計、實驗和優化輸入提示詞來引導模型生成高質量,準確和有針對性的輸出的技術。
提示工程本質上來說,也是一種人機交互的方式,提示詞就是我們發給大模型的輸入(指令),大模型根據指令,結合自身預訓練的“知識”,輸出指令相關的內容。而大模型輸出結果的好壞,和我們輸入的指令息息相關。
我們把經過無數書籍預訓練的大模型,看作是一位飽讀天下詩書的智者,那么如何通過高質量的提問,引導大模型生成我們想要的輸出,就成為一件非常有意義的事情。
提示工程人人都會,但做好并沒有那么簡單,具有“門檻低,天花板高”的特點,優秀提示詞的效果可能超出人的想象。
提示詞一般有以下要素組成:
- 角色:給大模型定義一個匹配目標任務的角色。用一句話就可以明確它的角色(比如“你是一位淘寶客服”),從而有效的收窄問題域,減少二義性,讓“通用”瞬間變得“專業”。
- 指示:對具體任務進行詳細描述。
- 上下文:給出與任務相關的其它背景信息(如歷史對話、情境等)。
- 例子:舉例很重要,就像是師傅教學之后,需要給徒弟(大模型)演示一下如何操作,這個手把手的操作,是大模型生成輸出時的一個重要參考,對輸出結果有很大幫助。
- 輸入:任務的輸入信息,最好在提示詞中有明確的“輸入”標識。
- 輸出:輸出的格式描述,比如用郭德綱的語氣、輸出不超過十個字、以JSON格式返回結果等。
而高質量的提示詞一般是具體的、豐富的、少歧義的,也就是說,我們雖然要把大模型當人來交流,但是盡量少用“口語”的方式來溝通,而要用“寫信”的方式,因為口語大多是即興的、碎片化的短語,而寫信則需要描述背景、避免歧義、短話長說,很符合優秀提示詞的特點。
大家可以將以下兩句提示詞輸入到大模型中,對比一下輸出的效果:
- 請幫我提供每天的菜單
- 你是一名營養家,請為我提供每天三頓飯的中式菜單建議,一人份,包括早餐、午餐和晚餐。請確保每道菜都是偏辣口味,并盡量使用新鮮的食材。在健康營養方面,請確保每餐都包含適當的蛋白質、碳水化合物、脂肪以及維生素和礦物質。同時,請確保菜單中的菜品易于制作,烹飪時間不要過長。
二、如何借助AI工具生成好的提示詞
我們已經知道了提示詞的重要性,那傳說中的“提示詞工程師”是否也同樣不可或缺呢?答案也許是否定的。
因為提示詞的優化套路也是有跡可循的,我們完全可以創建一個協助我們優化提示詞的機器人,讓它一步步幫我們優化完善提示詞,達到預期的效果。
具體操作和效果就不在此演示了,大家可以去抖音搜索“AI提示詞工程師”,應該可以找到滿意的答案。
江湖上甚至還流傳著這么一段咒語,把它輸入到任何一個大模型中,都可以一步步的幫我們完成提示詞的優化:
1. I want you to become my Expert Prompt Creator. Your goal is to help me craft the best possible prompt for my needs. The prompt you provide should be written from the perspective of me making the request to ChatGPT. Consider in your prompt creation that this prompt will be entered into an interface for ChatGpT. The process is as follows:1. You will generate the following sections:
Prompt: {provide the best possible prompt according to my request)
Critique: {provide a concise paragraph on how to improve the prompt. Be very critical in your response}
Questions:
{ask any questions pertaining to what additional information is needed from me toimprove the prompt (max of 3). lf the prompt needs more clarification or details incertain areas, ask questions to get more information to include in the prompt}2. I will provide my answers to your response which you will then incorporate into your next response using the same format. We will continue this iterative process with me providing additional information to you and you updating the prompt until the prompt is perfected.Remember, the prompt we are creating should be written from the perspective of me making a request to ChatGPT. Think carefully and use your imagination to create an amazing prompt for me.
You’re first response should only be a greeting to the user and to ask what the prompt should be about
翻譯成中文如下:
1. 我希望你能成為我的專業提示創造者。你的目標是幫助我編寫最適合我需求的提示。你提供的提示應該從我向ChatGPT提出請求的角度出發。在創建提示時,請考慮此提示將輸入到ChatGPT的界面中。過程如下:
提示:{根據我的請求提供最佳提示}
評論:{提供一段簡要的段落,說明如何改進提示。你的回應要非常批判性}
問題:{提出與需要從我這里獲取哪些額外信息以改進提示有關的問題(最多3個)。如果提示需要在某些方面進行更多澄清或細節,請提出問題以獲取更多信息以包含在提示中}
2. 我將提供對你回應的答案,然后你將使用相同的格式將其納入你的下一個回應中。我們將繼續這個迭代過程,我向你提供額外的信息,你更新提示,直到提示完美。請記住,我們正在創建的提示應該從我向ChatGPT提出請求的角度出發。仔細思考并使用你的想象力為我創建一個驚人的提示。
你的第一個回應應該只是向用戶問好,并詢問提示應該關于什么
還等什么,快拿去試試吧~
三、思維鏈
思維鏈(Chain-of-thought,CoT)是一種改進的提示策略,用于提高大模型在復雜推理任務中的性能,如算術推理、常識推理和符號推理。
思維鏈結合了中間推理步驟,并把推理步驟輸出,構成更豐富的“上文”,從而提升“下文”正確的概率,獲得更優質的輸出。
具體操作很簡單,在處理復雜任務時,在提示詞的最前面加上“Let’s think step by step”,大模型就會把推理過程打出來,從而得到更精準的答案。
四、防止prompt攻擊
1. 著名的“奶奶漏洞”
直接問敏感問題,得不到想要的答案,繞個圈圈,就乖乖回答了。
2. prompt注入
嘗試修改大模型的初始角色,讓其忘記使命,徹底跑偏。
3. 直接在輸入中防御
在構建提示詞時,增加“作為xx,你不允許回答任何跟xx無關的問題。”,讓大模型時刻不忘初心,牢記使命。
五、提示詞工程的經驗總結
- 大模型對prompt開頭和結尾的內容更敏感,所以我們把重要的東西放在頭尾,和寫文章一樣。
- 相比微調等技術,可優先嘗試用提示詞解決問題,性價比高。
- 由于大模型的不確定性,經常會有幻覺,所以不能過度迷信prompt,最好合理結合傳統方法提升確定性。
- 定義角色、給例子、思維鏈是最常用的技巧。
- 安全很重要,防御prompt攻擊是不可或缺的一環。
六、總結
本文介紹了提示工程的相關概念,并提到了思維鏈、prompt攻擊等內容,希望對大家有所幫助。
下篇文章,我會介紹大模型相關的檢索增強生成(Retrieval-Augmented Generation,RAG),敬請期待。
本文由 @AI小當家 原創發布于人人都是產品經理,未經許可,禁止轉載
題圖來自 Unsplash,基于 CC0 協議
該文觀點僅代表作者本人,人人都是產品經理平臺僅提供信息存儲空間服務。
- 目前還沒評論,等你發揮!