Appearance
DeepSeek 在重大模型升级期间会开放临时对比测试端点(/compare),允许开发者一次请求同时得到两个模型的输出,无需自己写并发脚本。结果以 choices_a / choices_b 两组返回,便于直接对比效果差异。
DeepSeek 模型对比测试
对比端点是临时功能,仅在重大模型版本切换期间开放,到期后自动关闭。查看 更新日志 确认当前是否有可用的对比端点。
使用场景
- 在将应用迁移到新模型版本前,用线上 prompt 采样对比输出质量
- 快速发现新旧模型在特定任务(代码生成、中文写作、推理)上的差异
- 比自己起两个并发请求更省事,延迟和 token 统计均可对比
基本用法
请求结构与 /chat/completions 完全兼容,只需:
- 把
baseURL改为对比端点(发布通知中会给出) 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 条)做评估,而不是全量请求。