完成端點(diǎn)可用于各種任務(wù)。它為我們的任何模型提供了一個(gè)簡(jiǎn)單但功能強(qiáng)大的界面。您輸入一些文本作為提示,模型將生成一個(gè)文本補(bǔ)全,嘗試匹配您提供的任何上下文或模式。例如,如果您向 API 提供提示, "As Descartes said, I think, therefore", 它將很有可能返回 " I am" 。
開始探索補(bǔ)全的最佳方式是通過(guò)我們的 Playground。它只是一個(gè)文本框,您可以在其中提交提示以生成完成。
Write a tagline for an ice cream shop.
提交后,您會(huì)看到如下內(nèi)容:
Write a tagline for an ice cream shop.
We serve up smiles with every scoop!
您看到的實(shí)際完成情況可能有所不同,因?yàn)槟J(rèn)情況下 API 是不確定的。這意味著即使您的提示保持不變,您每次調(diào)用它時(shí)可能會(huì)得到略微不同的完成。將 temperature 設(shè)置為 0 將使輸出大部分具有確定性,但可能會(huì)保留少量可變性。
這個(gè)簡(jiǎn)單的文本輸入、文本輸出界面意味著您可以通過(guò)提供說(shuō)明或您希望它做什么的幾個(gè)示例來(lái)“編程”模型。它的成功通常取決于任務(wù)的復(fù)雜性和提示的質(zhì)量。一個(gè)好的經(jīng)驗(yàn)法則是考慮如何為中學(xué)生寫一個(gè)應(yīng)用題來(lái)解決。一個(gè)寫得很好的提示提供了足夠的信息讓模型知道你想要什么以及它應(yīng)該如何響應(yīng)。
本指南涵蓋了一般的提示設(shè)計(jì)最佳實(shí)踐和示例。
請(qǐng)記住,默認(rèn)模型的訓(xùn)練數(shù)據(jù)將在 2021 年中斷,因此它們可能不了解時(shí)事。我們計(jì)劃在未來(lái)增加更多的持續(xù)培訓(xùn)。
我們的模型可以做任何事情,從生成原創(chuàng)故事到執(zhí)行復(fù)雜的文本分析。因?yàn)樗麄兛梢宰龊芏嗍虑?,所以你必須明確描述你想要什么。展示,而不僅僅是講述,通常是獲得良好提示的秘訣。
創(chuàng)建提示的三個(gè)基本準(zhǔn)則:
展示和講述。通過(guò)說(shuō)明、示例或兩者的結(jié)合,明確您想要什么。如果您希望模型按字母順序?qū)?xiàng)目列表進(jìn)行排名或按情緒對(duì)段落進(jìn)行分類,請(qǐng)向它展示您想要的。
提供質(zhì)量數(shù)據(jù)。如果您正在嘗試構(gòu)建分類器或讓模型遵循某種模式,請(qǐng)確保有足夠的示例。一定要校對(duì)你的例子——模型通常足夠聰明,可以看穿基本的拼寫錯(cuò)誤并給你一個(gè)回應(yīng),但它也可能認(rèn)為這是故意的,它會(huì)影響回應(yīng)。
檢查您的設(shè)置。 temperature 和 top_p 設(shè)置控制模型在生成響應(yīng)時(shí)的確定性。如果您要求它提供只有一個(gè)正確答案的答復(fù),那么您需要將這些設(shè)置得較低。如果您正在尋找更多樣化的響應(yīng),那么您可能希望將它們?cè)O(shè)置得更高。人們?cè)谑褂眠@些設(shè)置時(shí)犯的第一個(gè)錯(cuò)誤是假設(shè)它們是“聰明”或“創(chuàng)造力”控制。
故障排除
如果您在使用 API 按預(yù)期執(zhí)行時(shí)遇到問(wèn)題,請(qǐng)遵循此清單:
是否清楚預(yù)期的生成結(jié)果應(yīng)該是什么?
有足夠的例子嗎?
你檢查過(guò)你的例子是否有錯(cuò)誤嗎? (API 不會(huì)直接告訴你)
您是否正確使用 temperature 和 top_p?
為了使用 API 創(chuàng)建文本分類器,我們提供了任務(wù)描述和一些示例。在此示例中,我們展示了如何對(duì)推文的情緒進(jìn)行分類。
值得關(guān)注此示例中的幾個(gè)功能:
使用通俗易懂的語(yǔ)言來(lái)描述您的輸入和輸出。我們對(duì)輸入“Tweet”和預(yù)期輸出“Sentiment”使用通俗易懂的語(yǔ)言。作為最佳實(shí)踐,從簡(jiǎn)單的語(yǔ)言描述開始。雖然您通常可以使用速記或鍵來(lái)指示輸入和輸出,但最好從盡可能具有描述性開始,然后向后工作以刪除多余的單詞并查看性能是否保持一致。
顯示 API 如何響應(yīng)任何情況。在此示例中,我們?cè)谥噶钪邪丝赡艿那榫w標(biāo)簽。中性標(biāo)簽很重要,因?yàn)樵诤芏嗲闆r下,即使是人類也很難確定某事是積極的還是消極的,以及兩者都不是的情況。
對(duì)于熟悉的任務(wù),您需要更少的示例。對(duì)于這個(gè)分類器,我們不提供任何示例。這是因?yàn)?nbsp;API 已經(jīng)理解了情緒和推文的概念。如果您正在為 API 可能不熟悉的內(nèi)容構(gòu)建分類器,則可能需要提供更多示例。
提高分類器的效率
現(xiàn)在我們已經(jīng)掌握了如何構(gòu)建分類器,讓我們以該示例為例并使其更加高效,以便我們可以使用它從一次 API 調(diào)用中獲取多個(gè)結(jié)果。
我們提供了一個(gè)帶編號(hào)的推文列表,這樣 API 就可以在一次 API 調(diào)用中對(duì)五個(gè)(甚至更多)推文進(jìn)行評(píng)分。
請(qǐng)務(wù)必注意,當(dāng)您要求 API 創(chuàng)建列表或評(píng)估文本時(shí),您需要格外注意您的概率設(shè)置(Top P 或 Temperature)以避免漂移。
通過(guò)運(yùn)行多個(gè)測(cè)試確保您的概率設(shè)置得到正確校準(zhǔn)。
不要讓您的列表太長(zhǎng),否則 API 可能會(huì)發(fā)生變化。
您可以使用 API 完成的最強(qiáng)大但最簡(jiǎn)單的任務(wù)之一是產(chǎn)生新的想法或輸入版本。您可以詢問(wèn)任何內(nèi)容,從故事創(chuàng)意到商業(yè)計(jì)劃,再到人物描述和營(yíng)銷口號(hào)。在此示例中,我們將使用 API 來(lái)創(chuàng)建在健身中使用虛擬現(xiàn)實(shí)的想法。
如果需要,您可以通過(guò)在提示中包含一些示例來(lái)提高響應(yīng)質(zhì)量。
API 非常擅長(zhǎng)與人甚至與自己進(jìn)行對(duì)話。僅需幾行指令,我們就已經(jīng)看到 API 作為一個(gè)客戶服務(wù)聊天機(jī)器人運(yùn)行,它可以智能地回答問(wèn)題而不會(huì)感到慌張,或者是一個(gè)聰明的開玩笑的對(duì)話伙伴,可以開玩笑和雙關(guān)語(yǔ)。關(guān)鍵是告訴 API 它應(yīng)該如何表現(xiàn),然后提供一些示例。
以下是扮演 AI 回答問(wèn)題角色的 API 示例:
這就是創(chuàng)建能夠進(jìn)行對(duì)話的聊天機(jī)器人所需的全部。在其簡(jiǎn)單性的背后,有幾件事情值得關(guān)注:
我們告訴 API 意圖,但我們也告訴它如何表現(xiàn)。就像其他提示一樣,我們將 API 提示到示例所代表的內(nèi)容中,但我們還添加了另一個(gè)關(guān)鍵細(xì)節(jié):我們明確說(shuō)明如何與短語(yǔ)“助手很有幫助、有創(chuàng)意、聰明且非常友好”進(jìn)行交互。 “如果沒(méi)有該指令,API 可能會(huì)偏離并模仿與之交互的人,并變得諷刺或我們想要避免的其他行為。
我們給 API 一個(gè)身份。一開始我們讓 API 作為 AI 助手響應(yīng)。雖然 API 沒(méi)有內(nèi)在身份,但這有助于它以盡可能接近事實(shí)的方式做出響應(yīng)。您可以通過(guò)其他方式使用身份來(lái)創(chuàng)建其他類型的聊天機(jī)器人。如果您告訴 API 以一名作為生物學(xué)研究科學(xué)家的女性的身份做出回應(yīng),您將從 API 中獲得智能和深思熟慮的評(píng)論,類似于您對(duì)具有該背景的人的期望。
在這個(gè)例子中,我們創(chuàng)建了一個(gè)聊天機(jī)器人,它有點(diǎn)諷刺并且不情愿地回答問(wèn)題:
為了創(chuàng)建一個(gè)有趣且有點(diǎn)幫助的聊天機(jī)器人,我們提供了一些問(wèn)題和答案示例,展示了 API 如何回復(fù)。所需要的只是一些諷刺的回應(yīng),API 能夠識(shí)別模式并提供無(wú)窮無(wú)盡的諷刺回應(yīng)。
API 是一種語(yǔ)言模型,熟悉單詞和字符用于表達(dá)信息的各種方式。這范圍從自然語(yǔ)言文本到代碼和英語(yǔ)以外的語(yǔ)言。 API 還能夠在允許它以不同方式總結(jié)、轉(zhuǎn)換和表達(dá)內(nèi)容的級(jí)別上理解內(nèi)容。
在此示例中,我們向 API 展示了如何將英語(yǔ)轉(zhuǎn)換為法語(yǔ)、西班牙語(yǔ)和日語(yǔ):
此示例之所以有效,是因?yàn)?nbsp;API 已經(jīng)掌握了這些語(yǔ)言,因此無(wú)需嘗試教授它們。
如果您想將英語(yǔ)翻譯成 API 不熟悉的語(yǔ)言,則需要為其提供更多示例,甚至需要微調(diào)模型以使其流暢地完成。
在此示例中,我們將電影名稱轉(zhuǎn)換為表情符號(hào)。這顯示了 API 對(duì)選取模式和處理其他字符的適應(yīng)性。
API能夠理解文本的內(nèi)容,并用不同的方式重新表達(dá)它。在這個(gè)例子中,我們從一個(gè)更長(zhǎng)、更復(fù)雜的文本段落中創(chuàng)建了一個(gè)孩子能理解的解釋。這說(shuō)明API對(duì)語(yǔ)言有很深的掌握。
雖然所有的提示都會(huì)產(chǎn)生補(bǔ)全,但在你想讓API接著你的話說(shuō)下去的情況下,把文本補(bǔ)全當(dāng)作一個(gè)單獨(dú)的任務(wù)來(lái)考慮可能會(huì)有幫助。例如,如果給出這個(gè)提示,API會(huì)繼續(xù)關(guān)于垂直農(nóng)業(yè)的思路。你可以降低 temperature 設(shè)置,讓API更專注于提示的意圖,或者提高它,讓它偏離主題。
下一個(gè)提示顯示了如何使用補(bǔ)全來(lái)幫助編寫 React 組件。我們向 API 發(fā)送一些代碼,它能夠繼續(xù)剩下的,因?yàn)樗私?nbsp;React 庫(kù)。我們建議將我們的 Codex 模型用于涉及理解或生成代碼的任務(wù)。
事實(shí)回應(yīng)
API 有很多知識(shí),這些知識(shí)是從它接受訓(xùn)練的數(shù)據(jù)中學(xué)到的。它還能夠提供聽起來(lái)非常真實(shí)但實(shí)際上是虛構(gòu)的響應(yīng)。有兩種方法可以限制 API 編造答案的可能性。
為 API 提供基本事實(shí)。如果您向 API 提供文本正文來(lái)回答有關(guān)問(wèn)題(如維基百科條目),那么它就不太可能偽造響應(yīng)。
使用低概率并向 API 展示如何說(shuō)“我不知道”。如果 API 理解在不太確定回答“我不知道”或某些變體是否合適的情況下,它就不太愿意編造答案。
在此示例中,我們?yōu)?nbsp;API 提供它知道的問(wèn)題和答案示例,然后提供它不知道的示例并提供問(wèn)號(hào)。我們還將概率設(shè)置為零,這樣 API 更有可能以“?”響應(yīng)。如果有任何疑問(wèn)。
插入文字
完成端點(diǎn)還支持通過(guò)提供除前綴提示之外的后綴提示來(lái)在文本中插入文本。在編寫長(zhǎng)文本、段落之間的過(guò)渡、遵循大綱或引導(dǎo)模型走向結(jié)尾時(shí),這種需求自然會(huì)出現(xiàn)。這也適用于代碼,可用于插入函數(shù)或文件的中間。
為了說(shuō)明后綴語(yǔ)境對(duì)我們預(yù)測(cè)能力的重要性,考慮這個(gè)提示,“今天我決定做一個(gè)大改變?!庇泻芏喾N方式可以想象完成這句話。但如果我們現(xiàn)在提供故事的結(jié)尾:“我得到了很多人對(duì)我的新發(fā)型的贊美!”,那么預(yù)期的補(bǔ)全就變得清楚了。
通過(guò)為模型提供額外的上下文,它可以更加可控。然而,這對(duì)模型來(lái)說(shuō)是一個(gè)更具約束性和挑戰(zhàn)性的任務(wù)。
最佳實(shí)踐
插入文本是 Beta 版的一項(xiàng)新功能,您可能需要修改 API 的使用方式以獲得更好的結(jié)果。以下是一些最佳實(shí)踐:
使用 max_tokens > 256。該模型更擅長(zhǎng)插入更長(zhǎng)的補(bǔ)全。如果 max_tokens 太小,模型可能會(huì)在連接到后綴之前被切斷。請(qǐng)注意,即使使用更大的 max_tokens,您也只會(huì)根據(jù)生成的代幣數(shù)量付費(fèi)。
更喜歡 finish_reason == “stop”。當(dāng)模型到達(dá)自然停止點(diǎn)或用戶提供的停止序列時(shí),它會(huì)將 finish_reason 設(shè)置為“停止”。這表明該模型已設(shè)法很好地連接到后綴,并且是完成質(zhì)量的良好信號(hào)。這對(duì)于在使用 n > 1 或重采樣時(shí)在幾個(gè)完成之間進(jìn)行選擇尤其相關(guān)(請(qǐng)參閱下一點(diǎn))。
重新采樣 3-5 次。雖然幾乎所有補(bǔ)全都連接到前綴,但在更困難的情況下,模型可能難以連接后綴。我們發(fā)現(xiàn),在這種情況下,重采樣 3 次或 5 次(或使用 k=3,5 的 best_of)并選擇帶有“stop”作為其 finish_reason 的樣本可能是一種有效的方法。重采樣時(shí),您通常需要更高的溫度來(lái)增加多樣性。
注意:如果所有返回的樣本都有 finish_reason == "length",很可能是 max_tokens 太小,模型在設(shè)法自然地連接提示和后綴之前用完了標(biāo)記??紤]在重采樣之前增加 max_tokens。
嘗試提供更多線索。在某些情況下,為了更好地幫助模型的生成,您可以通過(guò)提供一些模式示例來(lái)提供線索,模型可以遵循這些模式來(lái)決定自然停止的位置。
編輯文本
edits 端點(diǎn)可用于編輯文本,而不僅僅是完成文本。您提供一些文本和如何修改它的說(shuō)明,text-davinci-edit-001 模型將嘗試相應(yīng)地對(duì)其進(jìn)行編輯。這是用于翻譯、編輯和調(diào)整文本的自然界面。這對(duì)于重構(gòu)和使用代碼也很有用。請(qǐng)?jiān)L問(wèn)我們的代碼指南以了解更多信息。在此初始測(cè)試期間,編輯端點(diǎn)的使用是免費(fèi)的。
更多建議: