目录

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的。