DeepSeek-R1 上了 LiveCodeBench:用同一把 TaoToken Key 复现 pass@1 📅 发布时间:2026/9/19 11:18:05 👁 浏览次数: 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 目标与产物用同一把 TaoToken Key 复现 DeepSeek-R1 在 LiveCodeBench 的 pass1本文要完成的事情很具体在本地用一把 TaoToken API Key把 DeepSeek-R1 接到 LiveCodeBench 的一个公开子集上跑出可复现的 pass1 与平均 token 消耗。TaoToken 在这里承担两个角色——提供统一入口的 Key以及在脚本里通过改model字段完成模型切换。你不需要为每个模型单独申请账号也不需要维护多套鉴权逻辑。先明确产物清单跑完本文你应该拿到三样东西一个可复用的评测脚本读取题目 JSONL逐题调用模型抽取代码块执行单元测试记录通过与否。一张逐题通过/失败表每题一行包含题目 ID、是否通过、输入/输出 token 数、耗时。一份汇总统计pass1 数值、总 token 消耗、平均每题 token 消耗。需要提前说明的是本文不含排行分数。LiveCodeBench 官方榜单上的数字会随版本、日期、评测配置变化任何脱离具体快照的分数都不可比。本文只做本地复现流程不引用、不编造任何榜单分数。如果你需要看官方口径请以 LiveCodeBench 官方仓库与论文为准TaoToken 不是该榜单的参赛方也不对榜单结果做任何背书。关于成本TaoToken 的计费与模型价格请以官网页面为准本文不写具体单价因为价格会调整。你只需要知道跑完一个子集的成本取决于题目数量、生成长度和模型选择。TaoToken 官网入口https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_mediumcsdnutm_campaigngenerate2. 操作步骤从拿 Key 到跑通第一题2.1 拿 Key 与确认 Base URL在 TaoToken 控制台创建 API Key。控制台地址https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_generateutm_contentconsoleutm_campaigngenerate创建后你会得到形如sk-...的字符串。把它写进环境变量不要硬编码进脚本export TAOTOKEN_API_KEYsk-your-key-here export TAOTOKEN_BASE_URLhttps://taotoken.net/api注意 Base URL 是https://taotoken.net/api不带任何 UTM 参数。很多 401/404 问题都来自把带查询参数的推广链接直接当 Base URL 用或者漏了/api路径。这两点确认清楚后面基本不会卡在鉴权上。2.2 准备 LiveCodeBench 公开子集LiveCodeBench 的题目以 JSONL 形式发布每题通常包含question_id、question_content、starter_code、test或public_test_cases等字段。为了控制篇幅和成本本文只取一个小子集比如按发布日期切片取 20 题。import json def load_subset(path, limit20): items [] with open(path, r, encodingutf-8) as f: for line in f: line line.strip() if not line: continue items.append(json.loads(line)) if len(items) limit: break return items不同版本的 LiveCodeBench 字段名可能略有差异跑之前先打印一条样本确认键名避免 KeyError。2.3 调用脚本切模型只改一个字段下面是核心调用逻辑。注意model字段直接写DeepSeek-R1切换模型时只改这一处Key 和 Base URL 保持不变。import os import time import json import requests API_KEY os.environ[TAOTOKEN_API_KEY] BASE_URL os.environ[TAOTOKEN_BASE_URL].rstrip(/) MODEL_ID DeepSeek-R1 def build_prompt(item): return ( 请用 Python 解决下面的编程题。只输出一个完整的代码块 不要输出解释文字。\n\n f题目\n{item[question_content]}\n\n f起始代码\n{item.get(starter_code, )}\n ) def call_model(prompt, max_tokens2048): url f{BASE_URL}/v1/chat/completions headers { Authorization: fBearer {API_KEY}, Content-Type: application/json, } payload { model: MODEL_ID, messages: [{role: user, content: prompt}], max_tokens: max_tokens, temperature: 0.0, } start time.time() resp requests.post(url, headersheaders, jsonpayload, timeout300) elapsed time.time() - start resp.raise_for_status() data resp.json() return { text: data[choices][0][message][content], usage: data.get(usage, {}), elapsed: elapsed, }temperature0.0是为了让复现尽量稳定。即便如此服务端推理仍可能有细微非确定性所以 pass1 的绝对值会随运行波动这是正常现象。2.4 抽取代码并执行测试模型返回的是 Markdown 代码块需要先抽取再执行。执行第三方代码有风险建议在容器或受限环境里跑。import re def extract_code(text): match re.search(r(?:python)?\s*(.*?), text, re.DOTALL) return match.group(1).strip() if match else text.strip() def run_tests(code, test_cases): namespace {} try: exec(code, namespace) except Exception as e: return False, fcompile_error: {e} func namespace.get(Solution) if func is None: return False, no Solution class for case in test_cases: try: args case[input] expected case[output] got func().solve(*args) if isinstance(args, list) else func().solve(args) if str(got).strip() ! str(expected).strip(): return False, fwrong_answer: got {got}, expected {expected} except Exception as e: return False, fruntime_error: {e} return True, passedtest_cases的解析方式取决于你用的 LiveCodeBench 版本有的字段是 JSON 字符串需要再json.loads一次。跑之前先对一题手动验证确认解析链路正确。2.5 汇总结果def evaluate(items): rows [] total_in total_out 0 for item in items: prompt build_prompt(item) result call_model(prompt) code extract_code(result[text]) passed, reason run_tests(code, parse_tests(item)) usage result[usage] total_in usage.get(prompt_tokens, 0) total_out usage.get(completion_tokens, 0) rows.append({ question_id: item[question_id], passed: passed, reason: reason, prompt_tokens: usage.get(prompt_tokens, 0), completion_tokens: usage.get(completion_tokens, 0), elapsed: round(result[elapsed], 2), }) n len(rows) pass_at_1 sum(r[passed] for r in rows) / n if n else 0 return rows, { n: n, pass1: round(pass_at_1, 4), total_prompt_tokens: total_in, total_completion_tokens: total_out, avg_tokens_per_item: round((total_in total_out) / n, 1) if n else 0, }把rows写成 CSV就是逐题通过/失败表把汇总字典打印出来就是 pass1 与 token 消耗总计。3. TaoToken 接入与配置Claude Code、Codex、CC Switch除了上面的 Python 脚本TaoToken 也能接进常见的编码工具。不同工具的配置位置不同下面分别说明。3.1 Claude CodeClaude Code 读取settings.json通过ANTHROPIC_*环境变量或配置项指向自定义端点。典型配置{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_API_KEY: sk-your-key-here, ANTHROPIC_MODEL: DeepSeek-R1 } }把ANTHROPIC_MODEL换成你要用的模型 ID 即可。如果工具报模型不存在先确认该模型 ID 在 TaoToken 的模型列表里可用。3.2 CodexCodex 类工具使用config.toml配置模型与供应商model DeepSeek-R1 model_provider taotoken [model_providers.taotoken] name TaoToken base_url https://taotoken.net/api env_key TAOTOKEN_API_KEYenv_key指向你存放 Key 的环境变量名不要把 Key 明文写进 toml。3.3 CC Switch 三件套CC Switch 用于在多个供应商/模型之间切换核心是三件套供应商配置、模型映射、Key 绑定。配置时把 Base URL 统一填https://taotoken.net/api模型映射里把目标模型指向DeepSeek-R1Key 绑定复用同一把 TaoToken Key。这样切换模型时不需要重新申请凭证。如果你在接入过程中遇到鉴权或路径问题优先查接入文档https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_generateutm_contentdocutm_campaigngenerate4. 可验证结果与失败分支4.1 可验证结果跑完 20 题子集后你会得到类似结构的结果以下为示例格式非真实分数question_idpassedreasonprompt_tokenscompletion_tokenselapsedlcb_0001Truepassed51238012.4lcb_0002Falsewrong_answer49841013.1lcb_0003Truepassed53029510.8汇总指标值题目数20pass1由你的实际运行决定总 prompt tokens由你的实际运行决定总 completion tokens由你的实际运行决定平均每题 tokens由你的实际运行决定本文不含排行分数上表数值请以你自己运行输出为准。任何声称固定 pass1 的说法都忽略了题目子集、版本、温度、执行环境等变量。4.2 失败分支常见失败及处理401 UnauthorizedKey 错误或未带Bearer前缀。检查Authorization头格式。404 Not FoundBase URL 写错常见于把推广链接当端点或漏了/v1/chat/completions路径。模型不存在model字段拼写错误或该模型当前不可用。核对模型 ID。compile_error抽取代码失败模型可能输出了多段代码或解释文字。收紧 prompt。runtime_error题目输入解析错误或代码依赖缺失。先单题调试。超时长推理题耗时较长适当调大timeout或降低并发。排障时建议先只跑 1 题确认链路通了再放大到整个子集。5. 限制、成本与模型选择限制LiveCodeBench 的题目版本、测试用例格式会更新本文脚本需要按你拿到的数据调整字段解析。本地执行模型生成的代码存在安全风险务必隔离。pass1 受温度、采样、执行环境影响单次运行不代表稳定水平。成本总成本 输入 token × 输入单价 输出 token × 输出单价。DeepSeek-R1 这类推理模型输出 token 通常较多因为包含推理过程。具体单价以官网为准https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_mediumcsdnutm_campaigngenerate模型选择如果你要做长期、批量的评测或 Agent 开发建议用 Coding Plan 管理额度与模型切换https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_generateutm_contentcoding-planutm_campaigngenerate如果你只是想先手动对话验证模型行为可以从模型对话页开始https://taotoken.net/?utm_sourcetaotoken_aicg_blog_generateutm_contentmodel-chatutm_campaigngenerate需要管理多把 Key 或查看用量时去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_generateutm_contentapi-keysutm_campaigngenerate最后提醒本文所有流程都可复现但不提供任何榜单分数承诺。评测分数请以官方榜单和你自己的运行结果为准模型价格与可用性以 TaoToken 官网实时信息为准。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度