🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度
1. 先搞清楚要复现什么
LiveCodeBench 是一个持续更新的代码评测基准,它从 LeetCode、AtCoder、Codeforces 等竞赛平台抓取题目,按发布时间切分,避免模型在训练时“见过”这些题。DeepSeek-R1 官方在 LiveCodeBench 上提交过成绩,其中 Hard 子集(难度较高的题目)的通过率是很多人关心的数字。
你要做的事很具体:用同一把 TaoToken Key 调用 DeepSeek-R1,在本地跑 LiveCodeBench 的 Hard 子集,生成一份提交文件,然后逐题对照官方通过率,看自己的复现结果和官方数字差多少。
适合谁做这件事?已经用过 OpenAI 兼容接口、能跑 Python 脚本、想验证模型真实代码能力的人。不需要你从头搭评测框架,LiveCodeBench 官方仓库已经提供了完整的评测管线,你只需要把模型请求接到 TaoToken 上。
这里有个前提要说清楚:TaoToken 在这个流程里只负责一件事——提供调用 DeepSeek-R1 的 Key 和 API 入口。评测逻辑、题目加载、结果判定全部由 LiveCodeBench 官方代码完成。你不是在评测 TaoToken,而是在用 TaoToken 作为模型请求通道来复现一个公开基准。
我试过用这套流程跑 Hard 子集,下面把每一步拆开讲。
2. 环境准备与 LiveCodeBench 安装
2.1 基础环境
先确认 Python 版本。LiveCodeBench 要求 Python 3.10 以上,推荐 3.11。
python --version # 期望输出:Python 3.11.x如果版本不够,用 conda 或 pyenv 切一个干净环境:
conda create -n lcb python=3.11 -y conda activate lcb2.2 克隆 LiveCodeBench 仓库
git clone https://github.com/LiveCodeBench/LiveCodeBench.git cd LiveCodeBench pip install -e .安装过程会拉取依赖,包括 datasets、openai、anthropic 等。如果你只需要跑代码生成部分,可以只装核心依赖:
pip install datasets openai tqdm2.3 确认 Hard 子集的数据结构
LiveCodeBench 的数据按版本切分,Hard 子集是其中难度标签为 hard 的题目集合。先加载看一下:
from datasets import load_dataset ds = load_dataset("livecodebench/code_generation_lite", split="test") hard = [x for x in ds if x.get("difficulty") == "hard"] print(len(hard)) print(hard[0].keys())你会看到每道题包含 question_id、question_content、difficulty、platform、starter_code 等字段。Hard 子集的题目数量随版本更新会变,以你拉到的数据集为准。
注意:LiveCodeBench 的数据集会定期更新,不同时间拉到的题目集合可能不同。复现时记录你用的数据集版本和拉取日期,否则对照官方数字时会对不上。
3. 接入 TaoToken 并配置模型请求
3.1 拿 Key
到 https://taotoken.net/api-keys 创建一个 API Key。这个 Key 就是你调用 DeepSeek-R1 的凭证。创建后复制保存,页面不会再次完整显示。
3.2 配置 API Base URL
LiveCodeBench 的代码生成脚本默认走 OpenAI 兼容接口。你需要把 base_url 指向 TaoToken 的 API 地址:
https://taotoken.net/api模型名称填 DeepSeek-R1 对应的标识。具体模型 ID 以 TaoToken 控制台模型列表为准,通常在模型对话页面能看到可用模型。
3.3 写一个最小调用测试
在跑完整评测之前,先用一段短代码确认 Key 和 Base URL 能通:
from openai import OpenAI client = OpenAI( api_key="你的TaoToken Key", base_url="https://taotoken.net/api" ) resp = client.chat.completions.create( model="deepseek-r1", messages=[{"role": "user", "content": "写一个Python函数判断回文数"}], max_tokens=512 ) print(resp.choices[0].message.content)如果返回正常内容,说明通道没问题。如果报 401,检查 Key 是否复制完整;如果报 404,检查 base_url 是否漏了 /api 或多了斜杠。
3.4 把配置写进评测脚本
LiveCodeBench 的生成脚本在lcb_runner/runner/目录下。你可以直接用命令行参数传入:
python -m lcb_runner.runner.main \ --model deepseek-r1 \ --scenario codegeneration \ --base_url https://taotoken.net/api \ --api_key 你的TaoToken Key \ --release_version release_v5 \ --subset hard \ --n 1 \ --temperature 0.6参数说明:
--subset hard:只跑 Hard 子集--n 1:每题生成 1 个候选,官方提交通常用 n=1 或 n=10,先跑 1 保证流程通--temperature 0.6:DeepSeek-R1 官方推荐温度,具体以模型文档为准--release_version:数据集版本,以你实际拉到的为准
如果脚本不支持--base_url参数,你需要改lcb_runner/lm_styles.py或对应的模型配置文件,把 base_url 写死为https://taotoken.net/api。
4. 生成提交文件与逐题对照
4.1 运行评测并生成提交文件
跑完上面的命令后,LiveCodeBench 会在output/目录下生成一个 JSON 文件,命名类似:
output/deepseek-r1_hard_release_v5.json这个文件就是你的提交文件,里面每道题包含 question_id、生成的代码、以及模型输出的原始文本。
你可以用一段脚本检查文件结构:
import json with open("output/deepseek-r1_hard_release_v5.json") as f: data = json.load(f) print(len(data)) print(data[0]["question_id"]) print(data[0]["code_list"][0][:200])4.2 跑官方评测脚本算通过率
生成提交文件后,用 LiveCodeBench 自带的评测脚本算通过率:
python -m lcb_runner.evaluation.compute_scores \ --eval_file output/deepseek-r1_hard_release_v5.json \ --release_version release_v5 \ --subset hard输出会给出 pass@1 的数值。这个数值就是你的复现通过率。
4.3 逐题对照表
把官方公布的 Hard 子集通过率和你的结果放在一起对照。官方数字以 DeepSeek-R1 技术报告或 LiveCodeBench 官方榜单为准,记录你查看的日期。
| 题目 ID | 平台 | 官方是否通过 | 本地是否通过 | 差异原因 |
|---|---|---|---|---|
| lcb_001 | LeetCode | 是 | 是 | 一致 |
| lcb_002 | AtCoder | 是 | 否 | 生成代码超时 |
| lcb_003 | Codeforces | 否 | 否 | 一致 |
| ... | ... | ... | ... | ... |
逐题对照的意义在于:整体通过率接近不代表每题都对得上。有些题官方过了你没过,有些题官方没过你过了,这些差异才是复现时值得记录的东西。
4.4 失败分支处理
跑的过程中可能遇到几种失败:
Key 额度不足:返回 402 或类似错误。到 https://taotoken.net/console 查看余额和用量。
模型返回空内容:DeepSeek-R1 有时会在思考阶段耗尽 max_tokens,导致最终答案为空。把 max_tokens 调大,或检查是否触发了截断。
评测脚本报题目缺失:数据集版本和评测脚本版本不匹配。确认--release_version和数据集拉取时用的版本一致。
通过率远低于官方:先检查 temperature 和 n 是否和官方设置一致。官方提交可能用了 n=10 取 pass@1,你只跑 n=1 会偏低。
5. 限制、成本与模型选择
5.1 复现的限制
LiveCodeBench 的题目会随版本更新,官方提交时的题目集合和你现在拉到的可能不同。严格复现需要锁定数据集版本和拉取日期。
DeepSeek-R1 的输出有随机性,即使 temperature 固定,不同批次的生成结果也可能有差异。单次复现的通过率波动在几个百分点内是正常的。
官方提交可能用了特定的 prompt 模板、few-shot 示例、或后处理逻辑。如果你只用默认配置,结果和官方有差距是预期内的。
5.2 成本估算
Hard 子集的题目数量以你拉到的数据集为准,通常几十到一百多道。每题生成一次,输入 token 加输出 token 的总量取决于题目长度和模型思考长度。DeepSeek-R1 的思考链较长,输出 token 消耗比普通模型高。
具体单价以 TaoToken 官网模型页面为准。跑之前可以先跑 5 道题估算单题成本,再决定是否跑全量。
5.3 模型选择
如果你只是想验证流程,可以先用较小的子集或较短的题目跑通。如果要做正式复现,建议:
- 锁定数据集版本
- 记录 temperature、n、max_tokens 等参数
- 跑多次取平均,减少随机性影响
- 把逐题对照表保存下来,方便后续对比
DeepSeek-R1 在代码生成任务上的表现和具体版本有关,TaoToken 上可用的模型 ID 以控制台为准。如果你需要长期跑评测,Coding Plan 可能比按量计费更划算,具体到 https://taotoken.net/coding-plan 看当前方案。
整个流程跑下来,最耗时的不是调 API,而是等模型生成和跑评测脚本。Hard 子集的题目判定涉及编译和执行,单题评测时间从几秒到几十秒不等。建议用后台任务跑,别在前台干等。
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度