You need to enable JavaScript to run this app.
导航
BotChatCompletions
最近更新时间:2024.09.11 13:58:36首次发布时间:2024.07.01 11:32:26

调用本接口,向智能体发起一次对话请求。

请求消息样式
POST /api/v3/bots/chat/completions HTTP/1.1
Host: ark.cn-beijing.volces.com
Content-Type: application/json
Authorization: <authorization string>

body

地域和访问域名

本接口支持的地域及 API 访问域名参见地域和访问域名


鉴权方式

本接口支持 API Key 鉴权方式,详见鉴权认证方式

请求参数

请求体

参数名称类型是否必填默认值描述示例值

model

String

-

您创建的智能体 ID

bot-202406040*****-*****

messages

Array of MessageParam

-

由目前为止的对话组成的消息列表
当指定了 tools 参数以使用模型的 function call 能力时,请确保 messages 列表内的消息满足如下要求:

  • 如果 message 列表中前文出现了带有 n 个 tool_calls 的 Assistant Message,则后文必须有连续 n 个分别和每个 tool_call_id 相对应的 Tool Message,来回应 tool_calls 的信息要求
  • 如果 system prompt 在智能体创建页已经指定,两个 system prompt 会同时生效 [preset_system_prompt, request_system_prompt]

-

stream

Boolean

false

响应内容是否流式返回

  • false:模型生成完所有内容后一次性返回结果

  • true:按 SSE 协议逐块返回模型生成内容,并以一条 data: [DONE] 消息结束

false

stream_options

StreamOptionsParam

-

流式响应的选项。仅当 stream: true 时可以设置 stream_options 参数。

-

max_tokensInteger4096模型可以生成的最大 token 数量。取值范围为 [0, 4096]。输入 token 和输出 token 的总长度还受模型的上下文长度限制。4096
stopArray or String-模型遇到 stop 字段所指定的字符串时将停止继续生成,这个词语本身不会输出。最多支持 4 个字符串。["你好", "天气"]
frequency_penaltyFloat0频率惩罚系数。如果值为正,会根据新 token 在文本中的出现频率对其进行惩罚,从而降低模型逐字重复的可能性。取值范围为 [-2.0, 2.0]。1

temperature

Float

1

采样温度。控制了生成文本时对每个候选词的概率分布进行平滑的程度。取值范围为 [0, 1]。0 特殊处理
较高的值(如 0.8)会使输出更加随机,而较低的值(如 0.2)会使输出更加集中确定。通常建议仅调整 temperaturetop_p 其中之一,不建议两者都修改。

0.8

top_p

Float

0.7

核采样概率阈值。模型会考虑概率质量在 top_p 内的 token 结果。取值范围为 [0, 1]。
如 0.1 意味着只考虑概率质量最高的前 10% 的 token,取值越大生成的随机性越高,取值越低生成的确定性越高。通常建议仅调整 temperaturetop_p 其中之一,不建议两者都修改。

0.8

logprobs

Boolean

false

是否返回输出 tokens 的对数概率。

  • false:不返回对数概率信息

  • true:返回消息内容中每个输出 token 的对数概率

false

top_logprobs

Integer

0

指定每个输出 token 位置最有可能返回的 token 数量,每个 token 都有关联的对数概率。仅当 logprobs: true 时可以设置 top_logprobs 参数,取值范围为 [0, 20]。

2

logit_bias

Map<String, Integer>

-

调整指定 token 在模型输出内容中出现的概率,使模型生成的内容更加符合特定的偏好。logit_bias 字段接受一个 map 值,其中每个键为词表中的 token ID,每个值为该 token 的偏差值,取值范围为 [-100, 100]。
-1 会减少选择的可能性,1 会增加选择的可能性;-100 会完全禁止选择该 token,100 会导致仅可选择该 token。该参数的实际效果可能因模型而异。

{
    "1234": -100
}
toolsArray of ToolParam-模型可以调用的工具列表。目前,仅函数作为工具被支持。用这个来提供模型可能为其生成 JSON 输入的函数列表。-
metadataMetadata-额外参数-

数据结构

MessageParam

参数名称类型是否必填默认值描述示例值

role

String

-

发出该消息的对话参与者角色,可选值包括:

  • system:System Message 系统消息

  • user:User Message 用户消息

  • assistant:Assistant Message 对话助手消息

  • tool:Tool Message 工具调用消息

user

content

String

-

消息内容

  • rolesystemusertool时,参数必填

  • roleassistant 时,contenttool_calls 参数二者至少填其一

世界第一高山是什么?

tool_calls

Array of MessageToolCallParam

-

模型生成的工具调用。当 roleassistant 时,contenttool_calls 参数二者至少填其一

-

tool_call_idString-此消息所回应的工具调用 ID,当 roletool 时必填call_5y**********************

MessageToolCallParam

参数名称类型是否必填默认值描述示例值
idString-当前工具调用 IDcall_5y**********************
typeString-工具类型,当前仅支持functionfunction
functionFunctionParam-模型需要调用的函数-

FunctionParam

参数名称类型是否必填默认值描述示例值
nameString-模型需要调用的函数名称get_current_weather

arguments

String

-

模型生成的用于调用函数的参数,JSON 格式。请注意,模型并不总是生成有效的 JSON,并且可能会虚构出一些您的函数参数规范中未定义的参数。在调用函数之前,请在您的代码中验证这些参数是否有效。

{\"location\": \"Boston, MA\"}

ToolParam

参数名称类型是否必填默认值描述示例值
typeString-工具类型,当前仅支持 functionfunction

function

FunctionDefinition

-

模型可以调用的工具列表。

-

FunctionDefinition

参数名称类型是否必填默认值描述示例值
nameString-函数的名称get_current_weather
descriptionString-对函数用途的描述,供模型判断何时以及如何调用该工具函数获取指定城市的天气信息

parameters

Object

函数请求参数,以 JSON Schema 格式描述。具体格式请参考 JSON Schema 文档

{
    "type": "object",
    "properties": {
        "location": {
            "type": "string",
            "description": "城市,如:北京",
        },
    },
    "required": ["location"],
}

StreamOptionsParam

参数名称类型是否必填默认值描述示例值

include_usage

Boolean

false

是否包含本次请求的 token 用量统计信息

  • false:不返回 token 用量信息

  • true:在 data: [DONE] 消息之前返回一个额外的块,此块上的 bot_usage 字段代表整个请求的 token 用量,choices 字段为空数组。所有其他块也将包含 bot_usage 字段,但值为 null

false

Metadata

参数名称类型是否必填默认值描述示例值

user_info

String

-

可以被反序列化成 json 的字符串,需要包含 citydistrict 两个字段

"{\"city\":\"北京\",\"district\":\"海淀区\"}"
emit_intention_signal_extraString"false"值是 "true" 时,会中途返回intention状态 "正在搜索"-
target_character_nameString-群聊Bot对话时填写,指定本次要发言的角色名-

响应参数

非流式调用

参数名称类型描述示例值
idString本次请求的唯一标识021718049470528d92fcbe0865fdffdde********************

model

String

本次请求实际使用的模型名称和版本

doubao-pro-4k-240515

createdInteger本次请求创建时间的 Unix 时间戳(秒)1718049470
objectString固定为 chat.completionchat.completion

choices

Array of Choice

本次请求的模型输出内容

-

bot_usage

BotUsage

本次请求的 tokens 和插件消耗

-

references

Array of Reference

  • 知识库/联网的引用结果,表示调用插件的返回值

  • 首chunk返回

-

metadataMetadata请求时附带的额外参数信息-

流式调用

参数名称类型描述示例值
idString本次请求的唯一标识021718049470528d92fcbe0865fdffdde********************

model

String

本次请求实际使用的模型名称和版本

doubao-pro-4k-240515

createdInteger本次请求创建时间的 Unix 时间戳(秒)1718049470
objectString固定为 chat.completion.chunkchat.completion.chunk

choices

Array of StreamChoice

本次请求的模型输出内容

-

bot_usage

BotUsage

本次请求的 tokens 和插件消耗

-

references

Array of Reference

  • 知识库/联网的引用结果,表示调用插件的返回值

  • 首chunk返回

-

metadataMetadata额外参数-

数据结构

Choice

参数名称类型描述示例值
indexInteger当前元素在 choices 列表的索引0

finish_reason

String

模型停止生成 token 的原因。可能的值包括:

  • stop:模型输出自然结束,或因命中请求参数 stop 中指定的字段而被截断

  • length:模型输出因达到请求参数 max_token 指定的最大 token 数量而被截断

  • content_filter:模型输出被内容审核拦截

  • tool_call:模型调用了工具

stop

message

Message

模型输出的内容

-

logprobsChoiceLogprobs当前内容的对数概率信息-

Message

参数名称类型描述示例值
roleString固定为 assistantassistant
contentString模型生成的消息内容,contenttool_calls 字段二者至少有一个为非空"你好"
tool_callsArray of MessageToolCall模型生成的工具调用,contenttool_calls 字段二者至少有一个为非空-

MessageToolCall

参数名称类型描述示例值
idString当前工具调用 IDcall_5y**********************
typeString工具类型,当前仅支持functionfunction
functionFunction模型需要调用的函数-

Function

参数名称类型描述示例值
nameString模型需要调用的函数名称get_current_weather

arguments

String

模型生成的用于调用函数的参数,JSON 格式。请注意,模型并不总是生成有效的 JSON,并且可能会虚构出一些您的函数参数规范中未定义的参数。在调用函数之前,请在您的代码中验证这些参数是否有效。

{\"location\": \"Boston, MA\"}

ChoiceLogprobs

参数名称类型描述示例值
contentArray of TokenLogprobmessage列表中每个 content 元素中的 token 对数概率信息-

TokenLogprob

参数名称类型描述示例值
tokenString当前 tokenThe
bytesArray of Integer当前 token 的 UTF-8 值,格式为整数列表。当一个字符由多个 token 组成(表情符号或特殊字符等)时可以用于字符的编码和解码。如果 token 没有 UTF-8 值则为空。[84, 104, 101]
logprobFloat当前 token 的对数概率-0.0155029296875
top_logprobsArray of TopLogprob在当前 token 位置最有可能的标记及其对数概率的列表。在一些情况下,返回的数量可能比请求参数 top_logprobs 指定的数量要少。-

TopLogprob

参数名称类型描述示例值
tokenString当前 tokenThe
bytesArray of Integer当前 token 的 UTF-8 值,格式为整数列表。当一个字符由多个 token 组成(表情符号或特殊字符等)时可以用于字符的编码和解码。如果 token 没有 UTF-8 值则为空。[84, 104, 101]
logprobFloat当前 token 的对数概率-0.0155029296875

BotUsage

参数名称类型描述示例值
model_usageArray of ModelUsage本次请求不同 endpoint 的 token 消耗-

ModelUsage

参数名称类型描述示例值
nameStringendpoint id
prompt_tokensInteger输入的 prompt token 数量130
completion_tokensInteger模型生成的 token 数量100
total_tokensInteger本次请求消耗的总 token 数量(输入 + 输出)

StreamChoice

参数名称类型描述示例值
indexInteger当前元素在 choices 列表的索引0

finish_reason

String

模型停止生成 token 的原因。可能的值包括:

  • stop:模型输出自然结束,或因命中请求参数 stop 中指定的字段而被截断

  • length:模型输出因达到请求参数 max_token 指定的最大 token 数量而被截断

  • content_filter:模型输出被内容审核拦截

  • tool_call:模型调用了工具

stop

delta

ChoiceDelta

模型输出的内容

-

logprobsChoiceLogprobs当前内容的对数概率信息-

ChoiceDelta

参数名称类型描述示例值
roleString固定为 assistantassistant
contentString模型生成的消息内容,contenttool_calls 字段二者必有一个为非空"你好"
tool_callsArray of ChoiceDeltaToolCall模型生成的工具调用列表,contenttool_calls 字段二者必有一个为非空-

ChoiceDeltaToolCall

参数名称类型描述示例值
indexInterger当前元素在 tool_calls 列表的索引0
idString当前工具调用 IDcall_5y**********************
typeString工具类型,当前仅支持functionfunction
functionFunction模型需要调用的函数-

Reference

不同的结构体详见插件文档:

请求示例
curl -X POST https://ark.cn-beijing.volces.com/api/v3/bots/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ea764f0f-3b60-45b3-****-************" \
  -d '{
    "model": "bot-202406040*****-*****",
    "messages": [
        {
            "role": "system",
            "content": "You are a helpful assistant."
        },
        {
            "role": "user",
            "content": "Hello!"
        }
    ]
  }'
响应示例
HTTP/1.1 200 OK
Content-Type:application/json
{
    "id": "021718067849899d92fcbe0865fdffdde********************",
    "object": "chat.completion",
    "created": 171806****,
    "model": "doubao-pro-4k-240515",
    "choices": [{
        "index": 0,
        "message": {
            "role": "assistant",
            "content": "Hello, can i help you with something?"
        },
        "logprobs": {"content": null},
        "finish_reason": "stop"
    }],
    "usage": {
        "prompt_tokens": 22,
        "completion_tokens": 9,
        "total_tokens": 31
    }
}
错误处理

错误响应

本接口调用失败的返回结构和参数释义请参见返回结构文档。

错误码

本接口与业务逻辑相关的错误码如下表所示。公共错误码请参见公共错误码文档。

HTTP 状态码错误类型 type错误代码 code错误信息 message含义

400

BadRequest

SensitiveContentDetected

The request failed because the input text may contain sensitive information.

输入文本可能包含敏感信息,请您使用其他 prompt。