You need to enable JavaScript to run this app.
导航
ChatCompletions-视觉理解
最近更新时间:2024.12.13 16:22:47首次发布时间:2024.11.07 20:18:03
POST https://ark.cn-beijing.volces.com/api/v3/chat/completions

本文介绍Doubao多模态大模型API的输入输出参数,方便您调用接口ChatCompletions,向大模型发起视觉理解的请求。模型会依据传入的图片信息以及问题,给出回复。

鉴权方式

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

如果您需要使用Access Key来调用,可以使用接口来获取临时API Key,详细接口说明请参见GetApiKey - 获取临时API

请求参数

请求体

注意

  • 视觉理解接口暂时不支持以下字段,请注意代码适配:
    • tools:不支持function call特性。
    • frequency_penalty:不支持设置频率惩罚系数。
    • presence_penalty:不支持设置存在惩罚系数。
    • n:不支持为每个请求生成多个chatcompletions,只能生成1个。

参数名称

类型

是否必填

默认值

描述

示例值

model

String

-

您创建的推理接入点(Endpoint)ID。该推理接入点需部署了视觉理解的模型,如Doubao-vision-pro-32k模型。

如无推理接入点,请参考创建推理接入点(Endpoint)文档创建。

ep-202406040*****-*****

messages

Array of MessageParam

-

由目前为止的对话组成的消息列表,包含用户输入的最后一条消息。

-

stream

Boolean

false

响应内容是否流式返回

  • false:模型生成完所有内容后一次性返回结果
  • true:按 SSE 协议逐块返回模型生成内容,并以一条 data: [DONE] 消息结束

false

stream_options

Array ofStreamOptionsParam

-

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

-

max_tokens

Integer

4096

注意

  • 模型回复最大长度(单位 token),取值范围为 [0, 4096]。
  • 输入 token 和输出 token 的总长度还受模型的上下文长度限制。

4096

stop

String or Array

-

模型遇到 stop 字段所指定的字符串时将停止继续生成,这个词语本身不会输出。最多支持 4 个字符串。

["你好", "天气"]

temperature

Float

1

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

0.8

top_p

Float

0.7

核采样概率阈值。模型会考虑概率质量在 top_p 内的 token 结果。取值范围为 [0, 1],取值越大生成的随机性越高,取值越低生成的确定性越高。
举例来说,当取值为 0.1 时,模型仅考虑按照概率大小排序前列(token按照概率由大到小排序,累加概率达到阈值10%,即top_p=0.1)的 token,随机取一个作为输出。
通常建议仅调整 temperaturetop_p 其中之一,不建议两者都修改。

0.8

logprobs

Boolean

false

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

  • 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(使用 tokenization 接口获取),每个值为该 token 的偏差值,取值范围为 [-100, 100]。
-1 会减少选择的可能性,1 会增加选择的可能性;-100 会完全禁止选择该 token,100 会导致仅可选择该 token。该参数的实际效果可能因模型而异。

{
    "1234": -100
}

-

数据结构

MessageParam

系统消息

参数名称

类型

是否必填

描述

role

String

发出该消息的对话参与者的角色,此处应设置为 system

content

String

系统消息
用于指定模型的角色或交代背景信息。如果设置系统消息,请放在messages列表的第一位。

[
  {
    "role": "system",
    "content": "You are a helpful assistant."
  },
]

用户消息

参数名称

子字段

类型

是否必填

描述

role

String

发出该消息的对话参与者的角色,此处应设置为 user

content

-

String/Array

视觉理解模型请求的消息内容,消息发送角色为用户。

类型:多条消息时为Array;单条消息时为String。

type

String

  • textimage_url,传入的信息类型。
    • 传入信息为文本信息设置为text
    • 传入信息为图片信息设置为image_url

text

String

条件必填

  • tpye设置为text时,输入文本信息。
[
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "你叫什么",
        },
      ],
    }
  ]

image_url

Object

图片信息。

  • url[String]:必选,支持传入图片链接或图片的Base64编码。
    • 图片格式:支持 JPEGJPG)、PNGGIF等常见格式,详细格式支持情况请参见 图片格式说明。单图大小不超过 10MB。
    • 图片数量:每轮次的image_url累计不超过 50 个,且超过模型最大上下文限制也会报错。如当传入高分辨率图片将会更早超过模型上下文长度限制。
    • 传入Base64编码:请遵循格式data:image/{图片格式};base64,{Base64编码},完整示例请参见Base64编码输入
      • {图片格式}:图片的格式,JPEGPNGGIF
      • {Base64编码}:图片的Base64编码。
      • 单图最大 10 MB,单轮最大可传入图片数据64MB。
  • detail[String]:可选,支持手动设置图片的质量,取值范围highlowauto,影响对图片理解的深度和模型返回的速度,但是不影响 token 计量。
    • high:高细节模式,适用于需要理解图像细节信息的场景,如对图像的多个局部信息/特征提取、复杂/丰富细节的图像理解等场景,理解更全面。
    • low:低细节模式适用于简单的图像分类/识别、整体内容理解/描述等场景,理解更快速。
    • auto:根据图片分辨率,自动选择适合的模式。

更多配置建议,请参见使用说明及建议

模型消息

参数名称

类型

是否必填

描述

role

String

发出该消息的对话参与者的角色,此处应设置为 assistant

content

String

模型的消息回复。

[
  {
    "role": "assistant",
    "content": "Hello, can i help you with something?"
  },
]

StreamOptionsParam

参数名称

类型

是否必填

默认值

描述

示例值

include_usage

Boolean

false

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

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

false

响应参数

非流式调用

参数名称

子字段

类型

描述

id

-

String

一次 chat completion 接口调用的唯一标识。

choices

-

Array

本次 chat 结果列表。长度固定为 1。

index

Integer

该元素在 choices 列表的索引。

message

Object

模型输出的消息内容。

finish_reason

String

模型生成结束原因:

  • stop:正常生成结束。
  • length 触发最大 token 数量而结束。
  • content_filter :模型输出被内容审核拦截。

logprobs

Object

该输出结果的概率信息,其只有一个 content 字段,类型为 Array,表示 message 列表中每个元素 content token 的概率信息。
content 元素子字段说明如下:

  • token [String]: 对应 token。
  • logprob [Number]:token 的概率。
  • bytes [Array]:表示 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示,并且它们的字节表示必须组合以生成正确的文本表示的情况下(表情符号或特殊字符)非常有用。如果 token 没有 byte 表示,则可以为空。
  • top_logprobs [Array]:最可能的 token 列表及其在此 token 位置的对数概率:
    • token [String]: 对应 token;
    • logprob [Number]:token 的概率;
    • bytes [Array]:表示 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示,并且它们的字节表示必须组合以生成正确的文本表示的情况下(表情符号或特殊字符)非常有用。如果 token 没有 byte 表示,则可以为空。

created

-

Integer

本次对话生成的时间戳(秒)。

model

-

String

实际使用的模型名称和版本。

object

-

String

固定为 chat.completion。

usage

-

Object

本次请求的 token 用量。

prompt_tokens

Integer

本次请求中输入的 token 数量。

completion_tokens

Integer

模型生成的 token 数量。

total_tokens

Integer

总的 token 数量。

流式调用

字段

子字段

类型

描述

id

-

String

一次 chat completion 接口调用的唯一标识,一次流式调用所有的 chunk 有相同的 id。

choices

-

Array

结果列表。长度固定为 1。如果设置了stream_options: {"include_usage": true},则最后一个 chunk 的 choices 也为空列表。

index

Integer

该元素在 choices 列表的索引。

delta

Object

由流式模型响应的模型输出增量,示例如下。

{
  "role": "assistant",
  "content": " there",
}

finish_reason

String

模型生成结束原因,stop表示正常生成结束,length 表示已经到了生成的最大 token 数量,content_filter 表示命中审核提前终止。

logprobs

Object

该输出结果的概率信息,其只有一个 content 字段,类型为 array,表示 message 列表中每个元素 content token 的概率信息,content 元素子字段说明如下:

  • token [String]: 对应 token;
  • logprob [Number]:token 的概率;
  • bytes [Array]:表示 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示,并且它们的字节表示必须组合以生成正确的文本表示的情况下(表情符号或特殊字符)非常有用。如果 token 没有 byte 表示,则可以为空。
  • top_logprobs [Array]:最可能的 token 列表及其在此 token 位置的对数概率:
    • token [String]: 对应 token;
    • logprob [Number]:token 的概率;
    • bytes [Array]:表示 token 的 UTF-8 字节表示的整数列表。在字符由多个 token 表示,并且它们的字节表示必须组合以生成正确的文本表示的情况下(表情符号或特殊字符)非常有用。如果 token 没有 byte 表示,则可以为空。

created

-

Integer

本次对话生成时间戳(秒)。

model

-

String

实际使用的模型名称和版本。

object

-

String

固定为 chat.completion.chunk。

usage

-

Object

本次请求的 token 用量。
一个可选字段,仅当在请求中设置stream_options: {"include_usage": true}时才会出现。如果设置了它,除了最后一个 chunk 包含整个请求的 token 使用量外,其它 chunk 的 usage 都是 null。

prompt_tokens

Integer

本次请求中输入的 token 数量。

completion_tokens

Integer

模型生成的 token 数量。

total_tokens

Integer

总的 token 数量。

请求示例

curl https://ark.cn-beijing.volces.com/api/v3/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 59385462-****" \
  -d '{
        "model": "ep-20241105****",
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": "图片主要讲了什么?"
                    },
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": "https://ark-project.tos-cn-beijing.volces.com/images/view.jpeg"
                        }
                    },
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": "https://portal.volccdn.com/obj/volcfe/cloud-universal-doc/upload_a81e3cdd3e30617ecd524a132fdb2736.png"
                        }
                    }
                ]
            }
        ]
    }'

响应示例

{
    "choices": [
        {
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null,
            "message": {
                "content": "这张图片由两部分组成。\n\n左侧的图片展示了一幅宁静的自然景观。画面中央是一片平静的湖水,湖面上有一艘橙色的皮划艇,艇上有一个人正在划船。湖的对岸是一片茂密的森林,树木高大,颜色深绿。远处是连绵的雪山,山顶覆盖着白雪,山体雄伟壮观。天空湛蓝,几缕白云点缀其间,整个场景给人一种宁静、自然的感觉。\n\n右侧的图片是一张信息图,背景为白色。图中展示了四个蓝色的矩形框,每个框内都有文字内容,分别是:\n\n1. **精选模型**:\n   - 多行业各业务场景模型支持\n   - 精选多家优质大模型\n   - 丰富的平台应用与工具\n   - 搭建专属您的创新场景\n   - 客户拥有更多选择\n\n2. **数据安全**:\n   - 安全可信方案\n   - 保障模型供应商模型安全\n   - 保障客户企业数据安全\n   - 保障多方知识产权\n\n3. **强劲算力**:\n   - 算力充足且功能完备\n   - 基于火山的万卡资源池\n   - 基于高性能的训练、推理资源\n   - 包含模型精调、测评、推理等功能\n\n4. **企业级服务**:\n   - 专业服务体系支持和团队\n   - 专业的产品与运营团队\n   - 专业的销售与交付团队\n   - 满足企业的应用与交付需求\n\n这些内容可能是在介绍某个企业或平台的服务优势,包括模型选择、数据安全、计算能力和企业级服务等方面。",
                "role": "assistant"
            }
        }
    ],
    "created": 1730896926,
    "id": "021730896918756a0f9b9ad2029****",
    "model": "doubao-pro-vision-32k-241015",
    "object": "chat.completion",
    "usage": {
        "completion_tokens": 361,
        "prompt_tokens": 545,
        "total_tokens": 906
    }
}

错误处理

错误响应

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

错误码

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

HTTP 状态码

错误类型 type

错误代码 code

错误信息 message

含义

400

BadRequest

SensitiveContentDetected

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

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

相关文档

视觉理解:视觉理解模型调用开发教程,建议阅读。