# OpenAI Python API Text Completion API 參數的說明更新

**URL:** https://vip.studycamp.tw/t/openai-python-api-text-completion-api-%E5%8F%83%E6%95%B8%E7%9A%84%E8%AA%AA%E6%98%8E%E6%9B%B4%E6%96%B0/6052
**Category:** Generative AI 生成式人工智慧
**Tags:** 上課筆記
**Created:** [2023年五月10日 02:36 UTC](https://vip.studycamp.tw/t/openai-python-api-text-completion-api-%E5%8F%83%E6%95%B8%E7%9A%84%E8%AA%AA%E6%98%8E%E6%9B%B4%E6%96%B0/6052 "2023-05-10T02:36:40Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![ChrisWei](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/chriswei/32/196_2.png) [@ChrisWei](https://vip.studycamp.tw/u/ChrisWei)
#### Post date: [2023年五月10日 02:36 UTC](https://vip.studycamp.tw/t/openai-python-api-text-completion-api-%E5%8F%83%E6%95%B8%E7%9A%84%E8%AA%AA%E6%98%8E%E6%9B%B4%E6%96%B0/6052/1 "2023-05-10T02:36:40Z")

</div>

### 前言

這算是繼之前整理的那篇筆記: [OpenAI Python API Bootcamp 第二節 關於Text Completion API 參數的說明](https://vip.studycamp.tw/t/topic/5868) 的續篇，本來是要在那一篇直接進行更新的，但怪的是，可能是因為版主有鎖定，已經太久的文章，不能再編輯，導致那篇文章我沒法修改，由於 OpenAI 隨著 Model 更新，API 部分也增加了不少參數，以下是我參考[微軟 Azure OpenAI API 的中文說明文件](https://learn.microsoft.com/zh-tw/azure/cognitive-services/openai/reference)而來，不過我大致比對過 [OpenAI 原始的參數說明](https://platform.openai.com/docs/api-reference/completions/create)，兩者是一致的，不過前一篇，是我參考一些前輩的心得整理的，因此既有的參數部分的說明會更詳細些，有興趣的人，可以針對固定的 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:

```auto
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

```auto
{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Hello!"}]
}

```

#### Response

```auto
{
  "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 官方說明](https://platform.openai.com/docs/api-reference/chat/create?lang=python) )

---

<div class="post-metadata">

### Author: ![sky](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/sky/32/8098_2.png) [@sky](https://vip.studycamp.tw/u/sky)
#### Post date: [2023年五月10日 05:42 UTC](https://vip.studycamp.tw/t/openai-python-api-text-completion-api-%E5%8F%83%E6%95%B8%E7%9A%84%E8%AA%AA%E6%98%8E%E6%9B%B4%E6%96%B0/6052/2 "2023-05-10T05:42:59Z")

</div>

這篇好棒！超級感謝。

自己的文章，過了一段時間無法修改，這是 Discourse 的預設。

因為自己是管理員（任何文章都有權限修改），之前一直不知道。直到上個月 Howard 兄問我，我才發現。

Discourse 已成立將近10年，這樣設定應該有其原因。

我再找時間看看，可不可以時間改長一點（推測可以改）。

再次感謝 Chris 兄！
