Skip to main content
工具包/框架

OpenAI兼容-Batch Chat

对于数据标注、内容生成等无需实时响应的场景,实时推理API存在成本高、并发受限的问题。阿里云百炼的批量对话(Batch Chat)API ,保持了与实时API一致的同步调用方式,您只需发起请求等待最终结果返回。目前该功能享有 官网限时 5 折优惠 ,能将您的推理成本直接降低 50%。

本接口仅支持提交单个请求。如需一次性传入多个请求,可通过文件方式提交,详情请参考OpenAI兼容-Batch(文件输入)

工作原理

  1. 请求提交:客户端发起请求并建立连接。
  2. 连接保持:请求进入队列排队,客户端保持连接等待。
  3. 同步返回:请求处理完成后,服务端通过之前保持的连接,将完整结果一次性返回给客户端。
    如果超过最长等待时间,连接将自动断开并返回超时错误。

适用范围

  • 华北2(北京)
  • 文本生成模型:qwen3.8-max、qwen3.7-max、qwen3.7-plus、qwen3.6-plus、qwen3.7-flash、qwen3.6-flash、qwen3.5-plus、qwen3.5-flash、qwen3-max、qwen-plus、qwen-flash、deepseek-v3.2
  • 图像与视频理解模型:qwen3.8-max、qwen3.7-plus、qwen3.6-plus、qwen3.7-flash、qwen3.6-flash、qwen3.5-plus、qwen3.5-flash、qwen3.5-omni-plus、qwen3.5-omni-flash、qwen3-vl-plus、qwen3-vl-flash
  • 在Batch 场景下,qwen3.8-maxqwen3.7-maxqwen3.7-plusqwen3.6-plusqwen3.7-flashqwen3.6-flashqwen3.5-plusqwen3.5-flashqwen3.5-omni-flashqwen3.5-omni-plus单次请求的上下文 Token 数最大支持 256K,qwen3.5-omni-plusqwen3.5-omni-flash不支持语音输出。
  • 部分模型支持思考模式,开启后会产生思考tokens导致成本增加。
  • qwen3.8qwen3.7qwen3.6qwen3.5 系列模型默认开启思考模式。建议使用混合思考模型时,显式设置enable_thinking参数(true开启/false关闭)。
  • 在 JSONL 请求体中,enable_thinkingbody 的顶层参数,须与 model 同级传入,不能放在 extra_body 中。

如何使用

前提条件

pip3 install -U openai

步骤1:配置 API 端点

只需修改 API 端点(base_url),即可轻松将现有的实时推理请求切换至批量推理。请根据调用方式,配置正确的 API 端点。 SDK配置:base_url设置为https://batch.dashscope.aliyuncs.com/compatible-mode/v1 HTTP调用:请求端点为POST https://batch.dashscope.aliyuncs.com/compatible-mode/v1/chat/completions

步骤2:发起调用

此处以文本对话为例,展示如何调用 Batch Chat 接口。 请求的默认等待超时时间为3600秒(1小时),在多数情况下无需额外配置。
下方示例展示如何主动设置一个自定义的超时时间(60-3600秒)作为参考。
  • Python
  • Java
  • Node.js
  • Go
  • C#(HTTP)
  • PHP(HTTP)
  • curl
请求示例
import os
from openai import OpenAI

client = OpenAI(
   # 若没有配置环境变量,可用阿里云百炼API Key将下行替换为:api_key="sk-xxx",但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险.
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url="https://batch.dashscope.aliyuncs.com/compatible-mode/v1",  # 阿里云百炼Batch chat API 的 URL
).with_options(timeout=1800.0) # 设置1800秒(30分钟)的等待时间,最长3600秒

completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "你是谁?"},
    ]
)
print(completion.choices[0].message.content)
响应示例
我是千问,阿里巴巴集团旗下的超大规模语言模型。我能够回答问题、创作文字,比如写故事、写公文、写邮件、写剧本、逻辑推理、编程等等,还能表达观点,玩游戏等。如果你有任何问题或需要帮助,欢迎随时告诉我!

使用限制

  • 等待时间:提交请求后,会同步等待结果,服务端最长会保持连接3600秒(1小时)。可根据实际需求设置自定义超时时间,取值范围为60-3600秒。
  • 并发限制:单个账户为每个模型最多可维持10,000个等待中的请求。超出此限制的新请求将被拒绝并返回相应错误码,直到有请求完成并释放出可用位置。
  • 调用速率:单个账户提交请求的频率上限为 1000 QPS(10,000次 / 10秒)。
    此上限为系统设定的理论最大值。在实际调用中,API的可用资源会受到整体系统负载的动态影响,建议您在代码中实现重试逻辑。

计费说明

  • 计费单价:按成功请求的输入和输出Token计费,目录价与对应模型实时调用价格一致。官网限时为 Batch Chat 调用提供 5 折优惠,其最终费用为实时调用价格的 50%,具体请参见模型列表
  • 计费范围:仅对任务中成功执行的请求进行计费。任何失败的请求(包括系统错误或超时)均不计费。
批量推理为独立计费项,不支持预付费(节省计划、资源包)、新人免费额度等优惠,以及上下文缓存等功能。

错误码

如果模型调用失败并返回报错信息,请参见错误码进行解决。

常见问题

  1. Batch Chat 请求耗时和实时 API 比较有区别吗? 有区别。Batch Chat 请求需要排队等待调度,因此端到端耗时通常高于实时 API。请求在服务端最长等待时间为1小时,超时未执行将自动断开并返回错误。
  2. 如何选择使用 Batch Chat 还是Batch File? 当业务逻辑需要以 API 同步调用的方式、高并发地提交大量独立的对话请求时,选择 Batch Chat。当需要处理的是包含大量请求的单个大文件,并且可以接受异步获取结果文件,则选择 Batch File。
  3. Batch Chat 能保证请求全部完成吗? 不保证。Batch Chat 使用的是 Batch 资源,完成情况取决于系统资源分配情况。如果系统资源繁忙,请求可能在队列中等待。若超过最长等待时间仍未被调度执行,连接将超时断开,此时请求不会被计费,可以稍后重试。

相关文档