Aider 代码编辑基准测试表明 Claude 3 性能优于 GPT-4,为程序员选择 AI 编程工具提供了实际参考。
Anthropic 刚刚发布了新的 Claude 3 模型,evals 数据显示其在代码任务上表现更优。基于此,我用 Aider 的代码编辑基准测试套件对这些新模型进行了基准测试。
Claude 3 Opus 的表现超越了 OpenAI 的所有模型,使其成为目前最好的 AI 结对编程模型。
使用 Claude 3 Opus 与 aider:
python -m pip install -U aider-chat
export ANTHROPIC_API_KEY=sk-...
aider --opus
Aider 是一个开源命令行聊天工具,让你可以在本地 git 仓库中与 AI 进行代码结对编程。
Aider 依赖一个代码编辑基准来定量评估 LLM 修改现有代码的能力。该基准使用 aider 尝试完成 133 个 Exercism Python 编程练习。对于每个练习,Exercism 提供一个包含函数存根的起始 Python 文件、问题的自然语言描述和一套测试套件来评估编码者是否正确解决了问题。
LLM 有两次机会来解决每个问题:
在第一次尝试时,它获得初始存根代码和编程任务的英文描述。如果所有测试都通过,就完成了。
如果任何测试失败,aider 会将失败的测试输出发送给 LLM,并给它第二次机会完成任务。
新的 claude-3-opus-20240229 模型在该基准上获得了有史以来最高的分数,通过两次尝试完成了 68.4% 的任务。
其单次尝试的表现与最新的 GPT-4 Turbo 模型 gpt-4-0125-preview 相当,达到 54.1%。
虽然 Opus 获得了最高分,但只比 GPT-4 Turbo 的结果高出几个百分点。考虑到 Opus 的额外成本和更慢的响应时间,目前还不清楚哪个模型最适合日常编码使用。
新的 claude-3-sonnet-20240229 模型的表现与 OpenAI 的 GPT-3.5 Turbo 模型相似,总体分数为 54.9%,首次尝试分数为 43.6%。
LLM 以某种形式的 diff 发回代码编辑是很理想的,而不是发回整个源代码的更新副本。
GPT-3.5 之类的较弱模型无法使用 diff,只能发回整个源文件的更新副本。Aider 在原始 GPT-4 中使用更高效的搜索/替换块,在较新的 GPT-4 Turbo 模型中使用统一 diff。
Claude 3 Opus 在搜索/替换块方面表现最好,允许它高效地发回代码变更。不幸的是,Sonnet 模型只能可靠地处理整个文件,这限制了它只能编辑较小的源文件,并且消耗更多的 token、金钱和时间。
还有一些其他值得注意的事项:
Claude 3 Opus 和 Sonnet 的速度都比 OpenAI 的模型慢,成本也更高。用 OpenAI 的模型可以以更快的速度和更便宜的成本获得几乎相同的编码能力。
Claude 3 的上下文窗口比最新的 GPT-4 Turbo 大 2 倍,这在处理更大的代码库时可能是一个优势。
Claude 模型拒绝执行多个编码任务,并返回错误"Output blocked by content filtering policy"。它们拒绝编写啤酒歌曲程序,这在某种程度上有合理的解释。但它们也拒绝在某些更大的开源代码库中工作,原因不明。
Claude API 似乎有些不稳定,返回各种 HTTP 5xx 错误。Aider 通过指数退避重试自动从这些错误中恢复,但这表明 Anthropic 可能在需求激增的压力下苦苦挣扎。