OpenAI文本生成模型指南
- 1339字
- 7分鐘
- 2024-06-27
OpenAI的文本生成模型(通常稱為生成預訓練變換器或大型語言模型)已經訓練成能夠理解自然語言、代碼和圖像。這些模型根據輸入生成文本輸出。輸入通常被稱為“提示”(prompts)。設計提示本質上是如何“編程”大型語言模型,通常通過提供指令來實現。
應用場景
使用OpenAI的文本生成模型,您可以構建以下應用程序:
- 起草文檔
- 編寫計算機代碼
- 回答關於知識庫的問題
- 分析文本
- 為軟件提供自然語言接口
- 各種學科的輔導
- 翻譯語言
- 模擬遊戲角色
隨著gpt-4-turbo的發布,現在還可以構建處理和理解圖像的系統。
如何使用模型
要通過OpenAI API使用這些模型,需要發送包含輸入和API密鑰的請求,並接收包含模型輸出的響應。最新的模型gpt-4o和gpt-4等可以通過Chat Completions API訪問。
模型和API
模型 | API |
---|---|
新模型(2023年及以後) | gpt-4o, gpt-4, gpt-3.5-turbo https://api.openai.com/v1/chat/completions |
更新的傳統模型(2023年) | gpt-3.5-turbo-instruct, babbage-002, davinci-002 https://api.openai.com/v1/completions |
您可以在聊天操場中試驗各種模型。如果不確定使用哪個模型,可以使用gpt-3.5-turbo或gpt-4o。
Chat Completions API
聊天模型接受一系列消息作為輸入,並返回由模型生成的消息作為輸出。雖然聊天格式設計為便於多輪對話,但它同樣適用於沒有任何對話的單輪任務。
示例調用
1from openai import OpenAI2client = OpenAI()3
4response = client.chat.completions.create(5 model="gpt-3.5-turbo",6 messages=[7 {"role": "system", "content": "You are a helpful assistant."},8 {"role": "user", "content": "Who won the world series in 2020?"},9 {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."},10 {"role": "user", "content": "Where was it played?"}11 ]12)
主要輸入是messages
參數。消息必須是一個消息對象數組,每個對象都有一個角色(“system”、“user”或“assistant”)和內容。對話可以短至一條消息或多輪往返。
JSON模式
常見的用法是指示模型始終返回適合您用例的JSON對象,通過在系統消息中指定這一點。可以通過設置response_format
為{ "type": "json_object" }
來啟用JSON模式。
示例調用
1from openai import OpenAI2client = OpenAI()3
4response = client.chat.completions.create(5 model="gpt-3.5-turbo-0125",6 response_format={ "type": "json_object" },7 messages=[8 {"role": "system", "content": "You are a helpful assistant designed to output JSON."},9 {"role": "user", "content": "Who won the world series in 2020?"}10 ]11)12print(response.choices[0].message.content)
在此示例中,響應包含一個JSON對象,如下所示:
1"content": "{\"winner\": \"Los Angeles Dodgers\"}"
管理Token
語言模型以稱為token的塊來讀取和寫入文本。在英語中,一個token可以短至一個字符或長至一個單詞(例如,“a”或“apple”)。API調用中的總token數影響:
- API調用的成本,因為您按token付費
- API調用的時間,因為寫入更多token需要更多時間
- API調用是否成功,因為總token數必須低於模型的最大限制(對於gpt-3.5-turbo為4097個token)
參數詳情
頻率和存在懲罰
frequency
和presence
懲罰參數可以用來減少採樣重複token序列的可能性。合理的懲罰係數值大約在0.1到1之間,如果目的是稍微減少重複樣本。如果目的是強烈抑制重複,則可以將係數增加到2,但這可能顯著降低樣本質量。
Completions API
completions
API端點在2023年7月進行了最終更新,並且與新的chat completions
端點有不同的接口。輸入是一段自由格式的文本字符串,稱為提示(prompt)。
示例調用
1from openai import OpenAI2client = OpenAI()3
4response = client.completions.create(5 model="gpt-3.5-turbo-instruct",6 prompt="Write a tagline for an ice cream shop."7)
Chat Completions vs. Completions
Chat Completions
格式可以通過構造使用單個用戶消息的請求,使其類似於completions
格式。區別在於底層模型的可用性。chat completions
API是功能最強大的模型(gpt-4o)和最具成本效益的模型(gpt-3.5-turbo)的接口。
哪個模型適合?
我們通常建議您使用gpt-4o或gpt-3.5-turbo。使用哪個取決於您使用模型的任務的複雜性。gpt-4o在廣泛的評估中表現更好,特別是在仔細遵循複雜指令方面。相比之下,gpt-3.5-turbo更可能只遵循複雜多部分指令的一部分。gpt-4o不太可能編造信息,這種行為被稱為“幻覺”。gpt-4o還有一個更大的上下文窗口,最大為128,000個token,而gpt-3.5-turbo為4,096個token。然而,gpt-3.5-turbo返回輸出的延遲較低,每個token的成本也低得多。
常見問題
如何設置溫度參數?
溫度值較低(例如0.2)會產生更一致的輸出,而較高的溫度值(例如1.0)會生成更多樣化和創造性的結果。根據您的具體應用選擇溫度值,以在連貫性和創造性之間取得平衡。溫度範圍從0到2。
最新模型是否可以進行微調?
目前可以微調gpt-3.5-turbo和基礎模型(babbage-002和davinci-002)。
應該使用ChatGPT還是API?
ChatGPT為模型提供了一個聊天界面,並內置了一系列功能,如集成瀏覽、代碼執行、插件等。相比之下,使用OpenAI的API提供了更多的靈活性,但需要編寫代碼或以編程方式向模型發送請求。