前言
這算是繼之前整理的那篇筆記: OpenAI Python API Bootcamp 第二節 關於Text Completion API 參數的說明 的續篇,本來是要在那一篇直接進行更新的,但怪的是,可能是因為版主有鎖定,已經太久的文章,不能再編輯,導致那篇文章我沒法修改,由於 OpenAI 隨著 Model 更新,API 部分也增加了不少參數,以下是我參考微軟 Azure OpenAI API 的中文說明文件而來,不過我大致比對過 OpenAI 原始的參數說明,兩者是一致的,不過前一篇,是我參考一些前輩的心得整理的,因此既有的參數部分的說明會更詳細些,有興趣的人,可以針對固定的 prompt 來調整參數,透過 Text Completion API 呼叫的實作來實驗看看參數的影響~
參數列表
參數 | 類型 | 必要項? | 預設 | 描述 |
---|---|---|---|---|
prompt | 字串或陣列 | 選擇性 | <|endoftext|> | 提示您產生完成項,可編碼為字串、字串清單或權杖清單。 請注意,<|endoftext|> 是模型在定型期間看到的文件分隔符號,因此如未指定提示,模型就像是從新文件的開頭產生。 |
max_tokens | 整數 | 選擇性 | 16 | 完成時要產生的權杖數目上限。 提示的權杖計數加上 max_tokens 不能超過模型的內容長度。 除了支援 4096) 的最新模型以外,大部分模型的內容長度為 2048 權杖 (。 |
temperature | number | 選擇性 | 1 | 要使用的取樣溫度,介於 0 到 2 之間。 較高值表示模型會承擔較大風險。 較具創意的應用程式請嘗試 0.9,0 (argmax sampling) 則適合答案定義完善的應用程式。 一般會建議改變這個值或 top_p,但不建議同時改變。 |
top_p | number | 選擇性 | 1 | 核取樣是溫度取樣的替代方法,在此方法中,模型會考慮包含 top_p 機率質量的權杖結果。 因此,0.1 表示只考慮組成前 10% 機率質量的權杖。 一般會建議改變這個值或溫度,但不建議同時改變。 |
logit_bias | map | 選擇性 | null | 修改在完成時出現指定權杖的可能性。 接受 json 物件,此物件會將權杖 (由 GPT 權杖化工具中的權杖識別碼所指定) 對應至 -100 到 100 的相關偏差值。 您可以使用此權杖化工具 (適用於 GPT-2 和 GPT-3) 將文字轉換成權杖識別碼。 在數學上,偏差會先加到模型產生的對數,再取樣。 確切的效果會因模型而異,但介於 -1 到 1 之間的值應該會降低或提高選取的可能性;而 -100 或 100 之類的值應會導致禁止選取或獨佔選取相關權杖。 例如,您可以傳遞 {“50256”: -100} 以防止產生 <|endoftext|> 權杖。 |
user | 字串 | 選用 | 代表使用者的唯一識別碼,可協助監視和偵測濫用 | |
n | 整數 | 選擇性 | 1 | 每個提示要產生的完成項數量。 注意:因為此參數會產生許多完成項,所以會快速消耗權杖配額。 請慎用,並確定有合理的 max_tokens 和停止設定。 |
stream | boolean | 選擇性 | False | 是否要串流回部分進度。 如果設定,在有權杖可用時,權杖將會以僅由伺服器端單向傳送資料事件的形式傳送,由 data: [DONE] 訊息終止資料流。 |
logprobs | 整數 | 選擇性 | null | 包含最可能是權杖之 logprob 的對數機率以及所選權杖。 例如,如果有 10 個 logprob,則 API 會傳回 10 個最可能的權杖清單。 API 一律會傳回取樣權杖的 logprob,因此回應中可能包含多達 logprobs+1 個元素。 這個參數不能與 搭配 gpt-35-turbo 使用。 |
suffix | 字串 | 選用 | null | 完成插入文字之後的尾碼。 |
echo | boolean | 選擇性 | False | 除了完成之外,還回顯提示。 此參數不能搭配 使用 gpt-35-turbo 。 |
stop | 字串或陣列 | 選擇性 | null | API 會停止產生更多權杖的這種序列,最多四個。 傳回的文字不會包含停止序列。 |
presence_penalty | number | 選擇性 | 0 | 介於 -2.0 和 2.0 之間的數字。 正值會根據權杖迄今為止是否出現在文字中來打壓新權杖,提高模型討論新主題的可能性。 |
frequency_penalty | number | 選擇性 | 0 | 介於 -2.0 和 2.0 之間的數字。 正值會根據權杖迄今為止在文字中的出現頻率來打壓新權杖,降低模型重複完全相同行的可能性。 |
best_of | 整數 | 選擇性 | 1 | 產生 best_of 完成伺服器端,並傳回「最佳」(每個權杖具有最低對數機率的 best_of)。 結果不能串流。 搭配 n 時,best_of 控制待選完成項的數目,n 則指定傳回的數目,best_of 必須大於 n。 注意:因為此參數會產生許多完成項,所以會快速消耗權杖配額。 請慎用,並確定有合理的 max_tokens 和停止設定。 此參數不能搭配 使用 gpt-35-turbo 。 |
範例(Python)
Request Example Code:
import os
import openai
openai.api_key = os.getenv("OPENAI_API_KEY")
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello!"}
]
)
print(completion.choices[0].message)
Parameters
{
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
}
Response
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [{
"index": 0,
"message": {
"role": "assistant",
"content": "\n\nHello there, how may I assist you today?",
},
"finish_reason": "stop"
}],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
(以上範例來自 OpenAI Text Create Completion API 官方說明 )