參考:聊天完成 | Azure Machine Learning

為指定的聊天交談建立模型回應。

POST /chat/completions?api-version=2024-04-01-preview

URI 參數

名稱 位於 必要 類型​ 描述
api-version query True 字串 格式為 "YYYY-MM-DD" 或 "YYYY-MM-DD-preview" 的 API 版本。

要求標頭

名稱 必要 類型​ 描述
extra-parameters 字串 當承載中指出額外參數時,API 的行為。 使用 pass-through 讓 API 將參數傳遞至基礎模型。 當您想要傳遞您知道基礎模型可支援的參數時,請使用此值。 使用 ignore 可讓 API 卸除任何不支援的參數。 當您需要跨不同模型使用相同的承載時,請使用此值,但如果不支援,其中一個額外的參數可能會讓模型發生錯誤。 使用 error 可讓 API 拒絕承載中的任何額外參數。 只能指出此 API 中指定的參數,或傳回 400 錯誤。
azureml-model-deployment 字串 您想要將要求路由傳送至其中的部署名稱。 對支援多個部署的端點的支援。

要求本文

名稱 必要 類型​ 描述
messages True ChatCompletionRequestMessage 目前比較交談的訊息清單。 如果模型無法理解至少部分訊息,則傳回 422 錯誤。
frequency_penalty 數值 透過減少已使用所選字詞的機會,有助於防止字詞重複。 頻率越高,懲罰也越高,模型便可能無法在輸出中重複相同字詞。 如果模型不支援值或參數,則傳回 422 錯誤。
max_tokens 整數 聊天完成中可產生的權杖數目上限。

輸入權杖和產生權杖的總長度受限於模型的內容長度。 傳遞 Null 將導致模型使用內容長度上限。
presence_penalty 數值 如果某個字詞已經存在於完成中 (即使只有一次),仍可透過懲罰該字詞以協助防止相同主題重複。 如果模型不支援值或參數,則傳回 422 錯誤。
response_format ChatCompletionResponseFormat
seed 整數 如果指定,我們的系統會盡最大努力以決定性方式取樣,讓具有相同 seed 和參數的重複要求應該傳回相同的結果。 不保證決定性,您應該參考 system_fingerprint 回應參數來監視後端中的變更。
停止 API 會停止產生更多權杖的序列。
stream boolean 如果設定,則將傳送部分訊息詳細資料。 在有權杖可用時,權杖將會作為僅限資料的伺服器傳送事件傳送,由 data: [DONE] 訊息終止資料流。
溫度 數值 非負數。 如果模型不支援值,則傳回 422。
tool_choice ChatCompletionToolChoiceOption (部分機器翻譯) 控制模型所呼叫的函式 (若有)。 none 表示模型不會呼叫函式,改為產生訊息。 auto 表示模型可選擇產生訊息或呼叫函式。 透過 {"type": "function", "function": {"name": "my_function"}} 指定特定函式會強制模型呼叫該函式。

當沒有任何函式存在時,none 為預設值。 如果函式存在,auto 為預設值。 如果模型不支援工具,則傳回 422 錯誤。
tools ChatCompletionTool[] 模型可呼叫的工具清單。 目前僅支援函式作為工具。 使用此參數可提供產生 JSON 輸入的函式清單。 如果模型不支援工具,則傳回 422 錯誤。
top_p 數值 核取樣是溫度取樣的替代方法,在此方法中,模型會考慮包含 top_p 機率質量的權杖結果。 因此,0.1 表示只考慮組成前 10% 機率質量的權杖。

一般會建議改變這個值或 temperature,但不建議同時改變。

回覆

名稱 類型​​ 描述
200 OK CreateChatCompletionResponse 確定
401 未經授權 UnauthorizedError 存取權杖遺漏或不正確

標頭

x-ms-error-code:字串
404 找不到 NotFoundError 模型不支援模態。 請查閱模型的文件,以查看有哪些路由可供使用。

標頭

x-ms-error-code:字串
422 無法處理的實體 UnprocessableContentError 要求包含無法處理的內容

標頭

x-ms-error-code:字串
429 要求太多 TooManyRequestsError 您已達到指派的速率限制,而且您的要求必須調整步調。

標頭

x-ms-error-code:字串
其他狀態碼 ContentFilterError 錯誤要求

標頭

x-ms-error-code:字串

安全性

授權

具有 Bearer: 前置詞的權杖,例如 Bearer abcde12345

類型:apiKey
In:標頭

AADToken

Azure Active Directory OAuth2 驗證

類型:oauth2
流程:應用程式
權杖 URL:https://login.microsoftonline.com/common/oauth2/v2.0/token

範例

為指定的聊天交談建立模型回應

範例要求

POST /chat/completions?api-version=2024-04-01-preview

{
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant"
    },
    {
      "role": "user",
      "content": "Explain Riemann's conjecture"
    },
    {
      "role": "assistant",
      "content": "The Riemann Conjecture is a deep mathematical conjecture around prime numbers and how they can be predicted. It was first published in Riemann's groundbreaking 1859 paper. The conjecture states that the Riemann zeta function has its zeros only at the negative even integers and complex numbers with real part 1/21. Many consider it to be the most important unsolved problem in pure mathematics. The Riemann hypothesis is a way to predict the probability that numbers in a certain range are prime that was also devised by German mathematician Bernhard Riemann in 18594."
    },
    {
      "role": "user",
      "content": "Ist it proved?"
    }
  ],
  "frequency_penalty": 0,
  "presence_penalty": 0,
  "max_tokens": 256,
  "seed": 42,
  "stop": "<|endoftext|>",
  "stream": false,
  "temperature": 0,
  "top_p": 1,
  "response_format": { "type": "text" }
}

範例回應

狀態碼:200

{
  "id": "1234567890",
  "model": "llama2-70b-chat",
  "choices": [
    {
      "index": 0,
      "finish_reason": "stop",
      "message": {
        "role": "assistant",
        "content": "No, it has never been proved"
      }
    }
  ],
  "created": 1234567890,
  "object": "chat.completion",
  "usage": {
    "prompt_tokens": 205,
    "completion_tokens": 5,
    "total_tokens": 210
  }
}

定義

名稱 描述
ChatCompletionRequestMessage
ChatCompletionMessageContentPart
ChatCompletionMessageContentPartType
ChatCompletionToolChoiceOption (部分機器翻譯) 控制模型所呼叫的函式 (若有)。 none 表示模型不會呼叫函式,改為產生訊息。 auto 表示模型可選擇產生訊息或呼叫函式。 透過 {"type": "function", "function": {"name": "my_function"}} 指定特定函式會強制模型呼叫該函式。

當沒有任何函式存在時,none 為預設值。 如果函式存在,auto 為預設值。 如果模型不支援工具,則傳回 422 錯誤。
ChatCompletionFinishReason 模型停止產生權杖的原因。 如果模型達到自然停止點或提供的停止序列,則這是 stop,如果達到在要求中指定的權杖數目上限,則這是 length,如果由於內容篩選的旗標而省略內容,則這是 content_filter,如果模型呼叫工具,則這是 tool_calls
ChatCompletionMessageToolCall
ChatCompletionObject 物件類型,一律為 chat.completion
ChatCompletionResponseFormat 模型回應的回應格式。 設定為 json_object 會啟用 JSON 模式,保證模型產生的訊息為有效的 JSON。 使用 JSON 模式時,您也必須透過系統或使用者訊息指示模型自行產生 JSON。 另請注意,如果 finish_reason="length" 表示訊息產生超過 max_tokens 或對話超過最大內容長度,則訊息可能會遭部分截斷。
ChatCompletionResponseFormatType (部分機器翻譯) 回應格式類型。
ChatCompletionResponseMessage 模型產生的聊天完成訊息。
ChatCompletionTool
ChatMessageRole 此訊息作者的角色。
Choices 聊天完成選項的清單。
CompletionUsage 完成要求的使用量統計資料。
ContentFilterError 當提示如設定觸發內容篩選時,API 呼叫會失敗。 修改提示,然後再試一次。
CreateChatCompletionRequest
CreateChatCompletionResponse 根據提供的輸入,表示模型傳回的聊天完成回應。
詳細資料 UnprocessableContentError (部分機器翻譯) 錯誤的詳細資料。
Function 模型所呼叫的函式。
FunctionObject 模型可存取之函式的定義。
ImageDetail 指定影像的詳細程度。
NotFoundError 路由對已部署的模型無效。
ToolType 工具的型別。 目前僅支援 function
TooManyRequestsError 您已達到指派的速率限制,而且您的要求必須調整步調。
UnauthorizedError 驗證遺漏或不正確。
UnprocessableContentError 要求包含無法處理的內容。 根據此規格指出的承載有效時,會傳回錯誤。 不過,基礎模型不支援承載中所指示的一些指示。 使用 details 區段來了解違規的參數。

ChatCompletionFinishReason

模型停止產生權杖的原因。 如果模型達到自然停止點或提供的停止序列,則這是 stop,如果達到在要求中指定的權杖數目上限,則這是 length,如果由於內容篩選的旗標而省略內容,則這是 content_filter,如果模型呼叫工具,則這是 tool_calls

名稱 類型​​ 描述
content_filter 字串
length 字串
停止 字串
tool_calls 字串

ChatCompletionMessageToolCall

名稱 類型​​ 描述
函數 Function 模型所呼叫的函式。
識別碼 字串 工具呼叫的識別碼。
type ToolType 工具的型別。 目前僅支援 function

ChatCompletionObject

物件類型,一律為 chat.completion

名稱 類型​​ 描述
chat.completion 字串

ChatCompletionResponseFormat

模型回應的回應格式。 設定為 json_object 會啟用 JSON 模式,保證模型產生的訊息為有效的 JSON。 使用 JSON 模式時,您也必須透過系統或使用者訊息指示模型自行產生 JSON。 另請注意,如果 finish_reason="length" 表示訊息產生超過 max_tokens 或對話超過最大內容長度,則訊息可能會遭部分截斷。

名稱 類型​​ 描述
type ChatCompletionResponseFormatType (部分機器翻譯) 回應格式類型。

ChatCompletionResponseFormatType

回應格式類型。

名稱 類型​​ 描述
json_object 字串
text 字串

ChatCompletionResponseMessage

模型產生的聊天完成訊息。

名稱 類型​​ 描述
content 字串 訊息的內容。
角色 (role) ChatMessageRole 此訊息作者的角色。
tool_calls ChatCompletionMessageToolCall[] 模型所產生的工具呼叫,例如函式呼叫。

ChatCompletionTool

名稱 類型​​ 描述
函數 FunctionObject
type ToolType 工具的型別。 目前僅支援 function

ChatMessageRole

此訊息作者的角色。

名稱 類型​​ 描述
assistant 字串
系統 字串
工具 字串
user 字串

選項

聊天完成選項的清單。 如果 n 大於 1,則可以有多個。

名稱 類型​​ 描述
finish_reason ChatCompletionFinishReason 模型停止產生權杖的原因。 如果模型達到自然停止點或提供的停止序列,則這是 stop,如果達到在要求中指定的權杖數目上限,則這是 length,如果由於內容篩選的旗標而省略內容,則這是 content_filter,如果模型呼叫工具,則這是 tool_calls
index 整數 選擇清單中的選擇索引。
message ChatCompletionResponseMessage 模型產生的聊天完成訊息。

CompletionUsage

完成要求的使用量統計資料。

名稱 類型​​ 描述
completion_tokens 整數 已產生完成中的權杖數目。
prompt_tokens 整數 提示中的權杖數目。
total_tokens 整數 要求中使用的權杖總數 (提示 + 完成)。

ContentFilterError

當提示如設定觸發內容篩選時,API 呼叫會失敗。 修改提示,然後再試一次。

名稱 類型​​ 描述
code 字串 錯誤碼。
error 字串 錯誤描述。
message 字串 錯誤訊息。
param 字串 觸發內容篩選的參數。
status 整數 HTTP 狀態碼。

CreateChatCompletionRequest

名稱 類型​ 預設值 說明
frequency_penalty 數值 0 透過減少已使用所選字詞的機會,有助於防止字詞重複。 頻率越高,懲罰也越高,模型便可能無法在輸出中重複相同字詞。 如果模型不支援值或參數,則傳回 422 錯誤。
max_tokens 整數 聊天完成中可產生的權杖數目上限。

輸入權杖和產生權杖的總長度受限於模型的內容長度。 傳遞 Null 將導致模型使用內容長度上限。
messages ChatCompletionRequestMessage[] 目前比較交談的訊息清單。 如果模型無法理解至少部分訊息,則傳回 422 錯誤。
presence_penalty 數值 0 如果某個字詞已經存在於完成中 (即使只有一次),仍可透過懲罰該字詞以協助防止相同主題重複。 如果模型不支援值或參數,則傳回 422 錯誤。
response_format ChatCompletionResponseFormat text
seed 整數 如果指定,我們的系統會盡最大努力以決定性方式取樣,讓具有相同 seed 和參數的重複要求應該傳回相同的結果。 不保證決定性,您應該參考 system_fingerprint 回應參數來監視後端中的變更。
停止 API 會停止產生更多權杖的序列。
stream boolean False 如果設定,則將傳送部分訊息詳細資料。 在有權杖可用時,權杖將會作為僅限資料的伺服器傳送事件傳送,由 data: [DONE] 訊息終止資料流。
溫度 數值 1 非負數。 如果模型不支援值,則傳回 422。
tool_choice ChatCompletionToolChoiceOption (部分機器翻譯) 控制模型所呼叫的函式 (若有)。 none 表示模型不會呼叫函式,改為產生訊息。 auto 表示模型可選擇產生訊息或呼叫函式。 透過 {"type": "function", "function": {"name": "my_function"}} 指定特定函式會強制模型呼叫該函式。

當沒有任何函式存在時,none 為預設值。 如果函式存在,auto 為預設值。 如果模型不支援工具,則傳回 422 錯誤。
tools ChatCompletionTool[] 模型可呼叫的工具清單。 目前僅支援函式作為工具。 使用此參數可提供產生 JSON 輸入的函式清單。 如果模型不支援工具,則傳回 422 錯誤。
top_p 數值 1 核取樣是溫度取樣的替代方法,在此方法中,模型會考慮包含 top_p 機率質量的權杖結果。 因此,0.1 表示只考慮組成前 10% 機率質量的權杖。

一般會建議改變這個值或 temperature,但不建議同時改變。

ChatCompletionRequestMessage

名稱 類型​​ 描述
content 字串或 ChatCompletionMessageContentPart[] 訊息的內容。
角色 (role) ChatMessageRole 此訊息作者的角色。
tool_calls ChatCompletionMessageToolCall[] 模型所產生的工具呼叫,例如函式呼叫。

ChatCompletionMessageContentPart

名稱 類型​​ 描述
content 字串 影像的 URL 或 base64 編碼的影像資料。
detail ImageDetail 指定影像的詳細程度。
type ChatCompletionMessageContentPartType 內容部分的類型。

ChatCompletionMessageContentPartType

名稱 類型​​ 描述
text 字串
image 字串
image_url 字串

ChatCompletionToolChoiceOption

控制模型所呼叫的工具 (若有)。

名稱 類型​​ 描述
none 字串 模型不會呼叫任何工具,而是會產生訊息。
自動 字串 模型可以在產生訊息或呼叫一或多個工具之間進行選擇。
必要 字串 模型必須呼叫一或多個工具。
字串 透過 {"type": "function", "function": {"name": "my_function"}} 指定特定工具會強制模型呼叫該工具。

ImageDetail

指定影像的詳細程度。

名稱 類型​​ 描述
自動 字串
愛荷華州 字串
字串

CreateChatCompletionResponse

根據提供的輸入,表示模型傳回的聊天完成回應。

名稱 類型​​ 描述
選擇 Choices[] 聊天完成選項的清單。 如果 n 大於 1,則可以有多個。
created 整數 建立聊天完成時的 Unix 時間戳記 (以秒為單位)。
識別碼 字串 聊天完成的唯一識別碼。
機型 字串 用於聊天完成的模型。
object ChatCompletionObject 物件類型,一律為 chat.completion
system_fingerprint 字串 此指紋代表模型執行時使用的後端組態。

可以搭配 seed 要求參數使用,以了解可能會影響決定性的後端變更是何時進行。
用法 CompletionUsage 完成要求的使用量統計資料。

詳細資料

UnprocessableContentError (部分機器翻譯) 錯誤的詳細資料。

名稱 類型​​ 描述
loc string[] 造成問題的參數
value 字串 傳遞至參數的值造成問題。

函式

模型所呼叫的函式。

名稱 類型​​ 描述
引數 string 呼叫函數所使用的引數,由模型以 JSON 格式產生。 請注意,模型不一定會產生有效的 JSON,而且可能會產生函式結構描述未定義的錯誤參數。 在呼叫函式之前,請先驗證程式代碼中的引數。
NAME 字串 要呼叫的函式名稱。

FunctionObject

模型可存取之函式的定義。

名稱 類型​​ 描述
description 字串 函式用途的說明,由模型使用來選擇呼叫函式的時機和方式。
NAME 字串 要呼叫函式的名稱。 必須是 a-z、A-Z、0-9,或包含底線或虛線,長度上限為 64。
parameters object 函式接受的參數,描述為 JSON 結構描述物件。 省略 parameters 定義具有空白參數清單的函式。

NotFoundError

名稱 類型​​ 描述
error 字串 錯誤描述。
message 字串 錯誤訊息。
status 整數 HTTP 狀態碼。

ToolType

工具的型別。 目前僅支援 function

名稱 類型​​ 描述
函數 字串

TooManyRequestsError

名稱 類型​​ 描述
error 字串 錯誤描述。
message 字串 錯誤訊息。
status 整數 HTTP 狀態碼。

UnauthorizedError

名稱 類型​​ 描述
error 字串 錯誤描述。
message 字串 錯誤訊息。
status 整數 HTTP 狀態碼。

UnprocessableContentError

要求包含無法處理的內容。 根據此規格指出的承載有效時,會傳回錯誤。 不過,基礎模型不支援承載中所指示的一些指示。 使用 details 區段來了解違規的參數。

名稱 類型​​ 描述
code 字串 錯誤碼。
detail 詳細資料
error 字串 錯誤描述。
message 字串 錯誤訊息。
status 整數 HTTP 狀態碼。