两款顶级编程 AI 模型的详细对比评测(483 点热度)。帮助开发者精准选择工具的硬数据。
Google 于 3 月 26 日刚刚发布了 Gemini 2.5 Pro,并宣称它在编程、推理乃至综合能力上都是最强的。不过,我最关心的还是它与目前最好的编程模型 Claude 3.7 Sonnet(thinking)相比表现如何。Claude 3.7 Sonnet 于 2 月底发布,我一直在使用它,体验非常不错。
接下来,我们就比较一下这两个编程模型,看看我是否需要更换自己最喜欢的编程模型,还是 Claude 3.7 依然能守住这个位置。
如果你想直接看结论,我会建议选择 Gemini 2.5 Pro:它的编程能力更强,context window 达到 100 万 token,而 Claude 只有 20 万,并且还可以免费使用——这是一个很大的加分项。不过,Claude 3.7 Sonnet 与它的差距并没有那么大。只是到了现在这个节点,似乎已经没有理由放着 Gemini 2.5 Pro 不用,反而去选择 Claude 3.7 Sonnet。
就在上一篇文章中,Claude 3.7 Sonnet 还是所有模型对比中的默认答案,而且这种局面已经持续了相当长一段时间。但现在,Gemini 2.5 Pro 领先了。
Gemini 2.5 Pro 是一款实验性的 thinking model,发布不到一周就成了热门话题。Twitter(X)和 YouTube 上的所有人都在讨论这个模型。说真的,它到处都在上热榜。这也是 Google 第一款获得如此高关注度的模型。
它就这么登上了 LMArena 第一名。但这意味着什么?这意味着,在编程、数学、科学、图像理解等领域,它正在横扫其他所有模型。
Gemini 2.5 Pro 拥有 100 万 token 的 context window,未来还会扩展到 200 万。🤯
你可以看看 Theo-t3 等人对这个模型的讨论,从而对它有更深入的了解:
它是迄今为止最好的编程模型,在 SWE-bench 上的准确率约为 63.8%。这确实高于此前最顶尖的编程模型 Claude 3.7 Sonnet,后者的准确率约为 62.3%。
下面是 Google 分享的一段快速演示,展示了这个模型如何构建一款恐龙游戏。
下面是该模型在推理、数学和科学方面的简要 benchmark。它证明了这款模型不仅适合编程,也适合满足你的其他需求。Google 宣称它是一名全能选手。🤷♂️
这些表现都很不错,我也会验证这些说法。不过在本文中,我主要会比较它们的编程能力,看看 Gemini 2.5 Pro 与 Claude 3.7 Sonnet 相比究竟表现如何。
下面正式比较这两个模型的编程能力。我们总共会进行 4 项测试,主要涉及 WebDev、动画,以及一道棘手的 LeetCode 题目。
Prompt:使用 JavaScript 创建一个简单的飞行模拟器。模拟器应包含一架可以从平坦跑道上起飞的基础飞机。飞机的移动应通过简单的键盘输入控制,例如方向键或 WASD。此外,还需要使用类似 Minecraft 的方块结构生成一座基础城市。
你可以在这里查看它生成的代码:Link
下面是程序的输出:
它准确实现了我要求的所有内容,而且一切都能正常运行,从飞机移动到 Minecraft 风格的基础方块建筑都没有问题。我实在挑不出什么毛病。这一项可以给 10/10。
你可以在这里查看它生成的代码:Link
下面是程序的输出:
我能看出这里存在一些问题。飞机明显是侧着飞的,我也不知道为什么。而且飞机一旦起飞就失去了控制,直接飞出了城市。基本上可以说,我们并没有真正得到一个完全可用的飞行模拟器。
可以肯定地说,Gemini 2.5 一次就正确完成了任务。不过,Claude 3.7 Sonnet 代码中的问题其实也没有难到无法解决。没错,我们没有得到符合预期的输出,而且它与 Gemini 2.5 Pro 交付的结果显然相去甚远。
这是 LLM 面对的最难题目之一。我已经用许多其他 LLM 测试过,但没有一个能正确完成。下面看看这两个模型在这项任务中的表现。
Prompt:使用 Three.js 和 JavaScript 构建一个简单的 3D 魔方可视化工具与求解器。魔方应为采用标准颜色的 3×3 魔方。添加一个 scramble 按钮,用于随机打乱魔方。加入一个 solve 函数,以动画形式逐步演示求解过程。允许用户通过基础鼠标操作旋转视角。
你可以在这里查看它生成的代码:Link
下面是程序的输出:
它能一次完成如此困难的任务,确实令人印象深刻。再加上 100 万 token 的 context window,我真切感受到了这个模型有多么强大。
你可以在这里查看它生成的代码:Link
下面是程序的输出:
我又一次有些失望,因为它出现了与其他一些 LLM 相同的问题:颜色处理失败,而且完全无法解开魔方。我也尝试引导它得出正确答案,但并没有什么帮助。
在这一项中,Gemini 2.5 Pro 再次领先。最出色的是,所有这些都是一次完成的。Claude 3.7 的表现确实令人失望:尽管它是市面上最优秀的编程模型之一,却仍然无法正确完成这项任务。
Prompt:创建一个简单的 JavaScript 脚本,将小球在旋转的 4D 超立方体内部弹跳的过程可视化。当小球与某个侧面发生碰撞时,高亮显示该侧面,以表示发生了撞击。
你可以在这里查看它生成的代码:Link
下面是程序的输出:
我在输出中没有发现任何问题。小球和碰撞物理效果都运行得非常完美,就连我要求的碰撞侧面高亮功能也正常工作。这个免费模型的编程能力简直强得离谱。🔥
你可以在这里查看它生成的代码:Link
下面是程序的输出:
哇,Claude 3.7 Sonnet 终于正确完成了一次任务。它还给每个侧面添加了颜色,不过这是谁要求的呢?🤷♂️ 尽管如此,我也没有什么可抱怨的,因为主要功能看起来都能正常工作。
这一次,答案显而易见。两个模型都正确完成了任务,实现了我要求的所有内容。我不会说自己更喜欢 Claude 3.7 Sonnet 的输出,但与 Gemini 2.5 Pro 相比,它确实在结果上投入了不少功夫。
这一项,我们快速进行一次 LeetCode 测试,看看这两个模型如何解决一道通过率仅为 14.9% 的棘手题目:Maximum Value Sum by Placing 3 Rooks。
Claude 3.7 Sonnet 一向非常擅长解决 LC 题目。如果你想看看 Claude 3.7 与 Grok 3、o3-mini-high 等顶级模型相比表现如何,可以阅读下面这篇文章:
Claude 3.7 Sonnet vs. Grok 3 vs. o3-mini-high:编程能力对比
Prompt:
You are given a m x n 2D array board representing a chessboard, where board[i][j] represents the value of the cell (i, j).
Rooks in the same row or column attack each other. You need to place three rooks on the chessboard such that the rooks do not attack each other.
Return the maximum sum of the cell values on which the rooks are placed.
Example 1:
Input: board = [[-3,1,1,1],[-3,1,-3,1],[-3,2,1,1]]
Output: 4
Explanation:
We can place the rooks in the cells (0, 2), (1, 3), and (2, 1) for a sum of 1 + 1 + 2 = 4.
Example 2:
Input: board = [[1,2,3],[4,5,6],[7,8,9]]
Output: 15
Explanation:
We can place the rooks in the cells (0, 0), (1, 1), and (2, 2) for a sum of 1 + 5 + 9 = 15.
Example 3:
Input: board = [[1,1,1],[1,1,1],[1,1,1]]
Output: 3
Explanation:
We can place the rooks in the cells (0, 2), (1, 1), and (2, 0) for a sum of 1 + 1 + 1 = 3.
Constraints:
3 <= m == board.length <= 100
3 <= n == board[i].length <= 100
-109 <= board[i][j] <= 109
考虑到它轻松解决了我们前面测试的三项编程任务,我对这个模型抱有相当高的期待。
你可以在这里查看它生成的代码:Link
不过,它确实花了相当长的时间才回答这道题,而且它编写的代码非常复杂,很难理解。我认为它采用了比实际需要更复杂的解法。不过,我们主要想确认的还是它能否正确回答。
不出所料,它也一次答对了这道高难度 LeetCode 题。这是我学习 DSA 时曾经被难住的一道题。它这么轻松就做出来了,我都不知道自己该不该高兴。
我希望这个模型能够轻松拿下这道题,因为在我进行的其他编程测试中,Claude 3.7 Sonnet 正确解决了所有 LeetCode 题目。
你可以在这里查看它生成的代码:Link
它确实写出了正确的代码,但遇到了 TLE。不过,如果比较代码的简洁程度,我会认为这个模型生成的代码更简单,也更容易理解。
Gemini 2.5 正确得出了答案,代码也满足预期的时间复杂度;而 Claude 3.7 Sonnet 则遇到了 TLE。如果比较代码的简洁性,Claude 3.7 生成的代码似乎更好。
对我来说,Gemini 2.5 Pro 是胜者。我们比较的是两款公认最擅长编程的模型。从模型参数来看,我看到的主要区别只是 Gemini 2.5 Pro 的 context window 更大一些。不过别忘了,这仍然是一款实验性模型,后续还有更多改进正在路上。
不妨想象一下,当这个模型拥有 200 万 token 的 context window 后,会有怎样的表现。
Google 最近凭借这些实力强劲的模型大杀四方。此前是 Gemma 3 27B——一个极其轻量、效果却令人难以置信的模型;现在又推出了 Gemini 2.5 Pro 这头性能怪兽。
顺便说一句,如果你已经读到了这里,Composio 正在为 Agent 构建 skill repository。你可以将 LLM 连接到从 Gmail 到 Asana 的各种应用,快速完成任务。你既可以使用 MCP servers,也可以直接把 tools 添加到 LLM 中。