ChatGPT模型指南--gpt-3.5-turbo
發(fā)布日期:2023/5/13 13:15:19 瀏覽量:
使用OpenAI API,您可以使用gpt-3.5-turbo構(gòu)建自己的應(yīng)用程序,以執(zhí)行以下操作:
- 起草一封電子郵件或一些文章
- 編寫Python代碼
- 回答一些文檔類的問(wèn)題
- 創(chuàng)建對(duì)話代理
- 給你的軟件一個(gè)自然語(yǔ)言界面
- 一系列科目的導(dǎo)師
- 語(yǔ)言翻譯
- 模擬電子游戲角色等
本指南解釋了如何對(duì)基于聊天的語(yǔ)言模型進(jìn)行API調(diào)用,并分享了一些提示和技巧,以幫助你獲得好的結(jié)果。您還可以在OpenAI Playground中快速嘗試這些內(nèi)容。
介紹
聊天模型將一系列消息作為輸入,并返回模型生成的消息作為輸出。
雖然聊天格式旨在使多輪對(duì)話變得容易,但它對(duì)于沒(méi)有任何對(duì)話的單輪任務(wù)(例如以前由text-davinci-003等模型的指令提供的任務(wù))也同樣有用。
API調(diào)用示例如下所示:
# Note: you need to be using OpenAI Python v0.27.0 for the code below to work import openai openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Who won the world series in 2020?"}, {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, {"role": "user", "content": "Where was it played?"} ] )
主要輸入是消息參數(shù)。消息必須是消息對(duì)象的數(shù)組,其中每個(gè)對(duì)象都有一個(gè)角色(“system”、“role”或“assistant”)和內(nèi)容(消息的內(nèi)容)。對(duì)話可以短至1條消息或很多頁(yè)的消息。
通常,對(duì)話首先格式化為系統(tǒng)消息,然后是交替的用戶消息和助理消息。
系統(tǒng)消息有助于設(shè)置助手的行為。在上面的例子中,助理被指示“You are a helpful assistant.”。
gpt-3.5-turbo-0301并不總是非常關(guān)注系統(tǒng)消息。將對(duì)未來(lái)的模型進(jìn)行培訓(xùn),以更加關(guān)注系統(tǒng)信息。
用戶消息有助于指導(dǎo)助手。它們可以由應(yīng)用程序的最終用戶生成,也可以由開(kāi)發(fā)人員設(shè)置為指令。
助理消息有助于存儲(chǔ)之前的回復(fù)。它們也可以由開(kāi)發(fā)人員編寫,以幫助提供所需行為的示例。
當(dāng)用戶說(shuō)明引用之前的消息時(shí),包括對(duì)話歷史記錄會(huì)有所幫助。在上面的例子中,用戶的最后一個(gè)問(wèn)題是“在哪里比賽的?”就是通過(guò)提前設(shè)置的對(duì)話消息來(lái)幫助回答。由于模型沒(méi)有過(guò)去請(qǐng)求的記憶,因此所有相關(guān)信息必須通過(guò)對(duì)話提供。如果對(duì)話無(wú)法滿足模型的令牌限制,則需要以某種方式縮短。
API響應(yīng)示例如下所示:
{
’id’: ’chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve’,
’object’: ’chat.completion’,
’created’: 1677649420,
’model’: ’gpt-3.5-turbo’,
’usage’: {’prompt_tokens’: 56, ’completion_tokens’: 31, ’total_tokens’: 87},
’choices’: [
{
’message’: {
’role’: ’assistant’,
’content’: ’The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.’},
’finish_reason’: ’stop’,
’index’: 0
}
]
}
在Python中,助手的回復(fù)可以通過(guò)response[’choices’][0][’message’][’content’]提取。
每個(gè)響應(yīng)都將包含一個(gè)finish_reason,finish_reason的可能值是:
- stop:API返回完整的模型輸出
- length:由于max_tokens參數(shù)或令牌限制,模型輸出不完整
- content_filter:由于我們內(nèi)容過(guò)濾器中的旗幟而省略的內(nèi)容
- null:API響應(yīng)仍在進(jìn)行中或不完整
什么是Token令牌?
語(yǔ)言模型以稱為token令牌的塊來(lái)讀取文本。在英語(yǔ)中,令牌可以短至一個(gè)字符,也可以短至一個(gè)單詞(例如,a或 apple),在某些語(yǔ)言中,令牌甚至可以短于一個(gè)字符,甚至長(zhǎng)于一個(gè)單詞。
例如,字符串"ChatGPT is great!"編碼為六個(gè)令牌:["Chat", "G", "PT", " is", " great", "!"]。
API調(diào)用中的令牌總數(shù)會(huì)影響:
- 當(dāng)您為每個(gè)令牌支付時(shí),您的API調(diào)用成本是多少
- 您的API調(diào)用需要多長(zhǎng)時(shí)間,因?yàn)榫帉懜嗔钆菩枰鄷r(shí)間
- 您的API調(diào)用是否有效,因?yàn)榭偭钆票仨毜陀谀P偷淖畲笙拗疲╣pt-3.5-turbo-0301為4096個(gè)令牌)
輸入和輸出令牌都計(jì)入這些數(shù)量。例如,如果您的API調(diào)用在消息輸入中使用了10個(gè)令牌,而您在消息輸出中收到了20個(gè)令牌,您將被收取30個(gè)令牌的費(fèi)用。
要查看API調(diào)用使用了多少令牌,請(qǐng)檢查API響應(yīng)中的usage字段(例如,response[’usage’][’total_tokens’])。
像gpt-3.5-turbo聊天模型使用令牌的方式與其他模型相同,但由于它們基于消息的格式,更難計(jì)算對(duì)話將使用多少令牌。
要查看文本字符串中有多少個(gè)令牌,無(wú)需進(jìn)行API調(diào)用,請(qǐng)使用OpenAI的tiktoken Python庫(kù)。示例代碼可以在OpenAI Cookbook關(guān)于如何使用tiktoken計(jì)算令牌的指南中找到。
傳遞給API的每條消息都會(huì)消耗內(nèi)容、角色和其他字段中的令牌數(shù)量,外加一些用于幕后格式化的額外令牌。這在未來(lái)可能會(huì)略有變化。
如果對(duì)話的令牌太多,無(wú)法滿足模型的最大限制(例如,gpt-3.5-turbo的令牌超過(guò)4096個(gè)),您必須截?cái)?、省略或以其他方式縮小文本,直到它適合。請(qǐng)注意,如果消息從消息輸入中刪除,模型對(duì)內(nèi)容的真正意義可能理解不準(zhǔn)確。
另請(qǐng)注意,長(zhǎng)時(shí)間的對(duì)話更有可能收到不完整的回復(fù)。例如,一個(gè)長(zhǎng)達(dá)4090個(gè)令牌的gpt-3.5-turbo對(duì)話將在僅6個(gè)令牌后被切斷回復(fù)。
指導(dǎo)聊天模型
指導(dǎo)模型的最佳實(shí)踐可能會(huì)隨著版本有所變化。以下建議適用于gpt-3.5-turbo-0301,可能不適用于未來(lái)的模型。
許多對(duì)話從系統(tǒng)消息開(kāi)始,以溫和地指導(dǎo)助理。例如,以下是用于ChatGPT的系統(tǒng)消息之一:
您是ChatGPT,一個(gè)由OpenAI訓(xùn)練的大型語(yǔ)言模型。盡可能簡(jiǎn)潔地回答。知識(shí)截止:{knowledge_cutoff}當(dāng)前日期:{current_date}
一般來(lái)說(shuō),gpt-3.5-turbo-0301沒(méi)有非常關(guān)注系統(tǒng)消息,因此重要指令通常最好放在用戶消息中。
如果模型沒(méi)有生成您想要的輸出,請(qǐng)隨意迭代并嘗試潛在的改進(jìn)。你可以嘗試以下方法:
- 讓你的指示更明確
- 指定您想要答案的格式
- 在確定答案之前,讓模型一步一步地思考或辯論利弊
有關(guān)更及時(shí)的工程想法,請(qǐng)閱讀OpenAI Cookbook技術(shù)指南,以提高可靠性。
除了系統(tǒng)消息,temperature和max tokens是影響聊天模型輸出的許多選項(xiàng)中的兩個(gè)。對(duì)于溫度,像0.8這樣的較高值將使輸出更加隨機(jī),而像0.2這樣的較低值將使其更加集中和確定性。在最大令牌的情況下,如果您想將響應(yīng)限制在一定長(zhǎng)度,最大令牌可以設(shè)置為任意數(shù)字。但是,如果您將最大令牌值設(shè)置為5,這可能會(huì)導(dǎo)致問(wèn)題,因?yàn)檩敵鰧⒈磺袛?,結(jié)果對(duì)用戶來(lái)說(shuō)沒(méi)有意義。
【gpt-3.5-turbo】 vs 【text-davinci-003】
由于gpt-3.5-turbo的性能與text-davinci-003相似,但每個(gè)令牌的價(jià)格僅有text-davinci-003的10%,因此建議大多數(shù)開(kāi)發(fā)者使用gpt-3.5-turbo。
如果您使用text-davinci-003將英語(yǔ)翻譯成法語(yǔ):
Translate the following English text to French: "{text}"
等效的gpt-3.5-turbo聊天對(duì)話:
[
{"role": "system", "content": "You are a helpful assistant that translates English to French."},
{"role": "user", "content": ’Translate the following English text to French: "{text}"’}
]
或者甚至只是用戶消息:
[
{"role": "user", "content": ’Translate the following English text to French: "{text}"’}
]
馬上咨詢: 如果您有業(yè)務(wù)方面的問(wèn)題或者需求,歡迎您咨詢!我們帶來(lái)的不僅僅是技術(shù),還有行業(yè)經(jīng)驗(yàn)積累。
QQ: 39764417/308460098 Phone: 13 9800 1 9844 / 135 6887 9550 聯(lián)系人:石先生/雷先生