跳转至

对话生成

1. 概述

字节豆包推出的符合OpenAI接口标准的对话生成API。

2. 请求说明

  • 请求方法:POST
  • 请求地址:

    https://gateway.serevixai.ai/v1/chat/completions
    

3. 请求参数

3.1 Header 参数

参数名称 类型 必填 说明 示例值
Content-Type string 设置请求头类型,必须为 application/json application/json
Accept string 设置响应类型,建议统一为 application/json application/json
Authorization string 身份验证所需的 API_KEY,格式 Bearer $YOUR_API_KEY Bearer $YOUR_API_KEY

3.2 Body 参数 (application/json)

参数名称 类型 必填 说明 示例
model string 要使用的模型 ID。详见模型列表列出的可用版本,如 Doubao-1.5-pro-32k Doubao-1.5-pro-32k
messages array 聊天消息列表,格式与 OpenAI 兼容。数组中的每个对象包含 role(角色) 与 content(内容)。 [{"role": "user","content": "你好"}]
role string 消息角色,可选值:systemuserassistant user
content string 消息的具体内容。 你好,请给我讲个笑话。
temperature number 采样温度,取值 0~2。数值越大,输出越随机;数值越小,输出越集中和确定。 0.7
top_p number 另一种调节采样分布的方式,取值 0~1。和 temperature 通常二选一设置。 0.9
n number 为每条输入消息生成多少条回复。 1
stream boolean 是否开启流式输出。设置为 true 时,返回类似 ChatGPT 的流式数据。 false
stop string 最多可指定 4 个字符串,一旦生成的内容出现这几个字符串之一,就停止生成更多 tokens。 "\n"
max_tokens number 单次回复可生成的最大 token 数量,受模型上下文长度限制。 1024
presence_penalty number -2.0 \~ 2.0。正值会鼓励模型输出更多新话题,负值会降低输出新话题的概率。 0
frequency_penalty number -2.0 \~ 2.0。正值会降低模型重复字句的频率,负值会提高重复字句出现的概率。 0

4. 请求示例

POST /v1/chat/completions
Content-Type: application/json
Accept: application/json
Authorization: Bearer $YOUR_API_KEY

{
    "model": "Doubao-1.5-pro-32k",
    "messages": [
        {
            "role": "user",
            "content": "你好,给我科普一下量子力学吧"
        }
    ],
    "temperature": 0.7,
    "max_tokens": 1024
}
curl https://gateway.serevixai.ai/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer $YOUR_API_KEY" \
    -d "{
    \"model\": \"Doubao-1.5-pro-32k\",
    \"messages\": [{
        \"role\": \"user\",
        \"content\": \"你好,给我科普一下量子力学吧\"
    }]
}"
package main

import (
    "context"
    "fmt"

    "github.com/openai/openai-go"
    "github.com/openai/openai-go/option"
)

func main() {
    apiKey := "sk-123456789012345678901234567890123456789012345678"

    client := openai.NewClient(
        option.WithAPIKey(apiKey),
        option.WithBaseURL("https://gateway.serevixai.ai/v1"),
    )

    resp, err := client.Chat.Completions.New(
        context.Background(),
        openai.ChatCompletionNewParams{
            Model: "Doubao-1.5-pro-32k",
            Messages: []openai.ChatCompletionMessageParamUnion{
                openai.UserMessage("你好,给我科普一下量子力学吧"),
            },
        },
    )

    if err != nil {
        fmt.Println("error:", err)
        return
    }

    fmt.Println(resp.Choices[0].Message.Content)
}
#!/usr/bin/env python3

from openai import OpenAI

def main():
    api_key = "sk-123456789012345678901234567890123456789012345678"

    client = OpenAI(
        api_key=api_key,
        base_url="https://gateway.serevixai.ai/v1"
    )

    response = client.chat.completions.create(
        model="Doubao-1.5-pro-32k",
        messages=[
            {"role": "user", "content": "你好,给我科普一下量子力学吧"}
        ]
    )

    print(response.choices[0].message.content)

if __name__ == "__main__":
    main()

5. 响应示例

{
    "id": "chatcmpl-1234567890",
    "object": "chat.completion",
    "created": 1699999999,
    "model": "Doubao-1.5-pro-32k",
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "量子力学是研究微观世界的物理学分支……"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 10,
        "completion_tokens": 30,
        "total_tokens": 40
    }
}