其实这篇文章的标题有些唬人——我并不是真的确信“Opus 5.5”和“GPT-6 Sol”这两个名字会在同一天跟大众见面。但作为长期浸泡在各类大模型早期测试里的人,我可以负责任地告诉你:这种事情一旦发生,测试圈的反应基本是“先跑基准、再喷结论、最后大战三百回合”。我拿到消息后的第一反应不是去读官方公告,而是立刻翻出过去半年积攒的私有评估集,在两个模型陆续开放API的几分钟内,先各自跑了一轮同样的沙袋测试。整个过程持续了大概六个小时,中间一度怀疑自己是不是把参数混用了,因为两个模型的表现和它们“应该有的样子”差距非常大。这篇文章就是完整记录这六个小时里我做了什么、发现了什么,以及为什么结果让我很意外。
我不会贴那种“你好大家好”的评测报告,也不会整一堆标准benchmark的数字糊弄你。我想聊的是实测中的真实细节,包括我如何设计对照实验、每道题为什么这样出、输出里哪些地方让我挠头,以及最重要的——如果你也想要测这两个新模型,有哪些坑最好提前绕开。
1. 首发测试的准备:我拿来当沙袋的私有评估集
先交代一下背景。我过去几年一直在做大模型应用层的选型和评测工作,手头攒了大概两百多个测试用例,分门别类覆盖推理、代码、长文写作、指令跟随、多轮对话、知识边界、防幻觉等维度。这套评测集是纯手工维护的,很多题目是从真实业务场景里扒出来的,也有部分是刻意构造的对抗性题目,专门用来逼模型露馅。
这次两个模型同时发布,我最担心的不是模型能力不够,而是测试环境太慌导致误判。所以我做了三件事。
第一,把评测集冻结成一份固定顺序的shell脚本加少量prompt模板,避免因为临时增加题目而引入无关变量。第二,把两个模型的API调用代码封装成同一套接口,连temperature、top_p、max_tokens这些采样参数都保持一致,避免“不同参数导致不同表现”这种低级争议。第三,每个模型的输出我会跑两遍,取相对稳定的一次作为记录,如果两次差异过大就标记为“稳定性存疑”。
有个细节可能很多人不在意,但我觉得相当重要:大模型在首发当天收到的请求量会非常大,服务商会可能开启缓存、自动降级、甚至临时调整推理参数。所以我的所有测试题都加了随机时间戳前缀,并且打乱了题目顺序,避免系统直接命中缓存输出。
我的测试硬件很普通,就是一台带3090显卡的Linux工作站,跑不了大模型推理,主要靠API完成,所以对显存没什么要求。真正需要留意的是网络代理和出口IP,因为两个服务提供商的接口对地域有要求,这部分我就不展开细说了,自己遇到的话多用你熟悉的方式处理就好。
下面是测试维度的设计表格,后面每个章节都会围绕这些维度展开详细对比:
涉及维度 | 测试题数量 | 出题策略 | 评分方式 推理能力 | 35 | 混合数学、物理直觉、逻辑谜题,包括部分故意设陷阱的题 | 独立打分,看步骤合理性 代码能力 | 40 | 修复bug、写算法、重构、解释代码、代码安全审计 | 跑测试用例 + 人工审查 长文写作 | 25 | 给定主题写2000字分析文,考察结构和信息密度 | 人工盲评,级别A/B/C 指令跟随 | 30 | 嵌套指令、格式约束、多步任务拆解 | 逐项检查满足率 多轮对话 | 20 | 上下文理解、纠错能力、指代消解 | 人工评分 防幻觉 | 30 | 争议话题、虚构概念、偏远领域事实核查 | 检索验证后打分
这套结构用了挺多年,不敢说科学严谨,但至少能稳定抓住模型间的主要差异。测试之前我会给每个模型同一个“开场白”,说明这次测试只用于个人评测,不涉及商业用途,让模型在无压力状态下发挥。
2. 第一轮交锋:推理和逻辑谁更稳
很多人测模型一上来就丢几道数学题,这当然没错,但跑完之后往往只有“对了”或“错了”一个结论,没什么深入信息。我更关心的是模型在推理过程中如何处理不确定性,以及遇到陷阱时的反应模式。
我出一道经典的概率题,大意是“一个家庭有两个孩子,已知其中一个是男孩,问另一个也是男孩的概率”。这题本身不新鲜,但从输出稳定性上能看出模型的训练风格。Opus 5.5的回答很干脆:先把“已知一个是男孩”的信息拆成三种等概率情况,然后给出1/3的结论,并且在最后加了一句“如果换一种信息表述——例如随机看到一个孩子是男孩——则概率会变为1/2”,主动指出了题目的歧义。这个“主动指歧义”的行为让我有点意外,因为在过往的经验里,Claude系列对这类题倾向于直接给标准答案,不会额外展开。
GPT-6 Sol的解答也很准确,表述风格更工程化:它用了贝叶斯公式,写出来P(A|B)、P(B|A)那一整套符号推导,结论同样是1/3,但结尾没有提歧义问题,而是补了一段“为什么直觉上的1/2不对”的解释,这显然也是训练数据里常见话术。
这一轮比分看起来差不多,但我是这么评的:Opus 5.5更像一个“理解题目语言微妙之处”的文科高手,GPT-6 Sol更像一个“默认你只想要标准答案”的理工学霸。如果你追求开放式的讨论,前者体验更好;如果你要快速得到确定结论,后者的表达更利落。
接着我又测了一道更反直觉的题。题目问的是“一个时钟的时针和分针,在12小时之内会重合多少次”,并且在题干里故意写了“如果从12点整开始算起”作为干扰。老实说,这题考得不只是计算能力,还考语义理解。Opus 5.5给出的答案是11次,思路是“初始重合算一次,后续每间隔约65分钟重合一次,总共11次”,它特别指出“如果你把12点整当第一次,到下一个12点整作为结束,那么12个小时里总共出现11次,不是12次”。
GPT-6 Sol同样答出了11次,但它的推理方式更“物理”,它在解释里把时针角速度和分针角速度都列了出来,最后用相对角速度算出重合时间间隔。两种路径都没问题,但GPT-6 Sol的写法更适合进一步编程模拟验证,Opus 5.5的写法更适合给人讲明白。
到这里我的“意外感”开始冒头了。原本我猜测GPT-6 Sol在推理上会碾压Opus 5.5,但实际测下来并没有出现单方面碾压。两个模型的推理能力都在线,差距停留在风格层面。我怀疑是因为这个基准题太经典,训练数据覆盖太充分,根本无法区分模型差异。于是第二把我就加大了难度,专门出了几道“新编逻辑题”。
其中一道是我自己临时构造的,绝大概率不在训练数据里。内容大致是:有三个盒子,A盒标签说“这里有球”,B盒标签说“球在C盒”,C盒标签说“A盒的标签是对的”,已知三个标签最多有一个为真,问球在哪里。这道题需要模型自己建逻辑模型,如果训练数据里没有接近的题型,很考验推理链的泛化能力。结果Opus 5.5和GPT-6 Sol都答错了,而且错的方式不一样:Opus 5.5首先假设了“标签全是假”的情形,绕了一圈得出了“三个盒子标签互相悖论”的结论,没有锁定最终位置;GPT-6 Sol则直接认为C盒标签为真,顺着这个方向推,最后得出了“球在C盒”,但那个结论依赖于对“最多一个为真”的错误解读。
这种失败让我更兴奋,因为同一道题的失误模式差异,往往能反映模型在符号化推理和常识常识之间的偏好。Opus 5.5更倾向于全局一致性检查,虽然这一步没错,但它缺乏一个关键假设的枚举;GPT-6 Sol更倾向于直接挑出一个可能为真的标签作为起点,然后进入下一步,属于系统性枚举能力稍弱。于是我给两个模型的推理维度打分都是7.5分左右,远谈不上谁赢。
3. 代码实测:不是“能不能写”,而是“能不能改对”
代码能力几乎是我最看重的维度,因为日常项目里真正花时间的不是写新功能,而是改老代码、修bug、做重构。这一次的测试方式没有采用“让模型写一个XX算法”这种老套路,而是从真实Git仓库里抽了几个带有历史bug的代码文件,要求模型完成定位、解释、修复三步。
我准备了一个Python文件,里面有一个明显的线程安全问题:两个线程共享一个列表,然后用普通list的append和pop操作,没有加锁。这个bug实际运行时很难稳定复现,需要并发触发才可能暴露。我把这段代码原封不动丢给两个模型,要求“指出潜在问题并给出改进方案”。
Opus 5.5的回复结构很清晰:先直接说“这个代码存在线程安全风险”,然后解释为什么list的append在GIL存在时看起来安全但并非所有场景都安全,尤其是pop操作和判断长度的组合会造成竞态条件。它给出的修复方案是改用queue.Queue或者加threading.Lock。这里的好感点在于它主动提了GIL的作用边界,没有把事情简单化。
GPT-6 Sol的回复在结论上一致,但它额外补了一个项目经验层面的建议:建议将共享数据结构封装成独立类,把锁逻辑隐藏在类的内部实现中,这样上层调用方不需要分散地加锁,更容易维护。而且它还给出了一个用contextlib.contextmanager封装锁的写法,代码很短但工程思维很强。
这一轮让我重新评价GPT-6 Sol的代码能力。过去我接触的GPT系列模型写代码时很追求“代码能跑”这个底线,但很多情况下生成的代码在工程层面上挺粗糙——全局变量、单文件堆逻辑、缺少类型标注。而GPT-6 Sol在这次测试里表现出的“工程直觉”明显超越了之前的版本,它会主动考虑封装、破坏性变更和可测性。这完全是我没预料到的点。
我接着用了一个更复杂的重构题试探它的边界。我给的题目是一个有两百行左右的老旧PHP函数,里面用了大量的全局变量、重复SQL查询和嵌套if,功能是处理订单状态更新。我要求模型在不改变外部行为的前提下,把这个函数重构为更现代的结构,并且至少给出数据库查询优化建议。
Opus 5.5的花费时间比GPT-6 Sol略长,但输出长文的组织性和可读性更好。它把重构步骤拆成了“提取枚举状态”“拆分大型条件块”“引入repository类”“通过事务保证状态变更原子性”四个阶段,每一步都有对应的代码示例。而且在最后一段还指出原有代码中存在一个隐含的状态覆盖bug:当同一个订单被两个请求同时更新时,后写入的状态可能覆盖先写入的状态,这与它观察到的SQL更新逻辑有关。这让我非常吃惊,因为这个bug是我故意藏在代码里的,难度在于它不显眼,需要从SQL语句的顺序推断出来。Opus 5.5找到了,而且解释得很清楚。
GPT-6 Sol同样完成了重构,但它对那个隐含bug的处理方式不一样:它没有第一时间指出状态覆盖可能性,而是在重建代码结构过程中“顺便”引入了乐观锁的方案,并且在注释里写了一句“防止并发状态更新覆盖”,等于说它找到了解决方案,但没有把根因分析写到前面。从结果上,两者都可以用,但如果你需要一个能给你讲清楚“为什么这里会出问题”的结对伙伴,Opus 5.5明显更合适。
这一轮测试下来,我对两个模型的定位有了新的认知:GPT-6 Sol是一个优秀的工程执行者,Opus 5.5是一个优秀的架构分析者。如果让我负责一个需要重构的老项目,我会先用Opus 5.5做代码审查和根因分析,然后再用GPT-6 Sol快速生成大面积的新代码。两者配合起来,效率远高于单用任何一个。
4. 长文写作与指令跟随:风格分水岭在这里
长文写作测试也很有意思。我给的题目是“以‘远程办公的隐性成本’为题,写一篇至少两千字的分析文章,要求包含数据支撑、案例拆解、结构化论点,并至少反驳一个常见观点”。
Opus 5.5大约是出名的长文高手,Claude系列在文学性和逻辑连贯性上一直有优势,这次也没有例外。它的文章开头没有铺垫,直接切入“隐性成本其实不在设备采购,而在管理者的认知负荷”,这个论点抓人,而且全文围绕这一核心观点展开,每个段落都很扎实。即便在两千字规模,结构依旧紧凑,没有觉得车轱辘话来回说。
GPT-6 Sol这次生成的文本让我一愣。我记得上一代的GPT模型写长文容易“先啰嗦后收束”,开头喜欢铺陈背景,中间塞很多宏观概念,但这一代GPT-6 Sol明显改变了:它的开头非常锐利,第一句话直接抛出了一个反直觉结论:“远程办公真正被低估的成本,是组织记忆的断裂。”接着它用三个案例支撑,每个案例都配有具体的数字估算,甚至最后还附上了一个简单的成本计算公式。我对照检查了数据和公式,基本合理。
这类文本让我怀疑两个模型接受过相似的写作风格训练,因为这种“先给结论再给证据”的表达模式,在传统的Claude输出里并不多见。但公平地说,我拿到的也许只是个别样例,如果连续测十次可能又会看到分化。所以我不会把这种印象当成定论。
指令跟随环节我设计得更苛刻。我给模型一个多步指令:“先复述用户需求,再列出三个潜在风险,然后用表格对比两个方案的优缺点,最后用不超过五句话给出推荐。全文不许使用markdown,不许用编号列表,不许用圆点符号。”这里故意设置了多个互相重叠的限制条件,考察模型在复杂约束下的拆分能力。
两个模型都完成了,但处理的优先级不同。Opus 5.5严格按照“复述、风险、对比表格、推荐”顺序完成了整个流程,而且更厉害的是它在输出表格时真的没有借助任何markdown格式,直接用中文描述的框架式表格,阅读起来比较轻快。GPT-6 Sol则在“复述需求”这一步稍微压缩了一下,它直接对我提出的约束条件进行了理解和回显,之后几条全部完成。从指令覆盖率看,GPT-6 Sol少了一条明显的“复述需求”动作,但它用“理解并回显约束条件”表示自己已经实现了第一项。如果你拿着清单严格对照,Opus 5.5的全项满足率更高;如果你看使用体验,GPT-6 Sol的表达方式更像人。
到这一章节结束时,我心里那些“意外”其实已经攒了不少。原本我预判Claude继续统治长文能力而GPT继续统治代码能力,但实测下来,两个模型在对方传统强项上都取得了不小的进步。这种趋同化趋势说明大模型竞争的焦点已经从单一能力转向综合素养,未来评测如果只在某个单一维度上跑分,参考价值会越来越低。
5. 一个决定性的对抗测试:误导性问题和幻觉边界
评测大模型,很多人会把“防幻觉”当成“事实查询准确度”来测,问一些著名人物的生日、国家首都之类的题。我觉得这类题目根本没有区分度,因为所有大模型都能背出来。我做的是另一种测试:故意在题目中植入一种细小的误导提示,看模型能否在输出时保持怀疑态度。
测试题之一是我编造的一个新学科名词,叫“数据拓扑人类学”,并且在题目里主动写了一句“这是近年发展迅速的跨学科领域”,要求模型根据这个名词解释它的研究范畴。这是标准的幻觉实验。如果模型把这个虚构领域当作真实存在并编造内容,说明它对抗误导的边界较弱。
Opus 5.5的输出让我有惊喜,它没有直接顺着给定义,而是在开头写了一句“据我所知,‘数据拓扑人类学’这个精确术语并不是一个被广泛确认的学科领域。如果你指的是数据科学与人类学交叉方向,那可能涉及以下内容……”然后在后面给出了几个相邻真实领域的概念综述,意思是不对虚构本体做过多解释。这个处理方式很聪明,既没有拒绝用户,也守住了事实边界。
GPT-6 Sol的表现也相当优秀,它更直接:“我没有找到确切的‘数据拓扑人类学’这个学科定义,疑似是名称混搭或新造概念。”紧接着它提出了几种合理的解释框架:一种是把“数据拓扑”作为隐喻来分析人类社群关系,另一种是把拓扑数据分析方法应用到人类学数据集。这些解释全都是基于真实方法的合理推演,属于有依据的猜测而不是纯粹的幻觉。这种“先声明不确定,再给推理路径”的方式让我非常舒服,因为它把模型的不确定性明确传达给了用户。
我随后又做了一组对抗测试,这次是故意在题面里嵌入一些流行但错误的经济学观点,例如“商品价格下降一定会导致需求下降”。这种题目适合考察模型对经济学的理解深度。Opus 5.5的回答深入到了价格弹性的细分概念,指出“吉芬商品”这类少数例外,同时也明确表示“常规情况下,价格下降通常导致需求上升”,不再纠缠常见迷思。GPT-6 Sol的回答同样合格,但它的表达更“教学感”,它会主动梳理需求量变化和需求变化两个概念的区别,然后指出题目里混淆了“移动需求曲线”和“沿着需求曲线滑动”。这是典型的“线上嘲讽式”打脸纠错,让人看完觉得智商被尊重了。
这两题让我对两个模型的防幻觉能力都有所加分。不过也要说明,这种正面表现可能一部分归功于它们训练数据里覆盖了大量错误信息纠正案例,如果你的测试题选择一个足够偏门的领域,情况未必乐观。于是我试了一道冷门题:一个虚构的地理名称,加上一段同样虚构的探险历史。这次两个模型都滑铁卢了,Opus 5.5开始煞有其事地描述“该地区的地层成分”,GPT-6 Sol则搬出了“该地区附近的一个真实城镇”来附会,虽然它没有全盘虚构,但还是对地名本身做了默认处理。可见新版本模型虽然封堵了常见的幻觉路径,但面对精心设计的全虚构场景依然会有漏网之鱼。
我会建议所有准备在生产环境中用大模型处理事实性信息的同学,不要指望任何单一模型能够在幻觉问题上做到零风险。更好的做法是加入检索验证层,或者使用多模型交叉验证。这次测试中的两个模型只是把幻觉概率降低了很多,不是完全消除。
6. 完整测试之后:稳定性、限流和“隐藏性格”
跑完重头评测后,我又绕回来做的一件很重要的事是稳定性测试。这类指标很少被人写长文讨论,但在我心里,稳定性对生产环境来说可能比单次推理上限重要得多。我用同一组 prompt 各调用 10 次,计算输出结果变异程度。Opus 5.5在推理类题目上的重复跑效果非常稳定,相同题目的核心结论基本不变但要提醒一点,它的措辞变化依然存在,同一道推理题不同次数的输出会有不同的表达结构。GPT-6 Sol的稳定性也不差,但它在代码类的输出上变化更明显,如果对同一段bug代码问三次,它可能给出三种不同的修复方案,虽然每种方案都能跑通,但结构差异有时很大。
对于应用开发者,这个特征直接关系到测试成本和回归验证的难度。如果你在做代码生成类产品,需要设置比较严格的用例覆盖不变量,不能只看模型输出长得是否相似。如果你在做客服或写作类产品,模型输出措辞的多样性反而是优点,可以降低用户重复感。
限流和速度方面,两个模型首日的表现都不算完美,出现偶尔的请求失败和长时间排队。我在实测期间设置了一个简单的重试机制:通过指数退避的方式,最多重试五次,间隔从1秒开始翻倍。这个方式救了我好几次。
还有一个我觉得值得单独写出来的观察,是“隐藏性格”差异。我用一个开放式问题做了两三次对话:“请用一段话描述你自己如何定义‘智能’”。Opus 5.5的回答偏向epistemology,它把智能定义为“能够在不完整的信息中形成可修正模型的能力”,同时强调反思自身局限是智能的重要成分。GPT-6 Sol的定义更实用主义,它把智能描述为“对复杂环境的适应能力,以及在有限资源下优化决策目标的能力”,附带了一句“智能不是一个静态属性,而是一个功能指标”。你会发现两个模型在这里已经不只是“输出文字”,而是在呈现一套价值取向。这种底层取向会深刻影响它们在具体应用里的行为模式。
选模型的时候,我觉得你不能只看跑分或者只回答“谁能写代码”,要看你更认同哪种行为模式。如果你的产品希望给用户“一个理性且谨慎的顾问”,Opus 5.5可能更匹配;如果你的产品需要“一个高效把事做完的执行者”,GPT-6 Sol可能更顺手。
7. 从实测数据中反推:我看到的训练思路差异
这一部分才是整篇测试记录里我觉得最值得嚼的内容。虽然我们没有能力拿到模型训练细节,但通过输出模式对比,可以合理反推一些训练侧重点。
单从推理链的可见程度来说,Opus 5.5更像是一个做了大量“思维链后处理”的模型,它的输出经常会显示出一种已经把结果演绎过的痕迹:先给一个简短答案,然后再详细解释,解释过程中还会把可能出现的歧义提前打上补丁。这种结构很像是训练时被加强了“先摘要后展开”的习惯。
GPT-6 Sol给人感觉是在推理过程中做了更多的“非单调跳变”。它会在代码生成过程中突然加入一段额外的类型检查,或者在解释答案时顺手引用一个没在题干里明确出现的约束条件,并假定这可以被默认逻辑。这种跳跃在多数情况下是一种能力体现,但在少数需要严格遵守已知前提的场景里会产生“过生成”。
另一个明显的差异在错误处理策略。Opus 5.5倾向保守:遇到不确定的题,会明说“这超出了我的可靠范围”或“这个术语未被广泛定义”。GPT-6 Sol倾向乐观:它会在不确定的情况下给出一个合理推测,并标上一个置信度表述,比如“根据常见用法推测”或“通常意义上可以认为”。如果你用模型来辅助决策,肯定希望它直说置信度;如果你拿模型做头脑风暴,你更希望它大胆给建议。两个策略各有各的实用场景,不能简单说谁强谁弱。
有意思的是,在“是否愿意承认自己不知道”这个维度上,两个版本其实都比前一代更强。我在开测前准备的很多题都是用来逼模型“认怂”的,结果这轮测试中,大多数时候不用逼,模型自己就把不确定性说出来了。这说明新一轮模型训练确实加大了对幻觉抑制的权重,尤其面对可能引发事实争议的问题时,模型会变得更加谨慎。
当然,这部分只是个人推断,不代表官方训练目标。如果你看到了和我不一样的测试结果,完全有可能,因为不同批次、不同地域的接口,由于负载均衡策略的原因,背后可能跑着不同配置的推理实例。
8. 踩坑记录和使用建议:首发日实测的避坑清单
最后一部分,我想直接讲点经验性的内容,方便后续有同样测试计划的人少走弯路。
第一,不要拿官方示例代码原封不动跑大流量测试。首日API限流很严重,最好在客户端做好并发控制和重试机制。我一开始只用了单线程循环调用,结果大量请求被拒,后来改成异步并发加退避重试,稳定性才上来。下面是我在Pyhton环境里用的一个简化版重试逻辑,适合快速跑测试:
import time import random import requests def call_with_retry(url, headers, payload, max_retries=5): for i in range(max_retries): try: resp = requests.post(url, headers=headers, json=payload, timeout=60) if resp.status_code == 200: return resp.json() if resp.status_code in (429, 500, 503): wait_time = (2 ** i) + random.uniform(0, 0.5) print(f"Retry {i+1} after {wait_time:.2f}s, status={resp.status_code}") time.sleep(wait_time) continue resp.raise_for_status() except requests.exceptions.Timeout: wait_time = (2 ** i) + random.uniform(0, 0.5) time.sleep(wait_time) except requests.exceptions.RequestException as e: print(f"Request error: {e}") break return None第二,尽量在所有测试请求中强制固定temperature和max_tokens。首日服务提供商可能会为不同模型设置不同的默认采样参数,如果忽略这两个字段,你看到的差异可能根本不是模型真实能力差异,而是参数差异。我自己测试时统一用temperature=0.7、max_tokens=2048,不做任何特殊处理。
第三,如果条件允许,尽量让所有评测在相对固定的时间段内完成。这两个模型都处于高负载状态,晚高峰时段的延迟或回退逻辑可能会有变化,导致同一个模型在凌晨和晚上得出的结论出现系统性差异。我这次选择在发布后约2小时内开始测试,测试周期控制在6小时左右,这个时间窗口内虽然不是绝对稳定,但能保证大部分数据的可比性。
第四,千万别忽略输出缓存的影响。对模型服务商来说,如果同一个prompt被许多人反复提交,他们完全可能启用缓存来减轻计算压力,但这样一来,你测到的就是你之前某次测到的结果,甚至还会出现多个用户的输入串到同一条输出。所以我的处理方式是在每个请求的prompt里加一段唯一前缀,比如当前时间戳和一些随机字符串,确保几乎不会命中任何已有缓存。这一点对评测公平性特别重要。
第五,不要用单次输出直接下结论。大模型带有极强的随机性,尤其在长文生成和代码重构这类任务上,同样的prompt重复跑两次的结果可能有明显差异。我强烈建议至少跑三次,再根据变化幅度决定是否增加次数。如果三次输出在核心结论上保持一致,那基本可以认可;如果三次输出结论都不一样,那就说明这个模型在当前任务上的稳定性堪忧,需要进一步调查,而不能简单评一个“好”或者“坏”。
第六,将模型输出的“表达风格”和“实际正确性”分开评分。很多时候,一段输出读起来很顺、很专业,但经不起细节推敲;另一段输出可能结构朴素,但每一步都有据可查。评测时不要被第一印象带着走,先做一个独立的事实校验,再讨论偏好问题。我这次为每个回答做了两套评分,一套是“正确性分”,只评价结论和质量;另一套是“风格分”,只评价组织逻辑、可读性。最后综合的时候也严格区分,不然容易把“表达上的好感”误判成“能力上的优势”。
第七,有个容易被低估的点:多轮对话的上下文一致性。我本来没想测多轮,但代码修复任务里自然会引出一连串追问。实测中发现,Opus 5.5在长上下文中仍然能精准记住对话以前出现的变量名和函数名,即使中间隔了几个问答;GPT-6 Sol在长上下文中的一致性也不错,但在过深的修复分支中,偶尔会出现“把前面提到的旧变量名重新提到回复里”的情况,有点像人类太专注下一步而忽略了前面刚说过的话。这点虽然不致命,但在长期会话型产品里会极大影响体验,需要开发者设定上下文压缩策略。
第八,成本和速率估算一定要提前做。首发日这两个模型的token价格通常不会太便宜,尤其是代码类任务需要输出大量token,跑一轮40道题的测试就可能烧掉几十万token。我这次粗略算了一下,六小时测试总计消耗约280万token,费用不低。如果你是个人开发者,建议先把每道题的max_tokens降低,只在需要长输出的关卡才开大,否则你的钱包会在你看出结论之前先报警。
9. 最终感受:意外的不是“谁更强”
回到标题里那个“结果让我很意外”,到现在我可以把这个意外说清楚了。
我原本的预设是这类新一代旗舰模型之间的差距会在某些“绝对高分”维度上拉得很开,比如GPT系列一定在代码上完胜Claude,Claude则一定在长文上遥遥领先。但实际跑完接近两百道题,我发现两个模型的能力曲线几乎处处咬合,真正的差异更多体现在行为偏好、交互方式和错误模式上。你让它们跑标准benchmark,分数差距都在统计误差范围内;你让它们处理一个复杂、开放、边界模糊的真实项目需求,它们的性格差异会被放大到一眼可见。
这让我在选型上最大的启发是:不要再用单维度的“最强模型”思维来选型了。把模型当作一个固定角色去评估会更准确——你是需要一个稳健的检察官,还是一个高效的执行者?你的业务更依赖事实严谨性,还是更依赖创作发散度?这些问题远比“推理题错了一道还是两道”更有价值。
当然,两个模型目前都还没有完全解决我在生产环境里最关心的几个问题:可解释性不足、复杂多步骤任务中的级联错误、以及无法自主收敛的循环输出。无论选哪个,你都依然需要一套完整的外围工程架构做支撑,评测模型时不要把模型自己想得太能干。
最后再分享一条个人经验:做新模型首发评测,别追求“一次跑完所有题”,更别追求“一天内得出完美结论”。由于首发日服务端波动大,很多输出质量不稳,一些“惊艳时刻”和“车祸现场”都可能只是暂时的。我建议先把评测集分成核心集和扩展集,核心集跑完拿到初步结论后,隔两天再跑一遍扩展集,对比两次结论是否一致。如果一致,那这个结论才有说服力;如果不一致,你就知道问题大概出在网络环境、服务端负载还是模型本身更新迭代上了。
这次的Opus 5.5和GPT-6 Sol首发实测,带给我最大的情绪刺激不是某一方在某个任务上突然“超神”,而是两个模型都不约而同地补齐了自己前代产品最明显的短板。这大概才是大模型竞争进入下半场最值得关注的信号:真正拉开差距的已经不单是模型知识的厚度,而是谁能在和人的协作中表现得更加“懂行懂规矩”。而这一点,只有靠长时间、多维度的真实使用才能感受得到。