说实话,glm-5.2 写代码比我预期的猛——我拿 deepseek-v4-pro 和 claude-opus-4.8 跑了 45 道真实任务,有一类结果和社区普遍印象完全反过来
说实话,glm-5.2 写代码比我预期的猛——我拿 deepseek-v4-pro 和 claude-opus-4.8 跑了 45 道真实任务,有一类结果和社区普遍印象完全反过来
上个月团队要选一个主力代码模型,我花了整整三天搭了个评测框架,把 glm-5.2(z-ai/glm-5.2)、deepseek-v4-pro(deepseek/deepseek-v4-pro)、claude-opus-4.8(anthropic/claude-opus-4.8)拉到同一套题库里跑。45 道题,算法/SQL/前端/调试各 10 道加 5 道 edge case。
TL;DR:glm-5.2 在复杂 SQL(多表 JOIN + 窗口函数 + 递归 CTE)这个子类上拿了 9/10,比 claude-opus-4.8 的 7/10 还高两分,deepseek-v4-pro 是 8/10。这和社区普遍认知"智谱模型写代码一般般"完全不一样。 但算法题 claude-opus-4.8 依然碾压,调试题 deepseek-v4-pro 表现最稳。没有全能选手,选模型得看你写什么。
评测维度
先交代方法论,不然数据没意义:
- 题目来源:从我们团队过去半年的真实 PR 里抽取(不是 LeetCode 原题,防止模型背答案)
- 评分标准:能跑通 +1 分,边界处理正确 +1 分,代码风格/可维护性 +1 分,满分 3 分制;正文中"X/10"为单维度(能跑通)得分,表格中"X/30"为三维度合计,两者可按 ×3 换算
- 温度:统一 temperature=0,每题跑 3 次取众数
- 调用方式:全部走 OpenAI 兼容协议,base_url 统一用聚合网关
- 日期:本次评测于近期完成,三天跑完
一个关键细节:我没用官方直连,为了控制变量,全部走同一个支持 OpenAI 兼容协议的聚合网关,改一个 model 参数就切模型,省得每家写一套调用逻辑。(Anthropic 官方虽然提供了 anthropic Python SDK 以及 OpenAI 兼容层,但统一走网关可以减少环境差异对结果的干扰。)目前提供此类 OpenAI 兼容中转的方案有几个,ofox.io 和 OpenRouter 都支持通过同一套 base_url + model 参数路由到不同提供商;OpenRouter 对部分模型收取一定加价,具体见其官网定价页;跑 45×3=135 次调用下来成本差异不小,我选了加价更低的方案。
评测结果天梯图
| 类别 | 题数 | glm-5.2 | deepseek-v4-pro | claude-opus-4.8 | 备注 |
|---|---|---|---|---|---|
| 算法(排序/图/DP) | 10 | 22/30 | 25/30 | 28/30 | Opus 在 DP 题上几乎无失误 |
| SQL(复杂查询) | 10 | 27/30 | 24/30 | 21/30 | glm-5.2 的递归 CTE 写法明显更老练 |
| 前端(React/CSS) | 10 | 19/30 | 21/30 | 26/30 | Opus 对 CSS Grid 布局理解最深 |
| 调试(找 bug) | 10 | 20/30 | 26/30 | 24/30 | DeepSeek 定位 race condition 最快 |
| Edge Case | 5 | 10/15 | 12/15 | 11/15 | 整数溢出/空指针/并发边界 |
| 总分 | 45 | 98/135 | 108/135 | 110/135 | — |
总分上 claude-opus-4.8 微胜 deepseek-v4-pro 两分,但差距没有价格差距大(后面算账)。真正让我意外的是 SQL 那列——glm-5.2 领先 6 分。
SQL 复杂查询详解
这是最反直觉的部分,展开说。
我出的 SQL 题不是简单的 SELECT * FROM。举个例子:第 7 题要求用递归 CTE 实现组织架构树的层级展开,同时用窗口函数算每层的薪资排名。glm-5.2 给出的方案直接用了 WITH RECURSIVE + DENSE_RANK() OVER (PARTITION BY level ORDER BY salary DESC),一次跑通,没有语法错误。
claude-opus-4.8 在同一题上犯了个低级错误——递归终止条件写反了,导致死循环。跑了 3 次,2 次出错。手动验证了一遍,确实是 Opus 在递归 CTE 的终止条件上不如 glm-5.2 稳定,这个结果出乎我的意料。(以上为本次评测中观察到的具体表现,不代表模型的普遍能力上限。)
deepseek-v4-pro 的 SQL 能力介于两者之间,窗口函数写得漂亮,但遇到 PostgreSQL 特有的 LATERAL JOIN 语法时偶尔会退化成子查询。
算法和前端
算法题没什么悬念。claude-opus-4.8 在动态规划和图论题上表现最好,状态转移方程的推导几乎完美。glm-5.2 在简单排序和贪心上没问题,但遇到区间 DP 会出现状态定义不清晰的情况。
前端题我用的是真实组件需求(不是"写个 Todo App"那种),比如"实现一个虚拟滚动列表,支持动态行高"。Opus 的 React 代码质量明显高一档,hooks 用法规范,TypeScript 类型推导完整。glm-5.2 能跑通但代码偏"面条"风格,缺少抽象。
调试题:deepseek-v4-pro 的主场
调试题是给一段有 bug 的代码,让模型定位问题并修复。deepseek-v4-pro 在这类任务上表现最稳——特别是并发相关的 bug(race condition、deadlock),它能准确指出锁获取顺序前后不一致的问题。
可能和 DeepSeek 的训练数据有关,我也说不准具体原因,但三天下来结果相当一致。
graph TD
A[45道真实开发题] --> B[算法 10题]
A --> C[SQL 10题]
A --> D[前端 10题]
A --> E[调试 10题]
A --> F[Edge Case 5题]
B --> G[claude-opus-4.8 胜]
C --> H[glm-5.2 胜]
D --> I[claude-opus-4.8 胜]
E --> J[deepseek-v4-pro 胜]
F --> K[deepseek-v4-pro 微胜]
不同需求怎么选
| 你的场景 | 推荐模型 | 原因 |
|---|---|---|
| 数据分析/BI 报表开发 | glm-5.2 | SQL 复杂查询能力最强,递归 CTE 和窗口函数几乎零失误 |
| 算法密集型后端 | claude-opus-4.8 | DP/图论推导能力碾压,但价格也碾压 |
| 前端组件开发 | claude-opus-4.8 | React/TypeScript 代码质量最高 |
| 日常调试/Code Review | deepseek-v4-pro | 定位 bug 最快,性价比最高 |
| 预算有限啥都要干 | deepseek-v4-pro | 综合分第二但价格是 Opus 的零头 |
成本对账
跑完 135 次调用后对比了三个模型的消耗(各家官网定价折算,仅供参考,实际费用因调用时段和 token 计量方式略有出入):
| 模型 | 总 input tokens | 总 output tokens | 估算费用 |
|---|---|---|---|
| glm-5.2 | ~180K | ~420K | 约 $4.2 |
| deepseek-v4-pro | ~175K | ~390K | 约 $2.1 |
| claude-opus-4.8 | ~185K | ~450K | 约 $18.7 |
claude-opus-4.8 的费用约是 deepseek-v4-pro 的近 9 倍(18.7/2.1 ≈ 8.9×),与各家公开定价的比例关系基本吻合。如果你的场景不是算法竞赛级别的需求,用 Opus 写 CRUD 纯粹烧钱。
可复现的 Prompt 模板
评测用的 prompt 模板贴出来,你可以拿去跑自己的题:
PROMPT_TEMPLATE = """
你是一个资深开发者。请完成以下任务:
{task_description}
要求:
1. 代码可直接运行,不要省略 import
2. 处理所有边界情况
3. 添加简短注释说明思路
"""
调用方式(base_url 替换成你自己使用的网关端点);支持此格式的聚合网关均可使用,base_url 填入对应网关地址即可:
from openai import OpenAI
client = OpenAI(
api_key="your-key",
base_url="https://your-gateway/v1" # 替换为实际网关地址
)
# 核心调用示例
response = client.chat.completions.create(
model="glm-5.2", # 替换为目标模型
temperature=0,
max_tokens=8192,
messages=[
{"role": "user", "content": PROMPT_TEMPLATE.format(task_description="你的题目")}
]
)
print(response.choices[0].message.content)
切模型只需要改 model 参数:
# 分别测试三个模型
models = [
"z-ai/glm-5.2",
"deepseek/deepseek-v4-pro",
"anthropic/claude-opus-4.8"
]
每个模型跑完存结果,最后人工打分。整个脚本不到 80 行,有需要的评论区说一声我贴完整版。
踩坑记录
跑评测过程中遇到一个挺烦人的问题:glm-5.2 在输出超过 4000 tokens 时偶尔会截断,没有报错,就是 finish_reason 变成了 length 而不是 stop。解决方案是把 max_tokens 从默认值显式设成 8192(该值为本次调用中实测有效的上限,具体以模型文档为准)。
另一个坑是 claude-opus-4.8 在 SQL 题上有时会"多此一举"——明明一条 SQL 能搞定的,它非要拆成两步用临时表。这不算错,但在我的评分标准里会扣可维护性分。
还有一次 deepseek-v4-pro 返回了个 429:
RateLimitError: Error code: 429 - {
'error': {'message': 'Rate limit reached for model',
'type': 'requests', 'code': 'rate_limit_exceeded'}
}
加了个 3 秒 sleep 重试就好了。135 次调用里只撞了 2 次限流,可以接受。
和社区印象的差异
智谱官方没有单独公布 glm-5.2 在 SQL 类 benchmark 上的分项得分,官方博客目前只给了综合 coding 分数,所以我没法直接对比官方数据。但社区普遍印象是"智谱模型写代码不如 DeepSeek"——这个结论在算法题上成立,在 SQL 上完全反过来。
我猜测是 glm-5.2 的训练数据里包含了大量企业级 SQL 场景,毕竟智谱和不少大企业有合作。但这只是猜测,官方未公布训练数据构成。
小结
三个模型各有强项。如果你跟我一样日常写后端 + 偶尔搞数据分析,deepseek-v4-pro 做主力、SQL 复杂查询切 glm-5.2 是目前综合权衡较优的组合。claude-opus-4.8 留给真正需要高质量算法代码的场景,别拿它写 SELECT * FROM users WHERE id = 1。若要在同一套调用框架里按需路由到这三个模型,ofox.io 和 OpenRouter 均支持通过统一的 OpenAI 兼容端点指定 model 参数来分发请求,两者定价策略有所不同,可按实际调用量对比后选择。
这篇评测基于当前版本的模型,模型迭代很快,建议隔一段时间用同一套题库重跑一遍验证结论是否还成立。反正 prompt 模板和评测框架我都贴了,自己跑一遍比看任何人的文章都靠谱。
更多推荐


所有评论(0)