你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
参考:聊天补全| Azure 机器学习
为给定聊天对话创建模型响应。
POST /chat/completions?api-version=2024-04-01-preview
URI 参数
名称 | 在 | 必需 | 类型 | 说明 |
---|---|---|---|---|
api-version | 查询 | 正确 | string | 格式为“YYYY-MM-DD”或“YYYY-MM-DD-preview”格式的 API 版本。 |
请求头
名称 | 必需 | 类型 | 描述 |
---|---|---|---|
其他参数 | string | 在有效负载中指示其他参数时 API 的行为。 使用 pass-through 让 API 将参数传递给基础模型。 如果要传递基础模型可以支持的参数,请使用此值。 使用 ignore 让 API 删除任何不受支持的参数。 如果需要在不同模型中使用相同的有效负载,请使用此值,但如果不受支持,其中一个其他参数可能会使模型出错。 使用 error 让 API 拒绝有效负载中的任何其他参数。 只能指示此 API 中指定的参数,否则将返回 400 错误。 |
|
azureml-model-deployment | string | 要将请求路由到的部署的名称。 支持支持多个部署的终结点。 |
请求正文
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
messages | True | ChatCompletionRequestMessage | 包含到目前为止的对话的消息列表。 如果模型无法理解部分或全部消息,则返回 422 错误。 |
frequency_penalty | 数字 | 通过降低已使用字词的选中几率,帮助防止字词重复。 频率惩罚越高,模型在其输出中重复相同字词的可能性就越小。 如果模型不支持值或参数,则返回 422 错误。 | |
max_tokens | integer | 可以在聊天补全时生成的最大词元数。 输入词元和生成的词元的总长度受模型上下文长度的限制。 传递 null 会导致模型使用其最大上下文长度。 |
|
presence_penalty | 数字 | 如果某个单词已经存在于补全内容中,即使只存在一次,也对该单词应用惩罚,从而避免重复相同的话题。 如果模型不支持值或参数,则返回 422 错误。 | |
response_format | ChatCompletionResponseFormat | ||
seed | integer | 指定后,我们的系统将尽最大努力进行确定性采样,以便具有相同 seed 和参数的重复请求应返回相同的结果。 无法保证确定性,你应参考 system_fingerprint 响应参数来监视后端的更改。 |
|
stop | API 停止生成更多词元的序列。 | ||
流 (stream) | boolean | 如果设置此选项,系统将发送部分消息增量。 词元将在可用时作为服务器发送的事件发送(内容仅包括数据),并且流式传输将由 data: [DONE] 消息终止。 |
|
温度 | 数字 | 非负数。 如果模型不支持值,则返回 422。 | |
tool_choice | ChatCompletionToolChoiceOption | 控制模型调用的函数(如有)。 none 表示模型不会调用函数,而是会生成消息。 auto 表示模型可以在生成消息和调用函数之间进行选择。 通过 {"type": "function", "function": {"name": "my_function"}} 指定特定函数会强制模型调用该函数。当不存在任何函数时,默认值为 none 。 如果存在函数,则 auto 是默认值。 如果模型不支持该工具,则返回 422 错误。 |
|
工具 | ChatCompletionTool[] | 模型可能调用的工具列表。 目前,仅支持函数作为工具。 使用它可以提供函数列表,模型可能为其生成 JSON 输入。 如果模型不支持该工具,则返回 422 错误。 | |
top_p | 数字 | 温度采样的替代方法,称为核采样,其中模型考虑具有 top_p 概率质量的令牌的结果。 所以 0.1 意味着只考虑包含前 10% 概率质量的令牌。 我们通常建议更改此设置或 temperature ,但不要同时更改两者。 |
响应
名称 | Type | 说明 |
---|---|---|
200 OK | CreateChatCompletionResponse | 确定 |
401 未授权 | UnauthorizedError | 访问令牌缺失或无效 标头 x-ms-error-code: string |
404 未找到 | NotFoundError | 模型不支持模态。 查看模型的文档,查看哪些路由可用。 标头 x-ms-error-code: string |
422 不可处理实体 | UnprocessableContentError | 请求包含无法处理的内容 标头 x-ms-error-code: string |
429 请求次数过多 | TooManyRequestsError | 你已达到指定的速率限制,需要调整请求的速度。 标头 x-ms-error-code: string |
其他状态代码 | ContentFilterError | 无效的请求 标头 x-ms-error-code: string |
安全性
授权
带有 Bearer:
前缀的令牌,例如 Bearer abcde12345
Type: apiKey
In: header
AADToken
Azure Active Directory OAuth2 身份验证
Type: oauth2
Flow: application
Token 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 | 此消息作者的角色。 |
选择项 | 聊天完成选项的列表。 |
CompletionUsage | 完成请求的使用情况统计信息。 |
ContentFilterError | 当提示按配置触发内容筛选器时,API 调用将失败。 修改提示,然后重试。 |
CreateChatCompletionRequest | |
CreateChatCompletionResponse | 表示模型根据提供的输入返回的聊天补全响应。 |
详细信息 | UnprocessableContentError 错误的详细信息。 |
Function | 模型调用的函数。 |
FunctionObject | 模型有权访问的函数的定义。 |
ImageDetail | 指定图像的详细信息级别。 |
NotFoundError | 路由对已部署的模型无效。 |
ToolType | 工具的类型。 目前仅支持 function 。 |
TooManyRequestsError | 你已达到分配的速率限制,并且你的请求需要调整步调。 |
UnauthorizedError | 身份验证缺失或无效。 |
UnprocessableContentError | 请求包含无法处理的内容。 当指示的有效负载根据此规范判定为有效时,将返回该错误。 但是,有效负载中指示的某些指令在基础模型中不受支持。 参照 details 部分了解违规的参数。 |
ChatCompletionFinishReason
模型停止生成标记的原因。 如果模型判定遇到了自然停止点或提供的停止序列,则为 stop
;如果达到请求中指定的最大词元数,则为 length
;如果由于内容筛选器中的标志而省略内容,则为 content_filter
;如果模型调用了工具,则为 tool_calls
。
名称 | Type | 描述 |
---|---|---|
content_filter | string | |
length | string | |
stop | string | |
tool_calls | string |
ChatCompletionMessageToolCall
名称 | Type | 说明 |
---|---|---|
function | Function | 模型调用的函数。 |
ID | string | 工具调用的 ID。 |
type | ToolType | 工具的类型。 目前仅支持 function 。 |
ChatCompletionObject
始终为 chat.completion
的对象类型。
名称 | Type | 描述 |
---|---|---|
chat.completion | string |
ChatCompletionResponseFormat
模型响应的响应格式。 设置为 json_object
可启用 JSON 模式,这可以保证模型生成的消息是有效的 JSON。 使用 JSON 模式时,还必须使用系统或用户消息指示模型自己生成 JSON。 另请注意,如果使用 finish_reason="length"
,则消息内容可能会部分截断,这表示生成超过了 max_tokens
,或者对话超过了最大上下文长度。
名称 | Type | 说明 |
---|---|---|
type | ChatCompletionResponseFormatType | 响应格式类型。 |
ChatCompletionResponseFormatType
响应格式类型。
名称 | Type | 描述 |
---|---|---|
json_object | string | |
text | string |
ChatCompletionResponseMessage
模型生成的聊天补全消息。
名称 | Type | 描述 |
---|---|---|
内容 | string | 消息的内容。 |
role | ChatMessageRole | 此消息作者的角色。 |
tool_calls | ChatCompletionMessageToolCall[] | 模型生成的工具调用,例如函数调用。 |
ChatCompletionTool
名称 | Type | 说明 |
---|---|---|
function | FunctionObject | |
type | ToolType | 工具的类型。 目前仅支持 function 。 |
ChatMessageRole
此消息作者的角色。
名称 | Type | 描述 |
---|---|---|
assistant | string | |
系统 | string | |
tool | string | |
user | string |
选择项
聊天完成选项的列表。 如果 n
大于 1,则可以具备多个角色。
名称 | Type | 描述 |
---|---|---|
finish_reason | ChatCompletionFinishReason | 模型停止生成标记的原因。 如果模型判定遇到了自然停止点或提供的停止序列,则为 stop ;如果达到请求中指定的最大词元数,则为 length ;如果由于内容筛选器中的标志而省略内容,则为 content_filter ;如果模型调用了工具,则为 tool_calls 。 |
index | integer | 选项列表中的所选索引。 |
message | ChatCompletionResponseMessage | 模型生成的聊天补全消息。 |
CompletionUsage
完成请求的使用情况统计信息。
名称 | Type | 描述 |
---|---|---|
completion_tokens | integer | 生成的补全中的词元数。 |
prompt_tokens | integer | 提示中的标记数。 |
total_tokens | integer | 请求中使用的令牌总数(提示 + 补全)。 |
ContentFilterError
当提示按配置触发内容筛选器时,API 调用将失败。 修改提示,然后重试。
名称 | Type | 说明 |
---|---|---|
code | string | 错误代码。 |
error | string | 错误说明。 |
message | string | 错误消息。 |
param | string | 触发内容筛选器的参数。 |
status | integer | HTTP 状态代码。 |
CreateChatCompletionRequest
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
frequency_penalty | 数字 | 0 | 通过降低已使用字词的选中几率,帮助防止字词重复。 频率惩罚越高,模型在其输出中重复相同字词的可能性就越小。 如果模型不支持值或参数,则返回 422 错误。 |
max_tokens | integer | 可以在聊天补全时生成的最大词元数。 输入词元和生成的词元的总长度受模型上下文长度的限制。 传递 null 会导致模型使用其最大上下文长度。 |
|
messages | ChatCompletionRequestMessage[] | 包含到目前为止的对话的消息列表。 如果模型无法理解部分或全部消息,则返回 422 错误。 | |
presence_penalty | 数字 | 0 | 如果某个单词已经存在于补全内容中,即使只存在一次,也对该单词应用惩罚,从而避免重复相同的话题。 如果模型不支持值或参数,则返回 422 错误。 |
response_format | ChatCompletionResponseFormat | text | |
seed | integer | 指定后,我们的系统将尽最大努力进行确定性采样,以便具有相同 seed 和参数的重复请求应返回相同的结果。 无法保证确定性,你应参考 system_fingerprint 响应参数来监视后端的更改。 |
|
stop | API 停止生成更多词元的序列。 | ||
流 (stream) | boolean | False | 如果设置此选项,系统将发送部分消息增量。 词元将在可用时作为服务器发送的事件发送(内容仅包括数据),并且流式传输将由 data: [DONE] 消息终止。 |
温度 | 数字 | 1 | 非负数。 如果模型不支持值,则返回 422。 |
tool_choice | ChatCompletionToolChoiceOption | 控制模型调用的函数(如有)。 none 表示模型不会调用函数,而是会生成消息。 auto 表示模型可以在生成消息和调用函数之间进行选择。 通过 {"type": "function", "function": {"name": "my_function"}} 指定特定函数会强制模型调用该函数。当不存在任何函数时,默认值为 none 。 如果存在函数,则 auto 是默认值。 如果模型不支持该工具,则返回 422 错误。 |
|
工具 | ChatCompletionTool[] | 模型可能调用的工具列表。 目前,仅支持函数作为工具。 使用它可以提供函数列表,模型可能为其生成 JSON 输入。 如果模型不支持该工具,则返回 422 错误。 | |
top_p | 数字 | 1 | 温度采样的替代方法,称为核采样,其中模型考虑具有 top_p 概率质量的令牌的结果。 所以 0.1 意味着只考虑包含前 10% 概率质量的令牌。 我们通常建议更改此设置或 temperature ,但不要同时更改两者。 |
ChatCompletionRequestMessage
名称 | Type | 描述 |
---|---|---|
content | string 或 ChatCompletionMessageContentPart[] | 消息的内容。 |
role | ChatMessageRole | 此消息作者的角色。 |
tool_calls | ChatCompletionMessageToolCall[] | 模型生成的工具调用,例如函数调用。 |
ChatCompletionMessageContentPart
名称 | Type | 描述 |
---|---|---|
内容 | string | 图像的 URL 或 base64 编码的图像数据。 |
detail | ImageDetail | 指定图像的详细信息级别。 |
type | ChatCompletionMessageContentPartType | 内容部件的类型。 |
ChatCompletionMessageContentPartType
名称 | Type | 说明 |
---|---|---|
text | string | |
图像 | string | |
image_url | string |
ChatCompletionToolChoiceOption
控制模型调用哪些工具(如有)。
名称 | Type | 描述 |
---|---|---|
无 | string | 此模型不会调用任何工具,而是会生成消息。 |
auto | string | 此模型可以在生成消息和调用一个或多个工具之间进行选择。 |
必答 | string | 此模型必须调用一个或多个工具。 |
string | 通过 {"type": "function", "function": {"name": "my_function"}} 指定特定工具将强制模型调用该工具。 |
ImageDetail
指定图像的详细信息级别。
名称 | Type | 描述 |
---|---|---|
auto | string | |
low | string | |
high | string |
CreateChatCompletionResponse
表示模型根据提供的输入返回的聊天补全响应。
名称 | Type | 描述 |
---|---|---|
choices | Choices[] | 聊天完成选项的列表。 如果 n 大于 1,则可以具备多个角色。 |
created | integer | 聊天补全创建时间的 Unix 时间戳(以秒为单位)。 |
ID | string | 聊天补全的唯一标识符。 |
model | string | 用于聊天补全的模型。 |
object | ChatCompletionObject | 始终为 chat.completion 的对象类型。 |
system_fingerprint | string | 这个指纹表示模型运行的后端配置。 可以与 seed 请求参数一起使用,以了解何时进行了可能影响确定性的后端更改。 |
使用情况 | CompletionUsage | 完成请求的使用情况统计信息。 |
详细信息
UnprocessableContentError 错误的详细信息。
名称 | Type | 描述 |
---|---|---|
loc | string[] | 导致问题的参数 |
value | string | 会导致问题的传递给参数的值。 |
函数
模型调用的函数。
名称 | Type | 描述 |
---|---|---|
参数 | string | 用于调用函数的参数,由模型以 JSON 格式生成。 请注意,该模型并非始终生成有效的 JSON,并且可能会生成未由函数架构定义的错误参数。 在调用函数之前验证代码中的参数。 |
name | string | 要调用的函数名称。 |
FunctionObject
模型有权访问的函数的定义。
名称 | Type | 说明 |
---|---|---|
description | string | 函数作用的描述,由模型用于选择何时以及如何调用函数。 |
name | string | 要调用的函数的名称。 必须是 a-z、A-z、0-9,或包含下划线和短划线,最大长度为 64。 |
parameters | object | 函数接受的参数,被描述为 JSON 架构对象。 省略 parameters 会定义具有空参数列表的函数。 |
NotFoundError
名称 | Type | 说明 |
---|---|---|
error | string | 错误说明。 |
message | string | 错误消息。 |
status | integer | HTTP 状态代码。 |
ToolType
工具的类型。 目前仅支持 function
。
名称 | Type | 说明 |
---|---|---|
function | string |
TooManyRequestsError
名称 | Type | 说明 |
---|---|---|
error | string | 错误说明。 |
message | string | 错误消息。 |
status | integer | HTTP 状态代码。 |
UnauthorizedError
名称 | Type | 说明 |
---|---|---|
error | string | 错误说明。 |
message | string | 错误消息。 |
status | integer | HTTP 状态代码。 |
UnprocessableContentError
请求包含无法处理的内容。 当指示的有效负载根据此规范判定为有效时,将返回该错误。 但是,有效负载中指示的某些指令在基础模型中不受支持。 参照 details
部分了解违规的参数。
名称 | Type | 说明 |
---|---|---|
code | string | 错误代码。 |
detail | 详细信息 | |
error | string | 错误说明。 |
message | string | 错误消息。 |
status | integer | HTTP 状态代码。 |