Skip to content

DeepSeek 在重大模型升级期间会开放临时对比测试端点(/compare),允许开发者一次请求同时得到两个模型的输出,无需自己写并发脚本。结果以 choices_a / choices_b 两组返回,便于直接对比效果差异。

DeepSeek 模型对比测试

对比端点是临时功能,仅在重大模型版本切换期间开放,到期后自动关闭。查看 更新日志 确认当前是否有可用的对比端点。

使用场景

  • 在将应用迁移到新模型版本前,用线上 prompt 采样对比输出质量
  • 快速发现新旧模型在特定任务(代码生成、中文写作、推理)上的差异
  • 比自己起两个并发请求更省事,延迟和 token 统计均可对比

基本用法

请求结构与 /chat/completions 完全兼容,只需:

  1. baseURL 改为对比端点(发布通知中会给出)
  2. model 传入 model_b 字段指定第二个版本
typescript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.deepseek.com/compare",  // 临时端点,以实际公告为准
  apiKey: process.env.DEEPSEEK_API_KEY,
});

const response = await client.chat.completions.create({
  model: "deepseek-v3",      // 模型 A(旧版)
  // @ts-ignore - DeepSeek 扩展字段
  model_b: "deepseek-v3.2",  // 模型 B(新版)
  messages: [
    { role: "user", content: "用 Python 写一个二分查找函数,包含完整的类型注解和文档字符串" }
  ],
  max_tokens: 1024,
});

// 两组结果分别在 choices_a 和 choices_b
const outputA = (response as any).choices_a?.[0]?.message?.content;
const outputB = (response as any).choices_b?.[0]?.message?.content;

console.log("旧版输出:", outputA);
console.log("新版输出:", outputB);

Python 版本:

python
from openai import OpenAI

client = OpenAI(
    api_key="<your api key>",
    base_url="https://api.deepseek.com/compare",
)

response = client.chat.completions.create(
    model="deepseek-v3",
    extra_body={"model_b": "deepseek-v3.2"},
    messages=[
        {"role": "user", "content": "用 Python 写一个二分查找函数,包含完整的类型注解和文档字符串"}
    ],
    max_tokens=1024,
)

output_a = response.choices_a[0].message.content
output_b = response.choices_b[0].message.content

批量对比脚本

实际评估时通常需要用多个测试 prompt 对比,用下面的脚本可以批量运行并输出对比报告:

typescript
import OpenAI from "openai";
import { writeFileSync } from "fs";

const client = new OpenAI({
  baseURL: "https://api.deepseek.com/compare",
  apiKey: process.env.DEEPSEEK_API_KEY,
});

const testCases = [
  "写一个 TypeScript 泛型工具类型,实现深度 Readonly",
  "解释 KV Cache 在 Transformer 推理中的作用,100字以内",
  "将以下 JSON 数据按 age 字段降序排序:[{name:Alice,age:30},{name:Bob,age:25}]",
];

async function compareModels() {
  const results = [];
  for (const prompt of testCases) {
    const res = await client.chat.completions.create({
      model: "deepseek-v3",
      // @ts-ignore
      model_b: "deepseek-v3.2",
      messages: [{ role: "user", content: prompt }],
      max_tokens: 512,
    }) as any;

    results.push({
      prompt,
      model_a: res.choices_a[0].message.content,
      model_b: res.choices_b[0].message.content,
      tokens_a: res.usage_a?.total_tokens,
      tokens_b: res.usage_b?.total_tokens,
    });
  }
  writeFileSync("compare-results.json", JSON.stringify(results, null, 2));
  console.log(`完成 ${results.length} 条对比,结果写入 compare-results.json`);
}

compareModels();

响应结构

对比接口返回的字段与标准接口的差异:

字段说明
choices_a模型 A(model 字段指定)的输出
choices_b模型 B(model_b 字段指定)的输出
usage_a模型 A 的 token 用量
usage_b模型 B 的 token 用量

计费:两个模型的 token 用量分别计费,总成本是两次独立请求之和。

注意事项

  • 对比端点不是常设的,每次模型升级期间才临时开放
  • stream: true 支持情况视具体端点而定,建议先用非流式测试
  • 如果当前没有活跃的对比端点,请求会返回 404
  • 结果差异评估建议关注:代码正确性、中文流畅度、推理链完整性

常见问题

Q: 对比端点什么时候开放?

A: DeepSeek 在重大模型版本切换时(如 V3 → V3.2、V3.2 → V4)会临时开放,持续几周到几个月不等。具体时间和端点地址在 更新日志 和官方 Discord 发布。

Q: 对比测试的成本是普通请求的两倍吗?

A: 是的,两个模型分别计费,总 token 消耗约为单次请求的 2 倍。建议用精选的代表性 prompt(20~50 条)做评估,而不是全量请求。