更新于

LLM 编程能力中文场景基准


HumanEval、SWE-Bench、LiveCodeBench——这些主流编程能力基准测试都有一个共同特点:测试用例主要是英文的。对于中国开发者来说,日常写代码的场景和这些基准差距不小:你要处理中文注释、对接支付宝/微信的 API、调试包含中文错误信息的 traceback、阅读中文技术文档然后写实现。

本文关注的不是谁在 HumanEval 排名更高,而是:在你日常开发的真实场景里,哪个模型更好用

说明:以下测试结果基于公开的模型版本和社区测试记录,数字仅作量级参考,模型能力持续迭代,请以最新版本实测为准。


一、中文场景编程能力矩阵

先给出整体判断,再逐维度展开:

场景维度Claude SonnetGPT-4oDeepSeek-V3GLM-4-AirDoubao-Pro
中文注释 + 文档★★★★★★★★★★★★★★★★★★★★★★
国内 SDK 对接★★★★★★★★★★★★★★★★★★★
中文错误排查★★★★★★★★★★★★★★★★★★★★
复杂算法实现★★★★★★★★★★★★★★★★★★★★★
代码重构建议★★★★★★★★★★★★★★★★★★★
实时 API 知识(截止后)★★★★★★★★★★★★★

二、维度一:中文代码注释与文档

这是最直接的中文场景。测试任务:给一段 Python 函数生成规范的中文注释(Google Style)。

测试代码

def calculate_compound_interest(principal, rate, times, years):
    return principal * (1 + rate / times) ** (times * years)

Claude Sonnet 输出

def calculate_compound_interest(
    principal: float,
    rate: float,
    times: int,
    years: int,
) -> float:
    """计算复利终值。

    使用复利公式 A = P(1 + r/n)^(nt) 计算本金在指定利率和周期下的终值。

    Args:
        principal: 本金金额(单位:元)。
        rate: 年利率,以小数表示(如 5% 传入 0.05)。
        times: 每年计息次数(如按月计息传入 12)。
        years: 投资年限。

    Returns:
        到期终值金额(单位:元)。

    Example:
        >>> calculate_compound_interest(10000, 0.05, 12, 10)
        16470.09  # 近似值
    """
    return principal * (1 + rate / times) ** (times * years)

DeepSeek-V3 的输出风格类似,但倾向于使用更口语化的注释风格,docstring 格式略有差异。GLM-4-Air 注释质量也不错,但偶尔会在英文变量名上强行翻译,造成理解混乱(如把 rate 注释为”速率”而不是”利率”)。

结论:Claude Sonnet 和 DeepSeek-V3 在中文注释质量上处于同一水平,都是可信赖的。


三、维度二:国内 SDK 对接

这是国内开发者特有的场景。测试任务:用微信支付 SDK(wechatpayv3)实现一个”下单并获取支付参数”的方法。

这个场景的难点在于:

  1. 模型是否了解微信支付的最新 API 版本(v3)
  2. 是否知道签名算法(RSA-OAEP + SHA-256)
  3. 是否了解国内常见的”先本地校验,再调接口”的开发习惯

各模型表现

  • DeepSeek-V3:能直接生成 wechatpayv3 的代码,且版本较新,错误较少,是测试中表现最好的
  • GLM-4-Air / 豆包:同样了解微信支付 v3,且偶尔会主动提示”微信支付的回调要用异步处理”这类实践细节
  • Claude Sonnet:了解微信支付的基本概念,但偶尔使用较旧的 v2 API 写法,需要人工校正
  • GPT-4o:知识截止和更新滞后,生成的代码可能混合了 v2/v3 的写法

结论:国内 SDK 对接场景,国产模型(DeepSeek、GLM、豆包)有明显优势,训练数据包含更多国内文档。


四、维度三:中文错误信息排查

测试任务:提供一段包含中文报错信息的 traceback,让模型定位问题并给出修复代码。

Traceback (most recent call last):
  File "payment.py", line 47, in process_payment
    result = wechat_pay.pay(order_data)
  File "/usr/local/lib/python3.10/site-packages/wechatpayv3/core.py", line 134, in pay
    raise WechatPayException(f"签名验证失败,请检查商户私钥文件路径是否正确")
wechatpayv3.exceptions.WechatPayException: 签名验证失败,请检查商户私钥文件路径是否正确

Claude Sonnet 的分析(摘要):

这个错误的根本原因是 RSA 私钥加载失败。可能的原因有三个:

  1. apiclient.key 文件路径拼写错误
  2. 私钥文件格式不是 PKCS#8 PEM(微信支付 v3 要求此格式)
  3. 读取文件时没有指定正确的编码(有时文件包含 BOM)

建议检查…

Claude 的分析通常能精准定位到根本原因,而不是停留在”路径不对”这种表面答案。这和它对代码上下文的理解能力有关——Claude 擅长在报错信息和代码逻辑之间做推理。

结论:中文报错排查场景,Claude 系列表现最好,推理链路清晰。


五、维度四:复杂算法实现

这个维度是竞技感最强的。测试任务:实现一个 LFU(Least Frequently Used)缓存,要求 O(1) 的 get 和 put 操作,用中文写注释。

这类算法题考察的是模型对数据结构的深度理解,国内外模型差距明显:

模型正确性时间复杂度代码风格
Claude Sonnet完全正确O(1)整洁,注释详细
GPT-4o完全正确O(1)整洁
DeepSeek-V3完全正确O(1)较整洁
GLM-4-Air逻辑正确但边界 case 有瑕疵O(1)一般
Doubao-Pro逻辑基本正确,注释较少O(log n)(用了 heap)简洁

复杂算法场景,Claude Sonnet、GPT-4o、DeepSeek-V3 处于第一梯队,差距不大。


六、维度五:代码重构建议

测试任务:给一段 “callback hell” 的 Node.js 异步代码,让模型重构为 async/await,并指出代码中的其他问题。

这个维度考察的不只是”会写”,还有”会读懂烂代码”和”能给出工程化建议”。

Claude Sonnet 的重构建议通常会同时指出:

  1. 错误处理不完整的地方
  2. 可以提取的公共函数
  3. TypeScript 类型注解的机会
  4. 边界 case 覆盖

而 GLM 和豆包通常只完成”把回调改成 async/await”的表面任务,不主动扩展建议范围。这不一定是坏事——如果你只要求做一件事,它们更”听话”。


七、中文场景的实战选模建议

基于以上维度,给出几个典型项目的选型建议:

场景 A:国内业务系统开发(微信/支付宝/阿里云 SDK)

首选:DeepSeek-V3 或 GLM-4-Air(国产 API 知识最新) 备选:Claude Sonnet(理解力更强,但可能需要人工校正 SDK 用法)

场景 B:算法竞争/复杂逻辑实现

首选:Claude Sonnet 或 GPT-4o 备选:DeepSeek-V3

场景 C:代码审查和重构建议

首选:Claude Sonnet(推理能力最强) 备选:GPT-4o

场景 D:高频低成本的代码补全

首选:GLM-4-Flash(接近免费)或 Claude Haiku(便宜且快) 备选:DeepSeek-V3(价格有竞争力)


八、如何建立自己的评测集

公开 benchmark 无法完全代表你的项目,建议抽出 1–2 天建立”私有评测集”:

  1. 从最近 3 个月的 PR 里挑出 20 个有代表性的任务
  2. 为每个任务准备标准答案或评分标准(不需要完美,够做 A/B 对比即可)
  3. 把同样的任务发给 3–4 个候选模型,让你们团队里最懂这块业务的人盲测评分
  4. 加入成本维度(Token 消耗),计算”单位质量的成本”

这个过程通常会发现一个结论:没有全场景最优的模型,只有适合你场景的模型。


九、相关阅读

在中文场景下频繁切换和测试不同模型,YoTradeApi 支持用同一个 API Key 调用 Claude、GPT-4o、DeepSeek 等主流模型,人民币计费,方便横向对比和成本控制。