Claude 3 上手一个月:Sonnet 才是最强编程模型
先说结论
Claude 3 发布时全网刷屏,但大多数报道都是发布会摘要,没有人说实际用起来怎么样。
我花了大概 200 美元把 Claude 3 三个版本(Sonnet、Haiku、Opus)都测了一圈。结论对我是意外的:
Sonnet 是编程最强模型。不是 Opus,是 Sonnet。
为什么不是 Opus
Opus 是 Claude 3 里最贵的,$15/M input tokens。但编程任务真的不需要 Opus。
实测:让三个版本分别重构一个 500 行的混乱 Python 脚本,要求加类型注解、加文档字符串、拆分成模块。
| 模型 | 用时 | 评分(1-10) | 成本 |
|---|---|---|---|
| Opus | 18s | 9 | $0.15 |
| Sonnet | 12s | 9 | $0.003 |
| Haiku | 8s | 6 | $0.00025 |
Sonnet 和 Opus 的输出质量几乎一样,但成本是 1/50。
Opus 的真正强项是超长上下文(200k tokens)和复杂推理。对于日常编程任务,Sonnet 完全够用,而且快得多。
Sonnet 的编程强在哪
1. 代码理解能力
我测了一道经典的编程题:给一个没有注释、没有类型标注的 Django view 函数,让它重构并加测试。
Sonnet 准确理解了函数意图,不仅加上了类型注解,还发现了一个潜在的 SQL injection 漏洞。Opus 也发现了,但 Sonnet 更快。
# 原始代码(Claude 3 Sonnet 理解后)
# 这是一个用户资料更新 view
# 潜在问题: user_id 从 session 直接取,没有做 ownership 验证
@login_required
def update_profile(request):
# Sonnet 的注释:
# 问题 1: SQL 拼接有注入风险
# 问题 2: 缺少 ownership check
# 问题 3: 没有 CSRF 验证
...2. 测试生成
让 Sonnet 给一个 FastAPI endpoint 生成测试用例:
# Sonnet 生成的测试
class TestUserEndpoint:
def test_get_user_success(self):
# 正常路径
response = client.get("/users/1")
assert response.status_code == 200
assert "name" in response.json()
def test_get_user_not_found(self):
# 404 路径
response = client.get("/users/999")
assert response.status_code == 404
def test_get_user_unauthorized(self):
# 未授权
response = client.get("/users/1", headers={})
assert response.status_code == 401它覆盖了正常路径和边界情况,而且用了 pytest fixture 的正确姿势。
3. 代码解释
丢给它一段正则表达式,让它解释:
给一段"看起来像乱码"的正则,你能读懂吗?
Pattern: (?<!\.)(?<![A-Z][a-z])(?<!\b\d{3})(?<!\d{3}-\d{2})(?<!\d{3}-\d{2}-)\b\d{3}-\d{2}-\d{4}\b
Sonnet: 这是用来匹配美国 SSN(社会安全号)的正则...它没有被正则吓到,准确识别出了是 SSN 匹配,还指出了原正则的几处潜在问题。
Haiku 的真实使用场景
Haiku 不是用来写代码的,它是用来查代码的。
$0.00025/M tokens,便宜到可以随便用。丢给它一个 500 行的代码文件,让它找"哪个函数最可能有 bug",它 8 秒出结果,准确率 70%。
对于快速代码审查和探索未知代码库,Haiku 是神器。
与 GPT-4 的对比
这是大家最关心的。我的实际体验:
| 场景 | GPT-4 | Claude 3 Sonnet |
|---|---|---|
| 写新功能 | 强 | 强 |
| 读懂现有代码 | 中 | 强 |
| 发现 bug | 中 | 强 |
| 测试生成 | 强 | 强 |
| 代码解释 | 强 | 强 |
| 速度 | 慢 | 快 5x |
| 成本 | 高 | 低 10x |
GPT-4 在写新代码上略强,但读代码和找 bug 明显弱于 Sonnet。对于需要大量维护和理解已有代码的团队,Sonnet 性价比高得多。
实际工作流
我现在是这样的组合:
- Sonnet:主力写代码、code review、生成测试
- Haiku:快速代码探索、不熟悉的代码库调研
- GPT-4:只在 Sonnet 搞不定的时候用(目前一周大概遇到 1-2 次)
结论
Claude 3 三个版本里,Sonnet 是编程任务的最优解。Opus 过强且过贵,Haiku 便宜但只能做简单任务。
如果你在选型:日常编程用 Sonnet,它会在未来很长一段时间成为编程辅助的标配。
对了,本文的初稿就是 Sonnet 帮我review的。