參考:聊天完成 | Azure AI Studio
重要
本文中標示為 (預覽) 的項目目前處於公開預覽狀態。 此預覽版本沒有服務等級協定,不建議將其用於生產工作負載。 可能不支援特定功能,或可能已經限制功能。 如需詳細資訊,請參閱 Microsoft Azure 預覽版增補使用條款。
為指定的聊天交談建立模型回應。
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 狀態碼。 |