OpenAI 提示工程
我們傳送給 AI 模型的輸入提示品質 (例如 Azure OpenAI 中可用的這些),會直接影響我們取回的內容品質。 藉由仔細建構我們傳送至模型的提示,模型便可提供更佳且更有趣的回應。
什麼是提示工程
提示工程是一項設計及最佳化提示,以更妥善地利用 AI 模型的程序。 設計有效的提示對於提示工程的成功至關重要,而且可以大幅改善 AI 模型對特定工作的效能。 藉由提供相關、特定、明確且妥善結構化的提示,可以協助模型進一步了解內容,並產生更精確的回應。
例如,如果我們想要 OpenAI 模型產生產品描述,我們可以提供詳細說明,以描述產品的功能和優點。 藉由提供此內容,模型可以產生更精確且相關的產品描述。
提示工程也可以協助減輕偏差,並改善 AI 模型中的公平性。 藉由設計多元且包容性的提示,我們可以確保模型不會偏向特定群組或觀點。
重要
不論您能設計出多麼優秀的提示,AI 模型的回應都不應該被視為事實,或完全不受偏差影響。 請一律負責任地使用 AI。 如需詳細資訊,請參閱 Microsoft 有關 Azure OpenAI 和 Microsoft AI 原則的透明度資訊。
此外,提示工程可協助我們了解模型用來產生回應的參考。 生成式 AI 模型有大量參數,且其所遵循的邏輯對使用者來說大抵是未知的,因此其提供回應的原理可能會令人困惑。 藉由設計容易理解和解譯的提示,我們可以協助人類進一步了解模型如何產生其回應。 這在醫療保健等領域中特別重要,在這些領域中,了解模型如何做出決策至關重要。
設計自己的提示時,有不同的方法可使用。 其中包括提供指示、內容相關內容、提示或少量範例,以及在提示中正確排序內容。 因為此範疇是一個細緻且變化多端的主題,所以此處涵蓋的方法並不詳盡。
API 端點的考量
本單元其餘部分的範例將著重於 ChatCompletion
。 值得注意的是,ChatCompletion
也可用於非聊天案例,該案例中的系統訊息包含任何指示,並在使用者角色訊息中提供使用者內容。 如有需要,這些範例大部分都可以變更為使用 Completion
端點。
就模型可用性而言,Completion
端點可以搭配 gpt-3
和更早版本使用,而且 ChatCompletion
可以搭配 gpt-35-turbo
和更新版本模型使用。
調整模型參數
除了本單元中所討論的技術之外,調整模型的參數可能會對回應產生重大影響。 具體來說,因為 temperature
和 top_p
(top_probability) 同時控制模型中的隨機性 (不過是以不同的方式),所以最有可能影響模型的回應。
較高的值會產生更具創意性和隨機性回應,但可能較不一致或較不專注。 對於預期為虛構或唯一的回應,增加這些參數的值會有所助益,而想要更一致且具體的內容,則應該使用較低的值。
具體來說,高 temperature
允許句子結構有更多變化,而高 top_p
允許使用的單字有更多變化 (使用各種同義字)。
嘗試使用相同的提示調整這些參數,以查看其如何影響回應。 建議您一次變更 temperature
或 top_p
其中一項,但切勿同時變更兩者。
撰寫有效的提示
Azure OpenAI 模型能夠產生精確度顯著的自然語言查詢回應。 不過,回應的品質很大程度上取決於提示撰寫的如何。 開發人員可以在提示中使用不同技術來最佳化 Azure OpenAI 模型的效能,進而產生更精確的相關回應。
提供明確的指示
向 Azure OpenAI 模型提出明確要求是取得所需結果的方式之一。 盡可能提供描述,模型就能產生最符合您正在尋找的回應。
例如,假設您想要建立新水瓶的產品描述。 請考慮建立與每個提示關聯的回答:
提示
Write a product description for a new water bottle
回應
Introducing the latest addition to our product line - the innovative and eco-friendly water bottle.
Made from high-quality, BPA-free materials, this bottle is designed to keep your beverages at the
perfect temperature for hours. Its sleek and stylish design makes it the perfect accessory for any
outdoor activity or workout session. With its convenient carrying handle and leak-proof lid, you
can take it with you wherever you go, without worrying about spills or leaks. Plus, its easy-to-clean
design ensures that you can use it again and again, making it the perfect choice for anyone looking
for a reliable and sustainable water bottle.
與類似提示相比,具有明確的指示。
提示
Write a product description for a new water bottle that is 100% recycled. Be sure to include that
it comes in natural colors with no dyes, and each purchase removes 10 pounds of plastic from our
oceans
回應
Introducing our newest water bottle, the eco-friendly choice for the conscious consumer. Made from
100% recycled materials and available in natural colors with no dyes, this bottle is not only
stylish but also sustainable. Each purchase of this bottle removes 10 pounds of plastic from
our oceans, making it a responsible choice for those who care about the environment. Its durable
and leak-proof design makes it perfect for outdoor activities, while its easy-to-carry handle
makes it convenient to take on the go. Join us in our mission to reduce plastic waste and choose
this eco-friendly water bottle for your daily hydration needs.
包括需要包含的特定內容,可讓模型知道要新增至描述的資訊,從而更精確地描述新產品。
這個方法可以被推斷為包含複雜的指示,例如要包含的詳細資料項目符號清單、回應長度,或輸出中要包含的所需格式。 請嘗試確切要求您想在結果中看到的內容,您可能會對模型滿足您要求的程度感到驚訝。
指示的格式
格式化指示的方式可能會影響模型解譯提示的方式。 近因偏差可能會影響模型,其中位於提示結尾的資訊對輸出產生的影響,可能會比位於開頭的資訊更大。 您可以重複提示結尾的指示,並評定這對產生的回應有何影響,以取得更好的回應。
在聊天案例中使用 ChatCompletion
時,此近因偏差也會生效,其中提示包含交談中較新的訊息會對回應產生顯著的影響。
主要、支援和基礎內容
包含模型要在其回應中使用的內容,可讓模型以更高的正確性回答。 可以透過兩種方式來考慮內容:主要和支援內容。
主要內容是指查詢主體的內容,例如要翻譯的句子或要摘要的文章。 這個內容通常包含在提示的開頭或結尾 (作為指示且以 ---
區塊區分),提供說明其用途的指示。
例如,假設我們有一篇想進行摘要的長文章。 我們可以將其放在提示中的 ---
區塊中,然後以指示作為結尾。
---
<insert full article here, as primary content>
---
Summarize this article and identify three takeaways in a bulleted list
支援內容是可能會改變回應的內容,但不是提示的重點或主旨。 支援內容的範例包括名稱、偏好、回應中要包含的未來日期等等。 提供支援內容可讓模型做出更完整且更精確的回應,並且更有可能包含所需的資訊。
例如,假設有一封內容很長的促銷電子郵件,模型就能夠擷取重點資訊。 接著,如果您想在提示中新增支援內容,指定您正在尋找的特定內容,則模型可以提供更實用的回應。 在此案例中,電子郵件是主要內容,而您感興趣的是支援內容中的特定內容
---
<insert full email here, as primary content>
---
<the next line is the supporting content>
Topics I'm very interested in: AI, webinar dates, submission deadlines
Extract the key points from the above email, and put them in a bulleted list:
基礎內容為模型提供內容,使其從中獲取回答,以便讓模型能夠提供可靠的回答。 基礎內容可能是您隨後據以提出問題的短文或文章、公司常見問題集文件,或比模型定型資料更近期的資訊。 如果您需要更可靠的最新回應,或需要參考未發佈或特定資訊,強烈建議使用基礎內容。
基礎內容與主要內容不同,因為它是回答提示查詢的資訊來源,而不是用於摘要或翻譯等操作的內容。 例如,提供一篇未發佈的 AI 歷程記錄研究論文時,就可以使用該基礎內容來回答問題。
---
<insert unpublished paper on the history of AI here, as grounding content>
---
Where and when did the field of AI start?
此基礎資料可讓模型提供更精確且更有依據的回答,但其可能不屬於定型的資料集。
提示
提示是建置模型的前置詞,通常有助於以正確的方向塑造回應。 它們通常搭配指示使用,但並非總是如此。 針對程式碼產生提示 (Prompting) 模型時,提示 (Cue) 特別實用。 後續單元會更深入地探討程式碼產生。