Skip to content

R1V4

创建聊天完成请求,支持文本和图片输入,返回模型生成的回复。

接口地址

POST /api/v1/chat/completions

请求参数

请求体 (JSON)

json
{
  "model": "string (必填)",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "text",
          "text": "string"
        },
        {
          "type": "image_url",
          "image_url": {
            "url": "string (base64 data URI)"
          }
        }
      ]
    }
  ],
  "stream": true
}

参数说明

参数名类型必填说明
modelstring模型名称:skywork/r1v4-liteskywork/r1v4-vl-planner-lite
messagesarray对话消息列表,包含用户消息和助手回复
streamboolean是否使用流式响应,默认为 false。设置为 true 时返回 SSE 格式响应

messages 参数说明

参数名类型必填说明
rolestring消息角色,支持 userassistantsystem
contentarray消息内容,支持文本和图片的混合输入

content 参数说明

文本内容

json
{
  "type": "text",
  "text": "请分析这张图片"
}

图片内容

json
{
  "type": "image_url",
  "image_url": {
    "url": "data:image/jpeg;base64,/9j/4AAQSkZJRg..."
  }
}

图片 URL 支持 base64 编码的 data URI 格式:

  • 格式:data:<mime_type>;base64,<base64_encoded_data>
  • 支持的图片格式:JPEG、PNG、GIF、WebP 等

请求示例

Python 示例

python
import requests
import base64
import os


def image_to_base64(image_path):
    """将图片文件转换为base64编码"""
    with open(image_path, "rb") as f:
        image_data = f.read()
        image_base64 = base64.b64encode(image_data).decode("utf-8")
        from mimetypes import guess_type

        mime_type, _ = guess_type(image_path)
        return f"data:{mime_type};base64,{image_base64}"


# 配置
base_url = "https://api.skyworkmodel.ai"
api_key = "Your-API-Key"
model = "skywork/r1v4-lite"  # 也可以使用 skywork/r1v4-vl-planner-lite 来使用规划器模型

# 准备消息内容
contents = []

image_path = "path/to/your/image.jpg"  # 可选,也可以仅使用纯文本内容
if image_path and os.path.exists(image_path):
    image_base64 = image_to_base64(image_path)
    contents.append({"type": "image_url", "image_url": {"url": image_base64}})

contents.append({"type": "text", "text": "请分析这张图片"})

# 请求数据
data = {
    "messages": [{"role": "user", "content": contents}],
    "model": model,
    "stream": True,  # 设置为 False 使用非流式响应
    "enable_search": True,  # 启用深度研究模式,也可以设置为 False 使用普通模式
}

# 请求头
headers = {
    "Content-Type": "application/json",
    "Accept": "text/event-stream",
    "Authorization": f"Bearer {api_key}",
}

# 发送请求
url = f"{base_url}/api/v1/chat/completions"
response = requests.post(url, json=data, headers=headers, stream=True, timeout=600)

# 处理流式响应
if response.status_code == 200:
    for line in response.iter_lines(decode_unicode=True):
        if line:
            print(line)
else:
    print(f"请求失败: {response.status_code}")
    print(f"错误信息: {response.text}")

纯文本请求

bash
curl -X POST "https://api.skyworkmodel.ai/api/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Accept: text/event-stream" \
  -d '{
    "model": "[MODEL_NAME]",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "怎么才能赚到一个亿?"
          }
        ]
      }
    ],
    "stream": true
  }'

文本 + 图片请求

bash
curl -X POST "https://api.skyworkmodel.ai/api/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-api-key>" \
  -H "Accept: text/event-stream" \
  -d '{
    "model": "[MODEL_NAME]",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "image_url",
            "image_url": {
              "url": "data:image/jpeg;base64,[YOUR BASE64 PICTURE]"
            }
          },
          {
            "type": "text",
            "text": "请分析这张图片"
          }
        ]
      }
    ],
    "stream": true
  }'

响应格式

流式响应 (stream: true)

stream 参数设置为 true 时,响应采用 Server-Sent Events (SSE) 格式:

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"[MODEL_NAME]","choices":[{"index":0,"delta":{"content":"你好"},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"[MODEL_NAME]","choices":[{"index":0,"delta":{"content":","},"finish_reason":null}]}

data: {"id":"chatcmpl-123","object":"chat.completion.chunk","created":1694268190,"model":"[MODEL_NAME]","choices":[{"index":0,"delta":{"content":"我是"},"finish_reason":null}]}

data: [DONE]

每个 data: 行包含一个 JSON 对象,其中:

  • id: 响应 ID
  • object: 对象类型,通常为 chat.completion.chunk
  • created: 创建时间戳
  • model: 使用的模型名称
  • choices: 选择列表,包含:
    • index: 选择索引
    • delta: 增量内容,包含 content 字段
    • finish_reason: 完成原因,null 表示未完成,stop 表示正常结束

非流式响应 (stream: false)

stream 参数设置为 false 或未设置时,返回完整的 JSON 响应:

json
{
  "id": "chatcmpl-123",
  "object": "chat.completion",
  "created": 1694268190,
  "model": "[MODEL_NAME]",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "你好,我是 AI 助手,很高兴为您服务。"
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 20,
    "total_tokens": 30
  }
}

错误响应

当请求失败时,返回错误信息:

json
{
  "code": 400307,
  "code_msg": "Invalid API key",
}

注意事项

  1. 图片大小限制:建议单张图片不超过 10MB,base64 编码后大小会增加约 33%
  2. 超时设置:流式响应可能需要较长时间,建议设置合理的超时时间(如 600 秒)
  3. 流式响应处理:需要正确处理 SSE 格式,逐行解析 data: 开头的行
  4. 模型选择:根据需求选择合适的模型,不同模型有不同的能力和限制