你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Get Chat Completions - Get Chat Completions
获取提供的聊天消息的聊天完成。
完成支持各种任务,并生成从或“完成”提供提示数据的文本。 该方法对给定终结点上的 /chat/completions
路由进行 REST API 调用。
POST https:///chat/completions?api-version=2024-05-01-preview
URI 参数
名称 | 在 | 必需 | 类型 | 说明 |
---|---|---|---|---|
api-version
|
query | True |
string |
用于此作的 API 版本。 |
请求头
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
extra-parameters |
控制在 JSON 请求有效负载中传递其他参数(由 REST API 未定义)会发生什么情况。
这会 |
请求正文
名称 | 必需 | 类型 | 说明 |
---|---|---|---|
messages | True | ChatRequestMessage[]: |
与此聊天完成请求关联的上下文消息集合。 典型用法从系统角色的聊天消息开始,该消息提供助理行为的说明,然后是用户和助手角色之间的交替消息。 |
frequency_penalty |
number |
一个值,该值根据生成的文本中的累积频率影响生成的令牌出现概率。 正值将使标记在频率增加时不太可能出现,并降低重复相同语句的模型的可能性。 支持的范围为 [-2, 2]。 |
|
max_tokens |
integer |
要生成的令牌的最大数目。 |
|
modalities |
允许模型用于聊天完成响应的模态。 默认形式为 |
||
model |
string |
在终结点上提供多个模型时,要使用的特定 AI 模型的 ID。 |
|
presence_penalty |
number |
一个值,该值根据生成的文本中的现有状态影响生成的令牌出现的概率。 正值将使标记在已存在时不太可能出现,并增加模型输出新主题的可能性。 支持的范围为 [-2, 2]。 |
|
response_format | ChatCompletionsResponseFormat: |
一个对象,指定模型必须输出的格式。 设置为 设置为
重要提示:使用 JSON 模式时,还必须 还指示模型通过系统或用户消息自行生成 JSON。 如果没有此限制,模型可能会生成一个无限的空白流,直到生成达到令牌限制,从而导致长时间运行且看似“停滞”的请求。 另请注意,如果 |
|
seed |
integer |
如果指定,系统将尽最大努力确定性地采样,以便重复具有相同种子和参数的请求应返回相同的结果。 无法保证确定性。 |
|
stop |
string[] |
将结束完成生成的文本序列的集合。 |
|
stream |
boolean |
一个值,该值指示是否应为此请求流式传输聊天完成。 |
|
temperature |
number |
用于控制生成的完成的明显创造力的采样温度。 较高的值将使输出更随机,而较低的值将使结果更加集中和确定性。 不建议修改与这两个设置交互相同的完成请求的温度和top_p,这两种设置的交互难以预测。 支持的范围为 [0, 1]。 |
|
tool_choice |
如果指定,模型将配置可用于聊天完成响应的提供的工具之一。 |
||
tools |
模型可能请求调用的工具列表。 目前,仅支持函数作为工具。 模型可以使用函数调用请求进行响应,并为该函数提供 JSON 格式的输入参数。 |
||
top_p |
number |
使用称为核采样的温度进行采样的替代方法。 此值会导致模型考虑具有提供的概率质量的令牌结果。 例如,值 0.15 只会导致考虑概率质量的前 15 个% 的标记。 不建议修改与这两个设置交互相同的完成请求的温度和top_p,这两种设置的交互难以预测。 支持的范围为 [0, 1]。 |
响应
名称 | 类型 | 说明 |
---|---|---|
200 OK |
请求已成功。 |
|
Other Status Codes |
意外的错误响应。 标头 x-ms-error-code: string |
安全性
api-key
类型:
apiKey
在:
header
OAuth2Auth
类型:
oauth2
流向:
implicit
授权 URL:
https://login.microsoftonline.com/common/oauth2/v2.0/authorize
作用域
名称 | 说明 |
---|---|
https://ml.azure.com/.default |
示例
Audio modality chat completion |
maximum set chat completion |
minimum set chat completion |
Audio modality chat completion
示例请求
POST https:///chat/completions?api-version=2024-05-01-preview
{
"modalities": [
"text",
"audio"
],
"messages": [
{
"role": "system",
"content": "You are a helpful assistant"
},
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "<base64 encoded audio data>",
"format": "wav"
}
}
]
},
{
"role": "assistant",
"content": null,
"audio": {
"id": "abcdef1234"
}
},
{
"role": "user",
"content": [
{
"type": "input_audio",
"input_audio": {
"data": "<base64 encoded audio data>",
"format": "wav"
}
}
]
}
],
"frequency_penalty": 0,
"presence_penalty": 0,
"temperature": 0,
"top_p": 0,
"seed": 21,
"model": "my-model-name"
}
示例响应
{
"id": "kgousajxgzyhugvqekuswuqbk",
"object": "chat.completion",
"created": 1696522361,
"model": "my-model-name",
"usage": {
"completion_tokens": 19,
"prompt_tokens": 28,
"total_tokens": 16,
"completion_tokens_details": {
"audio_tokens": 5,
"total_tokens": 5
},
"prompt_tokens_details": {
"audio_tokens": 10,
"cached_tokens": 0
}
},
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": null,
"tool_calls": null,
"audio": {
"id": "abcdef1234",
"format": "wav",
"data": "<base64 encoded audio data>",
"expires_at": 1896522361,
"transcript": "This is a sample transcript"
}
}
}
]
}
maximum set chat completion
示例请求
POST https:///chat/completions?api-version=2024-05-01-preview
{
"modalities": [
"text"
],
"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,
"stream": true,
"presence_penalty": 0,
"temperature": 0,
"top_p": 0,
"max_tokens": 255,
"response_format": {
"type": "text"
},
"stop": [
"<|endoftext|>"
],
"tools": [
{
"type": "function",
"function": {
"name": "my-function-name",
"description": "A function useful to know if a theroem is proved or not"
}
}
],
"seed": 21,
"model": "my-model-name"
}
示例响应
{
"id": "kgousajxgzyhugvqekuswuqbk",
"object": "chat.completion",
"created": 18,
"model": "my-model-name",
"usage": {
"completion_tokens": 19,
"prompt_tokens": 28,
"total_tokens": 16
},
"choices": [
{
"index": 7,
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": null,
"tool_calls": [
{
"id": "yrobmilsrugmbwukmzo",
"type": "function",
"function": {
"name": "my-function-name",
"arguments": "{ \"arg1\": \"value1\", \"arg2\": \"value2\" }"
}
}
]
}
}
]
}
minimum set chat completion
示例请求
POST https:///chat/completions?api-version=2024-05-01-preview
{
"messages": [
{
"role": "user",
"content": "Explain Riemann's conjecture"
}
]
}
示例响应
{
"id": "kgousajxgzyhugvqekuswuqbk",
"object": "chat.completion",
"created": 1234567890,
"model": "my-model-name",
"usage": {
"prompt_tokens": 205,
"completion_tokens": 5,
"total_tokens": 210
},
"choices": [
{
"index": 0,
"finish_reason": "stop",
"message": {
"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"
}
}
]
}
定义
名称 | 说明 |
---|---|
Audio |
音频的可能音频格式的表示形式。 |
Azure. |
错误对象。 |
Azure. |
包含错误详细信息的响应。 |
Azure. |
包含有关错误的更具体信息的对象。 根据Microsoft一个 API 指南 - https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md#7102-error-condition-responses。 |
Chat |
单个提示完成作为整体聊天完成请求的一部分的表示形式。
通常,每个提供的提示生成 |
Chat |
聊天完成请求中的响应数据的表示形式。 完成支持各种任务,并生成从或“完成”提供提示数据的文本。 |
Chat |
模型生成的音频的表示形式。 |
Chat |
允许模型用于聊天完成响应的模态。 |
Chat |
聊天完成请求的配置信息。 完成支持各种任务,并生成从或“完成”提供提示数据的文本。 |
Chat |
聊天完成的响应格式,用于限制对发出有效 JSON 对象的响应。 请注意,若要启用 JSON 模式,某些 AI 模型可能还需要指示模型通过系统或用户消息生成 JSON。 |
Chat |
聊天完成的响应格式,用于限制响应以发出有效的 JSON 对象,由调用方指定的 JSON 架构。 |
Chat |
响应中所需 JSON 架构的定义以及关联的元数据。 |
Chat |
发出文本响应的聊天完成的响应格式。 这是默认响应格式。 |
Chat |
AI 模型请求的函数工具调用。 |
Chat |
可以调用函数的聊天完成工具的定义。 |
Chat |
表示来自助手的响应或作的请求聊天消息。 |
Chat |
对模型生成的音频响应的引用。 |
Chat |
请求聊天消息,其中包含影响模型如何生成聊天完成响应的系统说明。 |
Chat |
表示已配置工具请求的输出的请求聊天消息。 |
Chat |
表示用户对助手输入的请求聊天消息。 |
Chat |
响应中收到的聊天消息的表示形式。 |
Chat |
聊天完成交互中消息的预期用途的说明。 |
Completions |
完成响应结束方式的表示形式。 |
Completions |
为完成请求处理的令牌计数的表示形式。 计数将考虑提示、选择、选择备用、best_of代和其他使用者的所有令牌。 |
Completions |
完成时使用的令牌明细。 |
Extra |
控制在 JSON 请求有效负载中传递其他参数(由 REST API 未定义)会发生什么情况。 |
Function |
应调用的函数的名称和参数,由模型生成。 |
Function |
聊天完成可以调用的调用方指定的函数的定义,以响应匹配的用户输入。 |
Prompt |
提示/聊天历史记录中使用的令牌细分。 |
AudioContentFormat
音频的可能音频格式的表示形式。
值 | 说明 |
---|---|
mp3 |
指定 MP3 格式的音频。 |
wav |
以 WAV 格式指定音频。 |
Azure.Core.Foundations.Error
错误对象。
名称 | 类型 | 说明 |
---|---|---|
code |
string |
服务器定义的错误代码集之一。 |
details |
导致此报告错误的特定错误的详细信息数组。 |
|
innererror |
包含与当前对象有关错误的更具体信息的对象。 |
|
message |
string |
错误的人工可读表示形式。 |
target |
string |
错误的目标。 |
Azure.Core.Foundations.ErrorResponse
包含错误详细信息的响应。
名称 | 类型 | 说明 |
---|---|---|
error |
错误对象。 |
Azure.Core.Foundations.InnerError
包含有关错误的更具体信息的对象。 根据Microsoft一个 API 指南 - https://github.com/Microsoft/api-guidelines/blob/vNext/Guidelines.md#7102-error-condition-responses。
名称 | 类型 | 说明 |
---|---|---|
code |
string |
服务器定义的错误代码集之一。 |
innererror |
内部错误。 |
ChatChoice
单个提示完成作为整体聊天完成请求的一部分的表示形式。
通常,每个提供的提示生成 n
选项,默认值为 1。
令牌限制和其他设置可能会限制生成的选项数。
名称 | 类型 | 说明 |
---|---|---|
finish_reason |
此聊天完成选择完成其生成的原因。 |
|
index |
integer |
与此聊天完成选项关联的有序索引。 |
message |
给定聊天完成提示的聊天消息。 |
ChatCompletions
聊天完成请求中的响应数据的表示形式。 完成支持各种任务,并生成从或“完成”提供提示数据的文本。
名称 | 类型 | 说明 |
---|---|---|
choices |
与此完成响应关联的完成选项的集合。
通常,每个提供的提示生成 |
|
created |
integer |
与此完成响应的生成活动关联的第一个时间戳,表示为自 1970 年 1 月 1 日 Unix 00:00 开始以来的秒数。 |
id |
string |
与此聊天完成响应关联的唯一标识符。 |
model |
string |
用于聊天完成的模型。 |
object |
enum:
chat. |
响应对象类型,始终 |
usage |
在此完成作过程中处理和生成的令牌的使用信息。 |
ChatCompletionsAudio
模型生成的音频的表示形式。
名称 | 类型 | 说明 |
---|---|---|
data |
string |
Base64 编码的音频数据 |
expires_at |
integer |
Unix 时间戳(以秒为单位),音频片段在多轮对话中不再被其 ID 引用。 |
format |
音频内容的格式。 如果未提供格式,它将匹配输入音频请求中使用的格式。 |
|
id |
string |
音频响应的唯一标识符。 此值可用于聊天历史记录消息,而不是传递完整的音频对象。 |
transcript |
string |
音频文件的脚本。 |
ChatCompletionsModality
允许模型用于聊天完成响应的模态。
值 | 说明 |
---|---|
audio |
允许模型生成音频。 |
text |
仅允许模型生成文本。 |
ChatCompletionsOptions
聊天完成请求的配置信息。 完成支持各种任务,并生成从或“完成”提供提示数据的文本。
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
frequency_penalty |
number |
0 |
一个值,该值根据生成的文本中的累积频率影响生成的令牌出现概率。 正值将使标记在频率增加时不太可能出现,并降低重复相同语句的模型的可能性。 支持的范围为 [-2, 2]。 |
max_tokens |
integer |
要生成的令牌的最大数目。 |
|
messages | ChatRequestMessage[]: |
与此聊天完成请求关联的上下文消息集合。 典型用法从系统角色的聊天消息开始,该消息提供助理行为的说明,然后是用户和助手角色之间的交替消息。 |
|
modalities |
允许模型用于聊天完成响应的模态。 默认形式为 |
||
model |
string |
在终结点上提供多个模型时,要使用的特定 AI 模型的 ID。 |
|
presence_penalty |
number |
0 |
一个值,该值根据生成的文本中的现有状态影响生成的令牌出现的概率。 正值将使标记在已存在时不太可能出现,并增加模型输出新主题的可能性。 支持的范围为 [-2, 2]。 |
response_format | ChatCompletionsResponseFormat: |
一个对象,指定模型必须输出的格式。 设置为 设置为
重要提示:使用 JSON 模式时,还必须 还指示模型通过系统或用户消息自行生成 JSON。 如果没有此限制,模型可能会生成一个无限的空白流,直到生成达到令牌限制,从而导致长时间运行且看似“停滞”的请求。 另请注意,如果 |
|
seed |
integer |
如果指定,系统将尽最大努力确定性地采样,以便重复具有相同种子和参数的请求应返回相同的结果。 无法保证确定性。 |
|
stop |
string[] |
将结束完成生成的文本序列的集合。 |
|
stream |
boolean |
一个值,该值指示是否应为此请求流式传输聊天完成。 |
|
temperature |
number |
0.7 |
用于控制生成的完成的明显创造力的采样温度。 较高的值将使输出更随机,而较低的值将使结果更加集中和确定性。 不建议修改与这两个设置交互相同的完成请求的温度和top_p,这两种设置的交互难以预测。 支持的范围为 [0, 1]。 |
tool_choice |
如果指定,模型将配置可用于聊天完成响应的提供的工具之一。 |
||
tools |
模型可能请求调用的工具列表。 目前,仅支持函数作为工具。 模型可以使用函数调用请求进行响应,并为该函数提供 JSON 格式的输入参数。 |
||
top_p |
number |
1 |
使用称为核采样的温度进行采样的替代方法。 此值会导致模型考虑具有提供的概率质量的令牌结果。 例如,值 0.15 只会导致考虑概率质量的前 15 个% 的标记。 不建议修改与这两个设置交互相同的完成请求的温度和top_p,这两种设置的交互难以预测。 支持的范围为 [0, 1]。 |
ChatCompletionsResponseFormatJsonObject
聊天完成的响应格式,用于限制对发出有效 JSON 对象的响应。 请注意,若要启用 JSON 模式,某些 AI 模型可能还需要指示模型通过系统或用户消息生成 JSON。
名称 | 类型 | 说明 |
---|---|---|
type |
string:
json_object |
用于聊天完成的响应格式类型。 |
ChatCompletionsResponseFormatJsonSchema
聊天完成的响应格式,用于限制响应以发出有效的 JSON 对象,由调用方指定的 JSON 架构。
名称 | 类型 | 说明 |
---|---|---|
json_schema |
响应中所需 JSON 架构的定义以及关联的元数据。 |
|
type |
string:
json_schema |
用于聊天完成的响应格式类型。 |
ChatCompletionsResponseFormatJsonSchemaDefinition
响应中所需 JSON 架构的定义以及关联的元数据。
名称 | 类型 | 默认值 | 说明 |
---|---|---|---|
description |
string |
AI 模型用来确定如何以此格式生成响应的响应格式的说明。 |
|
name |
string |
响应格式的名称。 必须是 a-z、A-Z、0-9 或包含下划线和短划线,最大长度为 64。 |
|
schema |
JSON 架构的定义 |
||
strict |
boolean |
False |
是否在生成输出时启用严格的架构遵循。
如果设置为 true,模型将始终遵循 |
ChatCompletionsResponseFormatText
发出文本响应的聊天完成的响应格式。 这是默认响应格式。
名称 | 类型 | 说明 |
---|---|---|
type |
string:
text |
用于聊天完成的响应格式类型。 |
ChatCompletionsToolCall
AI 模型请求的函数工具调用。
名称 | 类型 | 说明 |
---|---|---|
function |
AI 模型请求的函数调用的详细信息。 |
|
id |
string |
工具调用的 ID。 |
type |
enum:
function |
工具调用的类型。 目前仅支持 |
ChatCompletionsToolDefinition
可以调用函数的聊天完成工具的定义。
名称 | 类型 | 说明 |
---|---|---|
function |
函数工具的函数定义详细信息。 |
|
type |
enum:
function |
工具的类型。 目前仅支持 |
ChatRequestAssistantMessage
表示来自助手的响应或作的请求聊天消息。
名称 | 类型 | 说明 |
---|---|---|
audio |
多轮对话中上一响应生成的音频。 |
|
content |
string |
消息的内容。 |
role |
string:
assistant |
与此消息关联的聊天角色。 |
tool_calls |
必须解析的工具调用并将其输出追加到后续输入消息中,以便聊天完成请求按配置解析。 |
ChatRequestAudioReference
对模型生成的音频响应的引用。
名称 | 类型 | 说明 |
---|---|---|
id |
string |
音频响应的唯一标识符。 此值对应于上一个音频完成的 ID。 |
ChatRequestSystemMessage
请求聊天消息,其中包含影响模型如何生成聊天完成响应的系统说明。
名称 | 类型 | 说明 |
---|---|---|
content |
string |
系统消息的内容。 |
role |
string:
system |
与此消息关联的聊天角色。 |
ChatRequestToolMessage
表示已配置工具请求的输出的请求聊天消息。
名称 | 类型 | 说明 |
---|---|---|
content |
string |
消息的内容。 |
role |
string:
tool |
与此消息关联的聊天角色。 |
tool_call_id |
string |
由提供的内容解析的工具调用的 ID。 |
ChatRequestUserMessage
表示用户对助手输入的请求聊天消息。
名称 | 类型 | 说明 |
---|---|---|
content |
用户消息的内容,可用输入类型因所选模型而异。 |
|
role |
string:
user |
与此消息关联的聊天角色。 |
ChatResponseMessage
响应中收到的聊天消息的表示形式。
名称 | 类型 | 说明 |
---|---|---|
audio |
如果模型配置为生成音频,则模型生成的音频作为消息的响应。 |
|
content |
string |
消息的内容。 |
role |
与消息关联的聊天角色。 |
|
tool_calls |
必须解析的工具调用并将其输出追加到后续输入消息中,以便聊天完成请求按配置解析。 |
ChatRole
聊天完成交互中消息的预期用途的说明。
值 | 说明 |
---|---|
assistant |
提供系统指示的用户提示输入的响应的角色。 |
developer |
该角色为在用户消息之前确定优先级的模型提供说明。 |
system |
指示或设置助手行为的角色。 |
tool |
表示聊天完成作中的扩展工具活动的角色。 |
user |
为聊天完成提供输入的角色。 |
CompletionsFinishReason
完成响应结束方式的表示形式。
值 | 说明 |
---|---|
content_filter |
完成生成了一个响应,该响应被标识为每个内容审查策略的潜在敏感。 |
length |
在生成完成之前,完成已用尽的可用令牌限制。 |
stop |
完成正常结束,并达到令牌生成结束。 |
tool_calls |
完成以调用提供的输出工具的模型结束。 |
CompletionsUsage
为完成请求处理的令牌计数的表示形式。 计数将考虑提示、选择、选择备用、best_of代和其他使用者的所有令牌。
名称 | 类型 | 说明 |
---|---|---|
completion_tokens |
integer |
在所有完成排放中生成的令牌数。 |
completion_tokens_details |
完成时使用的令牌明细。 |
|
prompt_tokens |
integer |
提供的令牌数会提示完成请求。 |
prompt_tokens_details |
提示/聊天历史记录中使用的令牌细分。 |
|
total_tokens |
integer |
为完成请求和响应处理的令牌总数。 |
CompletionsUsageDetails
完成时使用的令牌明细。
名称 | 类型 | 说明 |
---|---|---|
audio_tokens |
integer |
对应于音频输入的令牌数。 |
total_tokens |
integer |
为完成请求和响应处理的令牌总数。 |
ExtraParameters
控制在 JSON 请求有效负载中传递其他参数(由 REST API 未定义)会发生什么情况。
值 | 说明 |
---|---|
drop |
服务将忽略请求有效负载中的额外参数(删除)。 它只会将已知参数传递给后端 AI 模型。 |
error |
如果服务检测到请求有效负载中的额外参数,服务将出错。 这是服务默认值。 |
pass-through |
该服务会将额外的参数传递给后端 AI 模型。 |
FunctionCall
应调用的函数的名称和参数,由模型生成。
名称 | 类型 | 说明 |
---|---|---|
arguments |
string |
使用 JSON 格式的模型生成的用于调用函数的参数。 请注意,模型并不总是生成有效的 JSON,并且可能会使函数架构未定义的参数幻觉。 在调用函数之前验证代码中的参数。 |
name |
string |
要调用的函数的名称。 |
FunctionDefinition
聊天完成可以调用的调用方指定的函数的定义,以响应匹配的用户输入。
名称 | 类型 | 说明 |
---|---|---|
description |
string |
有关函数的作用的说明。 选择函数并解释其参数时,模型将使用此说明。 |
name |
string |
要调用的函数的名称。 |
parameters |
函数接受的参数,描述为 JSON 架构对象。 |
PromptUsageDetails
提示/聊天历史记录中使用的令牌细分。
名称 | 类型 | 说明 |
---|---|---|
audio_tokens |
integer |
对应于音频输入的令牌数。 |
cached_tokens |
integer |
缓存的令牌总数。 |