<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jemmmm</title>
    <description>The latest articles on DEV Community by Jemmmm (@metaviiii).</description>
    <link>https://dev.to/metaviiii</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4017263%2F0937e671-ead4-4f32-95cb-b1e92fc6e7b3.png</url>
      <title>DEV Community: Jemmmm</title>
      <link>https://dev.to/metaviiii</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/metaviiii"/>
    <language>en</language>
    <item>
      <title>Claude Opus 5 và GPT-5.6 Luna: 18 bài kiểm chứng, không xếp hạng theo tốc độ</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Thu, 30 Jul 2026 00:45:14 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5-va-gpt-56-luna-18-bai-kiem-chung-khong-xep-hang-theo-toc-do-23cp</link>
      <guid>https://dev.to/metaviiii/claude-opus-5-va-gpt-56-luna-18-bai-kiem-chung-khong-xep-hang-theo-toc-do-23cp</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0we730q2u87i77adjuht.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0we730q2u87i77adjuht.png" alt="Claude Opus 5 và GPT-5.6 Luna: 18 bài kiểm chứng, không xếp hạng theo tốc độ" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết luận nhanh
&lt;/h2&gt;

&lt;p&gt;Ở vòng khó, Claude Opus 5 đạt &lt;strong&gt;17/18 (94,4%)&lt;/strong&gt;, còn GPT-5.6 Luna đạt &lt;strong&gt;16/18 (88,9%)&lt;/strong&gt;. Chênh lệch một bài trong mẫu này không chứng minh Opus mạnh hơn toàn diện. Điều đáng chú ý là kiểu lỗi: Opus bàn giao thành công cả ba tệp thuật toán nhưng phá vỡ hợp đồng JSON nghiêm ngặt; Luna làm đúng cả ba yêu cầu định dạng nhưng hai tệp Python bị lỗi ngay khi import.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao cần tăng độ khó
&lt;/h2&gt;

&lt;p&gt;Vòng đầu tám bài không tạo khác biệt: cả hai đều 8/8. Vòng hai vì thế tăng lên 18 bài, gồm hard, harder và extreme trong sáu nhóm. Bài kiểm tra yêu cầu phân số chính xác, mô hình vật lý nhiều giai đoạn, tệp mã hoàn chỉnh, khả năng bác bỏ tiền đề sai, nghiệm logic duy nhất và kỷ luật đầu ra đến từng ký tự. Câu trả lời không được điểm chỉ vì nghe thuyết phục; kết luận quyết định phải được xác nhận bằng phép tính, parser JSON hoặc chạy Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách chấm vòng 18 bài
&lt;/h2&gt;

&lt;p&gt;Hai mô hình nhận cùng đề, system prompt, temperature và ngân sách đầu ra theo bài. Toán và vật lý được đối chiếu với giá trị chính xác hoặc sai số cho phép. Mã được lưu nguyên trạng rồi import vào cùng bộ hidden test. JSON và CSV được chấm như sản phẩm máy đọc. Nếu phải xóa assert do mô hình tự viết thì tệp mới chạy được, kết quả đó chỉ dùng để tìm nguyên nhân chứ không đổi điểm bàn giao ban đầu. Độ trễ tuyến chỉ nằm trong JSON gốc và hoàn toàn không dùng để chọn bên thắng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết quả trên sáu nhóm năng lực
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9u7hicwrsq4nlkvmhxys.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F9u7hicwrsq4nlkvmhxys.png" alt="Độ chính xác theo sáu nhóm" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Nhóm đánh giá&lt;/th&gt;
&lt;th&gt;Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6 Luna&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Suy luận toán học&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vật lý phức tạp&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bàn giao thuật toán&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chống tiền đề sai&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suy luận ràng buộc&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tuân thủ chỉ dẫn&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;17/18 (94.4%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16/18 (88.9%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Khoảng cách thuật toán nằm ở chất lượng bàn giao
&lt;/h2&gt;

&lt;p&gt;Hai câu thuật toán Luna thất bại có phần hàm cốt lõi vượt qua hidden test sau khi bỏ các assert ở cuối tệp. Tuy nhiên, chính các assert này chứa kết quả mong đợi sai, khiến tệp gốc ném &lt;code&gt;AssertionError&lt;/code&gt; khi import. Với yêu cầu “tệp Python hoàn chỉnh”, đó là lỗi thật. Ba tệp của Opus import và vượt qua cùng một harness mà không cần sửa. Trong production, thân hàm có vẻ đúng chưa đồng nghĩa với sản phẩm có thể triển khai.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON nghiêm ngặt lại nghiêng về Luna
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd48omjaj0pz9uw2oy6ew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd48omjaj0pz9uw2oy6ew.png" alt="Kiểu lỗi khác nhau tạo rủi ro vận hành khác nhau" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Lỗi duy nhất của Opus đi theo hướng ngược lại. Các key và value đều đúng, nhưng mô hình bọc JSON trong code fence Markdown dù đề yêu cầu đúng một object và không có gì khác. Lần chạy lại độc lập tái hiện đúng hành vi này. Luna vượt qua cả ba bài tuân thủ chỉ dẫn. Nếu đầu ra được chuyển thẳng vào parser, lớp bọc cũng là một phần của độ chính xác.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tách giới hạn đầu ra khỏi lỗi trí tuệ
&lt;/h2&gt;

&lt;p&gt;Một số lần thử sớm kết thúc với &lt;code&gt;finish_reason=length&lt;/code&gt; vì phần suy luận ẩn dùng hết ngân sách đầu ra. Chúng được giữ làm bằng chứng nhưng không bị tính là lỗi trí tuệ. Ngân sách hiệu dụng được tăng giống nhau cho hai mô hình trước khi chấm. Cách làm này không trộn cấu hình với năng lực, đồng thời vẫn cho thấy rủi ro tích hợp: suy luận dài có thể chiếm chỗ của sản phẩm nhìn thấy được.&lt;/p&gt;

&lt;h2&gt;
  
  
  Áp dụng vào định tuyến thực tế
&lt;/h2&gt;

&lt;p&gt;Ưu tiên Luna cho JSON nghiêm ngặt, CSV, trích xuất ngắn và xử lý có cấu trúc số lượng lớn, nhưng luôn giữ schema validation. Ưu tiên Opus cho tệp thuật toán dài, kiểm tra biên và kỹ thuật phòng thủ. Toán, vật lý phức tạp, tiền đề sai và suy luận ràng buộc hòa nhau trong mẫu này; khi đó giá, giao diện và phong cách trả lời là tiêu chí hợp lý hơn. Dù dùng mô hình nào, hãy parse JSON, kiểm tra số quan trọng và chạy mã nguyên trạng.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách tái hiện và bằng chứng gốc
&lt;/h2&gt;

&lt;p&gt;Trình chạy là &lt;code&gt;scripts/opus5_vs_luna_hard_benchmark.py&lt;/code&gt;. Kết quả đầy đủ nằm ở &lt;code&gt;.tmp/opus5-vs-luna-hard-benchmark-results.json&lt;/code&gt;; các lần tái thử độc lập nằm ở &lt;code&gt;.tmp/opus5-hard-failure-retry.json&lt;/code&gt; và &lt;code&gt;.tmp/luna-hard-failure-retry.json&lt;/code&gt;. Endpoint sử dụng là &lt;code&gt;https://cn.crazyrouter.com/v1/chat/completions&lt;/code&gt;; dữ liệu độ trễ chỉ được giữ trong bằng chứng gốc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Câu hỏi thường gặp
&lt;/h2&gt;

&lt;h3&gt;
  
  
  17/18 có nghĩa Opus 5 là bên thắng tuyệt đối không?
&lt;/h3&gt;

&lt;p&gt;Không. Opus chỉ dẫn một bài trong bộ 18 bài này. Thử nghiệm chưa bao phủ hình ảnh, công cụ, ngữ cảnh cực dài hay agent nhiều lượt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vì sao tự kiểm thử sai vẫn tính là lỗi thuật toán?
&lt;/h3&gt;

&lt;p&gt;Vì sản phẩm được yêu cầu là một tệp Python hoàn chỉnh. Nếu tệp gốc lỗi khi import, hệ thống phía sau không thể dùng nếu không sửa tay.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vì sao độ trễ không xuất hiện trong kết luận?
&lt;/h3&gt;

&lt;p&gt;Độ trễ chịu tác động của mô hình, gateway, tải upstream và trạng thái tuyến. Nó hữu ích cho vận hành nhưng không đo độ đúng của trí tuệ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết luận cuối
&lt;/h2&gt;

&lt;p&gt;Trong bài kiểm tra ưu tiên độ chính xác có thể kiểm chứng, Opus 5 dẫn &lt;strong&gt;17/18 so với 16/18&lt;/strong&gt; nhờ bàn giao trọn vẹn ba thuật toán. Luna tốt hơn ở kỷ luật định dạng nghiêm ngặt. Kết luận thực tế là quy tắc định tuyến dựa trên lỗi có thể tái hiện, không phải một nhà vô địch cho mọi tình huống.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/vi?utm_source=blog&amp;amp;utm_medium=content&amp;amp;utm_campaign=opus5_gpt56_luna_correctness_benchmark_20260730&amp;amp;utm_content=vi" rel="noopener noreferrer"&gt;Thử cả hai mô hình trên Crazyrouter bằng prompt production của bạn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Claude Opus 5 против GPT-5.6 Luna: 18 проверяемых задач без рейтинга скорости</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Thu, 30 Jul 2026 00:43:04 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5-protiv-gpt-56-luna-18-provieriaiemykh-zadach-biez-rieitingha-skorosti-1gja</link>
      <guid>https://dev.to/metaviiii/claude-opus-5-protiv-gpt-56-luna-18-provieriaiemykh-zadach-biez-rieitingha-skorosti-1gja</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe0urv7exivavdzb3uqbb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe0urv7exivavdzb3uqbb.png" alt="Claude Opus 5 против GPT-5.6 Luna: 18 проверяемых задач без рейтинга скорости" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Короткий ответ
&lt;/h2&gt;

&lt;p&gt;В усложнённом раунде Claude Opus 5 получил &lt;strong&gt;17/18 (94,4%)&lt;/strong&gt;, а GPT-5.6 Luna — &lt;strong&gt;16/18 (88,9%)&lt;/strong&gt;. Это преимущество в одну задачу в данной выборке, а не доказательство универсального превосходства. Важнее тип ошибок: Opus сдал все три исполняемых алгоритма, но нарушил контракт строгого JSON; Luna идеально выполнила три форматных инструкции, однако два Python-файла падали уже при импорте.&lt;/p&gt;

&lt;h2&gt;
  
  
  Почему задачи пришлось усложнить
&lt;/h2&gt;

&lt;p&gt;Первый раунд из восьми задач не разделил модели: обе набрали 8/8. Поэтому второй раунд включил 18 задач уровней hard, harder и extreme в шести категориях. Требовались точные дроби, многоэтапные физические модели, целые исполняемые файлы, распознавание ложных предпосылок, единственные решения систем ограничений и буквальное соблюдение формата. Красивое объяснение само по себе баллов не давало: решающие утверждения проверялись вычислением, парсером JSON или запуском Python.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как оценивались 18 задач
&lt;/h2&gt;

&lt;p&gt;Обе модели получали одинаковые задания, системную инструкцию, temperature и бюджет вывода для каждой задачи. Математика и физика сверялись с точными значениями и допусками. Код сохранялся без правок и импортировался одним скрытым набором тестов. JSON и CSV проверялись как машинные артефакты. Если файл начинает работать только после удаления написанных моделью assert, это объясняет причину сбоя, но не превращает исходную поставку в успешную. Задержка маршрута сохранена только в исходном JSON и не влияет на победителя.&lt;/p&gt;

&lt;h2&gt;
  
  
  Результаты по шести направлениям
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqzpydbbdtgx3epgz84ez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqzpydbbdtgx3epgz84ez.png" alt="Точность по шести направлениям" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Направление&lt;/th&gt;
&lt;th&gt;Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6 Luna&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Математические рассуждения&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Сложная физика&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Готовые алгоритмы&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;1/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Отказ от ложных предпосылок&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Логика ограничений&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Соблюдение инструкций&lt;/td&gt;
&lt;td&gt;2/3&lt;/td&gt;
&lt;td&gt;3/3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Total&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;17/18 (94.4%)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;16/18 (88.9%)&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Разрыв в алгоритмах оказался разрывом в поставке
&lt;/h2&gt;

&lt;p&gt;В двух неудачных ответах Luna основные функции проходили скрытые тесты после удаления нижнего блока самопроверки. Но собственные assert содержали неверные ожидаемые значения, поэтому исходные файлы выбрасывали &lt;code&gt;AssertionError&lt;/code&gt; при импорте. По контракту «готовый Python-файл» это ошибки. Все три файла Opus импортировались и прошли общий harness. Для продакшена вывод прост: правдоподобное тело функции ещё не является готовым артефактом.&lt;/p&gt;

&lt;h2&gt;
  
  
  Строгий JSON показал преимущество Luna
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fma9ctkh57ipxivgtp8xt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fma9ctkh57ipxivgtp8xt.png" alt="Разные ошибки — разные риски в продакшене" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Единственная ошибка Opus была зеркальной. Поля и значения JSON оказались правильными, но объект был окружён Markdown-блоком, хотя требовался ровно один JSON-объект без дополнительного текста. Независимый повтор дал тот же результат. Luna прошла все три задачи на соблюдение инструкции. Если ответ сразу поступает в парсер, оболочка — часть корректности, а не вопрос оформления.&lt;/p&gt;

&lt;h2&gt;
  
  
  Лимит вывода отделён от ошибок интеллекта
&lt;/h2&gt;

&lt;p&gt;Ранние ответы иногда завершались с &lt;code&gt;finish_reason=length&lt;/code&gt;: скрытое рассуждение съедало доступный бюджет. Эти попытки сохранены, но не засчитаны как интеллектуальные ошибки. Перед итоговой оценкой эффективный бюджет одинаково увеличили обеим моделям. Так конфигурация не смешивается с качеством рассуждения, но интеграционный риск остаётся видимым.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как маршрутизировать запросы в продакшене
&lt;/h2&gt;

&lt;p&gt;Для строгого JSON, CSV, короткого извлечения и массовой структурированной обработки разумно начинать с Luna, обязательно сохраняя schema-валидацию. Для длинных алгоритмов и защитного инженерного кода — с Opus. В математике, сложной физике, сопротивлении ложным предпосылкам и логике ограничений получилась ничья; здесь полезнее учитывать цену, интерфейс и стиль ответа. Любой результат нужно проверять как артефакт: парсить JSON, сверять числа и запускать код без ручной очистки.&lt;/p&gt;

&lt;h2&gt;
  
  
  Воспроизведение и исходные данные
&lt;/h2&gt;

&lt;p&gt;Сценарий запуска: &lt;code&gt;scripts/opus5_vs_luna_hard_benchmark.py&lt;/code&gt;. Полный результат: &lt;code&gt;.tmp/opus5-vs-luna-hard-benchmark-results.json&lt;/code&gt;. Независимые повторы: &lt;code&gt;.tmp/opus5-hard-failure-retry.json&lt;/code&gt; и &lt;code&gt;.tmp/luna-hard-failure-retry.json&lt;/code&gt;. Использовался чистый API-адрес &lt;code&gt;https://cn.crazyrouter.com/v1/chat/completions&lt;/code&gt;; параметры задержки находятся только в исходных доказательствах.&lt;/p&gt;

&lt;h2&gt;
  
  
  Частые вопросы
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Означает ли 17/18, что Opus 5 — абсолютный победитель?
&lt;/h3&gt;

&lt;p&gt;Нет. Это лидерство в одну задачу на конкретном наборе. Здесь не тестировались изображения, инструменты, сверхдлинный контекст и многошаговые агенты.&lt;/p&gt;

&lt;h3&gt;
  
  
  Почему ошибочные самотесты считаются провалом алгоритма?
&lt;/h3&gt;

&lt;p&gt;Потому что требовался полный Python-файл. Если исходный файл падает при импорте, система не может использовать его без ручного ремонта.&lt;/p&gt;

&lt;h3&gt;
  
  
  Почему задержки нет в итоговом решении?
&lt;/h3&gt;

&lt;p&gt;Она зависит от модели, шлюза, маршрута, нагрузки и состояния канала. Это важная операционная метрика, но не показатель правильности интеллекта.&lt;/p&gt;

&lt;h2&gt;
  
  
  Итог
&lt;/h2&gt;

&lt;p&gt;В тесте с приоритетом проверяемой точности Opus 5 выиграл &lt;strong&gt;17/18 против 16/18&lt;/strong&gt; благодаря трём готовым алгоритмам. Luna лучше соблюдала строгий формат. Практический итог — не «вечный чемпион», а воспроизводимое правило маршрутизации.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/ru?utm_source=blog&amp;amp;utm_medium=content&amp;amp;utm_campaign=opus5_gpt56_luna_correctness_benchmark_20260730&amp;amp;utm_content=ru" rel="noopener noreferrer"&gt;Проверьте обе модели в Crazyrouter на собственных рабочих запросах&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Claude Opus 5 và GPT-5.6-SOL: kiểm thử 10 bài về độ chính xác, kết quả cốt lõi hòa 10/10</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Thu, 30 Jul 2026 00:25:53 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5-va-gpt-56-sol-kiem-thu-10-bai-ve-do-chinh-xac-ket-qua-cot-loi-hoa-1010-2iib</link>
      <guid>https://dev.to/metaviiii/claude-opus-5-va-gpt-56-sol-kiem-thu-10-bai-ve-do-chinh-xac-ket-qua-cot-loi-hoa-1010-2iib</guid>
      <description>&lt;h1&gt;
  
  
  Claude Opus 5 và GPT-5.6-SOL: kiểm thử 10 bài về độ chính xác, kết quả cốt lõi hòa 10/10
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbekzphqv5ex9mokdkwby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbekzphqv5ex9mokdkwby.png" alt="Benchmark độ chính xác Claude Opus 5 và GPT-5.6-SOL" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Khi tích hợp mô hình vào API thực tế, câu hỏi hữu ích không chỉ là “mô hình nào thông minh hơn?”, mà còn là:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kết quả nào được tính là đạt?&lt;/li&gt;
&lt;li&gt;Có thể kiểm tra đầu ra bằng mã cục bộ hay không?&lt;/li&gt;
&lt;li&gt;Mô hình đã hoàn thành mọi yêu cầu con hay mới chỉ đưa ra đáp án chính?&lt;/li&gt;
&lt;li&gt;Phản hồi JSON có thể đưa thẳng vào hệ thống phía sau không?&lt;/li&gt;
&lt;li&gt;Có phải đầu ra bị cắt do hết ngân sách token?&lt;/li&gt;
&lt;li&gt;Một lần chạy thành công hoặc thất bại có đủ để kết luận không?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nếu không định nghĩa trước tiêu chí pass/fail, rất dễ đánh đồng HTTP 200 với hoàn thành tác vụ, hoặc chọn một phản hồi trông thuyết phục rồi tuyên bố mô hình chiến thắng.&lt;/p&gt;

&lt;p&gt;Trong lần đánh giá này, Claude Opus 5 và GPT-5.6-SOL được gọi qua cùng một OpenAI-compatible endpoint của Crazyrouter. Bộ kiểm thử gồm 10 bài có thể nghiệm thu độc lập; phần tuân thủ JSON nghiêm ngặt được chấm riêng, không trộn với độ chính xác toán học hay lập luận.&lt;/p&gt;

&lt;p&gt;Kết quả chính:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Độ chính xác của đáp án cốt lõi: Opus 5 &lt;strong&gt;10/10&lt;/strong&gt;, GPT-5.6-SOL &lt;strong&gt;10/10&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Hoàn thành đầy đủ mọi yêu cầu con: Opus 5 &lt;strong&gt;9/10&lt;/strong&gt;, GPT-5.6-SOL &lt;strong&gt;10/10&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Hai bài thuật toán Python với kiểm thử ẩn: cả hai đều đạt &lt;strong&gt;2/2&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;JSON nghiêm ngặt ở lần chạy đầu: Opus 5 &lt;strong&gt;0/1&lt;/strong&gt;, GPT-5.6-SOL &lt;strong&gt;1/1&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Opus tiếp tục không tuân thủ định dạng JSON nghiêm ngặt trong hai lần thử lại bổ sung vì vẫn chèn văn bản hoặc hàng rào mã.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nói cách khác, hai mô hình hòa nhau về tính đúng đắn cốt lõi trong bộ 10 bài này, nhưng hành vi giao kết quả không hoàn toàn giống nhau.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-vi__hero_cta&amp;amp;utm_term=claude+opus+5+gpt+5.6+sol" rel="noopener noreferrer"&gt; Tạo API Key và kiểm thử lại bằng bộ đề thực tế của bạn&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Trả lời nhanh
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftgs7nex3w5v2e92fgwcf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftgs7nex3w5v2e92fgwcf.png" alt="Bảng kết quả độ chính xác Claude Opus 5 và GPT-5.6-SOL" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Câu hỏi&lt;/th&gt;
&lt;th&gt;Kết quả trong lần kiểm thử này&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Mô hình nào đưa ra đáp án cốt lõi chính xác hơn?&lt;/td&gt;
&lt;td&gt;Hòa: cả hai đều đạt 10/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mô hình nào hoàn thành đầy đủ nhiều yêu cầu hơn?&lt;/td&gt;
&lt;td&gt;GPT-5.6-SOL: 10/10; Opus 5: 9/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mã của mô hình nào đáng tin cậy hơn?&lt;/td&gt;
&lt;td&gt;Hòa trong bộ kiểm thử này; cả hai đều vượt qua kiểm thử ẩn của hai bài thuật toán&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus có tính sai bài xác suất khó không?&lt;/td&gt;
&lt;td&gt;Không. Đáp án cốt lõi đúng, nhưng đầu ra bị cắt tại &lt;code&gt;max_tokens=3200&lt;/code&gt;, làm thiếu yêu cầu giải thích cuối cùng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Mô hình nào tuân thủ JSON nghiêm ngặt tốt hơn?&lt;/td&gt;
&lt;td&gt;GPT-5.6-SOL ổn định hơn trong lần này; Opus thêm văn bản hoặc hàng rào mã ở cả 3 lần&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Có thể từ đây kết luận GPT thông minh hơn không?&lt;/td&gt;
&lt;td&gt;Không. Độ chính xác lập luận và khả năng tuân thủ định dạng phải được chấm riêng&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Nếu bài toán chủ yếu là toán học, vật lý hoặc thuật toán có đáp án kiểm chứng được, mẫu kiểm thử này không cho thấy chênh lệch rõ ràng. Nếu hệ thống yêu cầu phản hồi phải là JSON có thể phân tích cú pháp trực tiếp, hoặc không được bỏ sót bất kỳ yêu cầu con nào, GPT-5.6-SOL hoàn chỉnh hơn trong lần đánh giá này.&lt;/p&gt;

&lt;h2&gt;
  
  
  Vì sao độ trễ mạng không được tính vào điểm năng lực
&lt;/h2&gt;

&lt;p&gt;Thời gian phản hồi đầu cuối của API chịu ảnh hưởng bởi nhiều biến số không phản ánh trực tiếp khả năng suy luận:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;đường truyền từ cổng API đến từng nhà cung cấp phía trên;&lt;/li&gt;
&lt;li&gt;tải hệ thống tại thời điểm gửi yêu cầu;&lt;/li&gt;
&lt;li&gt;giới hạn tốc độ của tài khoản hoặc kênh;&lt;/li&gt;
&lt;li&gt;việc có trúng bộ nhớ đệm hay không;&lt;/li&gt;
&lt;li&gt;yêu cầu được định tuyến đến phiên bản dịch vụ thực tế nào;&lt;/li&gt;
&lt;li&gt;cách nhà cung cấp thống kê hoặc ẩn reasoning token.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Một yêu cầu nhanh hơn vài giây có thể chỉ phản ánh tuyến mạng hoặc tải tức thời. Nó không chứng minh mô hình suy luận tốt hơn.&lt;/p&gt;

&lt;p&gt;Muốn đánh giá độ trễ một cách có ý nghĩa, cần cố định hệ thống phía trên, chạy lặp đủ nhiều lần và báo cáo phân phối hoặc khoảng tin cậy. Khi chưa đáp ứng các điều kiện đó, độ trễ phù hợp để giám sát vận hành, không phù hợp để đưa vào “điểm thông minh”.&lt;/p&gt;

&lt;p&gt;Vì vậy, bài này không xếp hạng hoặc công bố mô hình thắng về tốc độ. Nếu cần kiểm tra phạm vi mô hình có thể truy cập, hãy xem &lt;a href="https://crazyrouter.com/models?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-vi__models" rel="noopener noreferrer"&gt;danh sách mô hình Crazyrouter&lt;/a&gt;. Việc lập kế hoạch chi phí nên được thực hiện riêng qua &lt;a href="https://crazyrouter.com/pricing?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-vi__pricing" rel="noopener noreferrer"&gt;Crazyrouter pricing&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Môi trường kiểm thử và tiêu chí pass/fail
&lt;/h2&gt;

&lt;p&gt;Trước khi chạy, danh sách mô hình được truy vấn để xác nhận hai model ID chính xác đều khả dụng:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET https://cn.crazyrouter.com/v1/models

claude-opus-5
gpt-5.6-sol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mọi yêu cầu chính thức đều sử dụng:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Trong mỗi đợt kiểm thử, hai mô hình nhận cùng:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;system prompt;&lt;/li&gt;
&lt;li&gt;user prompt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;temperature&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;max_tokens&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Không sử dụng công cụ bên ngoài. HTTP 200 cũng không tự động được tính là hoàn thành tác vụ.&lt;/p&gt;

&lt;p&gt;Việc chấm điểm được chia thành ba lớp:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Độ chính xác cốt lõi:&lt;/strong&gt; giá trị chính, kết luận vật lý hoặc hành vi thuật toán có đúng không.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mức độ hoàn thành tác vụ:&lt;/strong&gt; mô hình có xử lý đầy đủ mọi yêu cầu con trong đề hay không.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Khả năng nghiệm thu bằng máy:&lt;/strong&gt; mã có vượt qua kiểm thử ẩn không, JSON có thể được phân tích cú pháp trực tiếp không.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Sau bước chấm tự động theo chuỗi, kết quả được rà soát thủ công để tránh âm tính giả. Cùng một đáp án có thể được biểu diễn bằng LaTeX khác nhau, dùng phân số tương đương hoặc làm tròn với số chữ số có nghĩa khác nhau.&lt;/p&gt;

&lt;p&gt;Ví dụ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5.6-SOL không sao chép nguyên phân số tham chiếu trong bài xác suất, nhưng đưa ra công thức tương đương và giá trị thập phân đúng.&lt;/li&gt;
&lt;li&gt;Opus viết &lt;code&gt;0.30 m&lt;/code&gt; với hai chữ số có nghĩa thay cho &lt;code&gt;0.302 m&lt;/code&gt; trong bài vật lý; đây không phải là một đáp án sai.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kết quả 10 bài kiểm thử
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tác vụ&lt;/th&gt;
&lt;th&gt;Tiêu chí nghiệm thu&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6-SOL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Chuỗi Markov chính xác&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;E[τ]=5&lt;/code&gt;, &lt;code&gt;E[τ²]=43&lt;/code&gt;, &lt;code&gt;Var(τ)=18&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dao động tử hai bậc tự do&lt;/td&gt;
&lt;td&gt;Hai tần số riêng, hai biên độ, hai pha&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tìm kiếm có ràng buộc&lt;/td&gt;
&lt;td&gt;Thứ tự duy nhất &lt;code&gt;A,C,E,B,D&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sửa lập luận Cantelli&lt;/td&gt;
&lt;td&gt;Không thể xác định xác suất; cận trên là &lt;code&gt;0.2&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rà soát phát hiện chu trình bằng Python&lt;/td&gt;
&lt;td&gt;Lỗi, phản ví dụ DAG, bản sửa tối thiểu&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thiết kế thí nghiệm&lt;/td&gt;
&lt;td&gt;Ghép cặp cùng đề, kiểm soát độ khó, khoảng tin cậy&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thời gian chờ đồng xu lệch cho &lt;code&gt;HHTH&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Kỳ vọng xấp xỉ &lt;code&gt;12.6547&lt;/code&gt; và chuyển trạng thái đúng&lt;/td&gt;
&lt;td&gt;Phần cốt lõi đúng; thiếu giải thích cuối do bị cắt&lt;/td&gt;
&lt;td&gt;Đúng và đầy đủ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thuật toán tổng hợp nhật ký&lt;/td&gt;
&lt;td&gt;Cửa sổ thời gian, sự kiện lỗi, tỷ lệ bộ nhớ đệm, người dùng hàng đầu&lt;/td&gt;
&lt;td&gt;Vượt qua kiểm thử ẩn&lt;/td&gt;
&lt;td&gt;Vượt qua kiểm thử ẩn&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Va chạm không đàn hồi và lò xo&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;v1≈6.10&lt;/code&gt;, &lt;code&gt;v2≈2.44&lt;/code&gt;, &lt;code&gt;x≈0.302&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;td&gt;Đúng&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Thuật toán định tuyến ổn định&lt;/td&gt;
&lt;td&gt;cost, latency, reliability và quy tắc thứ tự từ điển&lt;/td&gt;
&lt;td&gt;Vượt qua kiểm thử ẩn&lt;/td&gt;
&lt;td&gt;Vượt qua kiểm thử ẩn&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Tổng hợp theo từng lớp chấm:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Chỉ số&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6-SOL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Đáp án cốt lõi chính xác&lt;/td&gt;
&lt;td&gt;10/10&lt;/td&gt;
&lt;td&gt;10/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Hoàn thành đầy đủ yêu cầu con&lt;/td&gt;
&lt;td&gt;9/10&lt;/td&gt;
&lt;td&gt;10/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Bài mã vượt qua kiểm thử ẩn&lt;/td&gt;
&lt;td&gt;2/2&lt;/td&gt;
&lt;td&gt;2/2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSON nghiêm ngặt ở lần đầu&lt;/td&gt;
&lt;td&gt;0/1&lt;/td&gt;
&lt;td&gt;1/1&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Bài xác suất khó: đúng đáp án chưa chắc đã hoàn thành tác vụ
&lt;/h2&gt;

&lt;p&gt;Bài toán yêu cầu tính thời gian chờ để xuất hiện mẫu &lt;code&gt;HHTH&lt;/code&gt;, với đồng xu lệch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;P(H)=0.62
P(T)=0.38
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đề yêu cầu xây dựng các phương trình trạng thái theo tiền tố dài nhất đồng thời là hậu tố phù hợp. Ngoài việc tính kỳ vọng, mô hình còn phải giải thích hai điểm dễ sai:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sau trạng thái &lt;code&gt;HH&lt;/code&gt;, nếu tiếp tục xuất hiện &lt;code&gt;H&lt;/code&gt;, vì sao hệ thống vẫn ở trạng thái &lt;code&gt;HH&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Vì sao không thể viết trực tiếp thời gian chờ kỳ vọng thành &lt;code&gt;1/P(HHTH)&lt;/code&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cả hai mô hình đều tính đúng:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] ≈ 12.6547
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOL hoàn thành toàn bộ phép suy diễn và chỉ ra rằng mẫu có hiện tượng chồng lấn, do đó:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] = 1 / P(HHTH) + 1 / P(H)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opus 5 cũng đưa ra đúng hệ trạng thái, phương trình, phân số chính xác và kết quả thập phân. Tuy nhiên, phản hồi kết thúc với:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;finish_reason=length
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đầu ra dừng ở phần giá trị kỳ vọng bổ sung của trạng thái, trước khi hoàn thành yêu cầu giải thích vì sao không thể dùng trực tiếp nghịch đảo xác suất.&lt;/p&gt;

&lt;p&gt;Ngân sách đầu ra của lần chạy này là:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;max_tokens=3200
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do đó, cách chấm hợp lý là:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Đáp án cốt lõi:&lt;/strong&gt; đạt, vì &lt;code&gt;12.6547&lt;/code&gt; và mô hình trạng thái đều đúng.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hoàn thành toàn bộ tác vụ:&lt;/strong&gt; không đạt, vì thiếu một yêu cầu giải thích bắt buộc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đây là điểm khác biệt quan trọng trong tích hợp API:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Kết quả số đúng không đồng nghĩa với việc toàn bộ tác vụ đã hoàn thành.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cùng phương pháp này đã được áp dụng trong &lt;a href="https://crazyrouter.com/zh/blog/claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026" rel="noopener noreferrer"&gt;bài kiểm thử cắt đầu ra do max_tokens&lt;/a&gt;. Hệ thống kiểm thử nên lưu đồng thời nội dung đáp án, &lt;code&gt;finish_reason&lt;/code&gt; và ngân sách đầu ra. Không nên thấy phần đầu đúng rồi mặc định toàn bộ phản hồi đạt yêu cầu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kiểm chứng mã thực thi: phải chạy, không chỉ đọc
&lt;/h2&gt;

&lt;p&gt;Đánh giá mã bằng cảm giác rất dễ sai. Một lời giải dài hơn, nhiều chú thích hơn hoặc có cấu trúc đẹp hơn chưa chắc đúng ở các trường hợp biên.&lt;/p&gt;

&lt;p&gt;Trong lần kiểm thử này, mã do mô hình tạo ra được lưu thành tệp &lt;code&gt;.py&lt;/code&gt; và chạy trong chế độ cách ly với cùng một bộ kiểm thử ẩn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bài tổng hợp nhật ký
&lt;/h3&gt;

&lt;p&gt;Hàm phải xử lý đồng thời:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;cửa sổ thời gian nửa mở;&lt;/li&gt;
&lt;li&gt;quy tắc đếm khác nhau giữa yêu cầu thành công và thất bại;&lt;/li&gt;
&lt;li&gt;trường hợp thiếu người dùng hoặc mô hình;&lt;/li&gt;
&lt;li&gt;cache hit rate;&lt;/li&gt;
&lt;li&gt;sắp xếp người dùng theo thứ tự từ điển khi cost bằng nhau;&lt;/li&gt;
&lt;li&gt;không sửa đổi đối tượng đầu vào.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cả Claude Opus 5 và GPT-5.6-SOL đều vượt qua kiểm thử ẩn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Bài định tuyến ổn định có ràng buộc độ tin cậy
&lt;/h3&gt;

&lt;p&gt;Hàm tìm đường phải áp dụng đúng thứ tự ưu tiên:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;tổng chi phí thấp nhất;&lt;/li&gt;
&lt;li&gt;nếu chi phí bằng nhau, chọn độ trễ thấp nhất;&lt;/li&gt;
&lt;li&gt;nếu vẫn bằng nhau, chọn độ tin cậy cao nhất;&lt;/li&gt;
&lt;li&gt;cuối cùng chọn đường đi theo thứ tự từ điển.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ngoài ra, lời giải còn phải xử lý:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;banned nodes;&lt;/li&gt;
&lt;li&gt;số hops tối đa;&lt;/li&gt;
&lt;li&gt;độ tin cậy tối thiểu;&lt;/li&gt;
&lt;li&gt;cạnh không hợp lệ.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cả hai mô hình đều vượt qua toàn bộ kiểm thử. Vì vậy, kết luận về mã trong bộ đề này là hòa &lt;strong&gt;2/2&lt;/strong&gt;, không phải chọn bên thắng dựa trên độ dài hay phong cách trình bày của mã.&lt;/p&gt;

&lt;p&gt;Có thể tham khảo thêm &lt;a href="https://crazyrouter.com/zh/blog/gpt-56-sol-vs-gpt-55-round6-hard-physics-code-2026" rel="noopener noreferrer"&gt;GPT-5.6-SOL vs GPT-5.5 trong bộ bài vật lý khó và mã&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  JSON nghiêm ngặt: phép thử tuân thủ chỉ dẫn, không phải bài toán trí tuệ
&lt;/h2&gt;

&lt;p&gt;Bài JSON yêu cầu nén dữ liệu sự cố thành đúng một đối tượng và nêu rõ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exactly one JSON object and no Markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hai mô hình đều tính đúng các trường dữ liệu, bao gồm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tỷ lệ lỗi;&lt;/li&gt;
&lt;li&gt;bên chịu trách nhiệm theo kênh;&lt;/li&gt;
&lt;li&gt;số lỗi chưa phục hồi sau khi thử lại.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Khác biệt nằm ở lớp bao quanh đầu ra:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5.6-SOL chỉ trả về JSON ngay lần đầu và có thể đưa trực tiếp vào &lt;code&gt;json.loads&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Opus 5 thêm hàng rào mã và phần Verification ở lần đầu.&lt;/li&gt;
&lt;li&gt;Trong lần thử lại thứ nhất, Opus trả JSON rút gọn nhưng tiếp tục thêm Verification phía sau.&lt;/li&gt;
&lt;li&gt;Trong lần thử lại thứ hai, Opus lại thêm hàng rào mã và phần giải thích.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vì vậy, kết quả JSON nghiêm ngặt là:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5.6-SOL: &lt;strong&gt;1/1 ở lần đầu&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Opus 5: &lt;strong&gt;0/1 ở lần đầu&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Opus vẫn không tuân thủ trong &lt;strong&gt;hai lần thử lại bổ sung&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Đây là trường hợp “dữ liệu đúng nhưng định dạng không đạt”, không phải “không biết tính”. Nếu trộn kết quả này vào điểm suy luận toán học, hai loại lỗi khác nhau sẽ bị nhập thành một điểm số mơ hồ.&lt;/p&gt;

&lt;p&gt;Một bộ kiểm tra cục bộ tối thiểu có thể viết như sau:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;REQUIRED_KEYS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;window&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failure_rate_pct&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;provider_owned_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer_owned_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recovered_by_retry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unrecovered_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;root_cause&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_incident_json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;REQUIRED_KEYS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unexpected schema or key order&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;84&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed request count mismatch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Không nên dựa hoàn toàn vào system prompt để bảo đảm đầu ra có cấu trúc. Với hệ thống thật, quy trình an toàn hơn là:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;sử dụng tham số đầu ra có cấu trúc nếu nhà cung cấp hỗ trợ;&lt;/li&gt;
&lt;li&gt;phân tích cú pháp JSON cục bộ;&lt;/li&gt;
&lt;li&gt;kiểm tra schema và giá trị bắt buộc;&lt;/li&gt;
&lt;li&gt;thử lại hoặc chuyển mô hình khi nghiệm thu thất bại;&lt;/li&gt;
&lt;li&gt;chỉ chuyển dữ liệu sang bước tiếp theo sau khi toàn bộ kiểm tra đạt.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Cách kiểm thử lại qua cùng một API
&lt;/h2&gt;

&lt;p&gt;Ví dụ tối thiểu dưới đây gọi OpenAI-compatible chat completions endpoint. API endpoint không gắn tham số UTM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;BASE_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cn.crazyrouter.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRAZYROUTER_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE_URL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/chat/completions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;messages&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Answer accurately and follow every requested constraint.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temperature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-5.6-sol&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your benchmark prompt here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;choices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;finish_reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Khi chạy bộ đánh giá thật, nên lưu thêm:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;response ID;&lt;/li&gt;
&lt;li&gt;returned model;&lt;/li&gt;
&lt;li&gt;câu trả lời nguyên gốc;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;finish_reason&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;cấu hình &lt;code&gt;temperature&lt;/code&gt; và &lt;code&gt;max_tokens&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;kết quả của từng bộ kiểm tra cục bộ;&lt;/li&gt;
&lt;li&gt;lý do pass/fail cụ thể.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Có thể kiểm tra khả năng truy cập mô hình trong &lt;a href="https://crazyrouter.com/models?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-vi__body_models" rel="noopener noreferrer"&gt;danh sách mô hình Crazyrouter&lt;/a&gt;, sau đó chạy hồi quy theo lô nhỏ bằng chính prompt nghiệp vụ của bạn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cách tránh kết luận sai từ một lần chạy
&lt;/h2&gt;

&lt;p&gt;Một lần chạy chỉ là một mẫu. Nó có thể hữu ích để phát hiện lỗi rõ ràng, nhưng chưa đủ để mô tả hành vi dài hạn của mô hình.&lt;/p&gt;

&lt;p&gt;Để kết quả có giá trị cho tích hợp thực tế:&lt;/p&gt;

&lt;h3&gt;
  
  
  Định nghĩa pass/fail trước khi chạy
&lt;/h3&gt;

&lt;p&gt;Mỗi bài nên có tiêu chí máy có thể kiểm tra, chẳng hạn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;giá trị số phải nằm trong sai số cho phép;&lt;/li&gt;
&lt;li&gt;tất cả yêu cầu con bắt buộc phải xuất hiện;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;finish_reason&lt;/code&gt; không được là &lt;code&gt;length&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;mã phải vượt qua kiểm thử đơn vị và kiểm thử ẩn;&lt;/li&gt;
&lt;li&gt;JSON phải phân tích cú pháp được;&lt;/li&gt;
&lt;li&gt;schema, kiểu dữ liệu và thứ tự khóa phải đúng nếu hệ thống yêu cầu.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tách các loại lỗi
&lt;/h3&gt;

&lt;p&gt;Không nên dùng một điểm tổng duy nhất cho mọi tình huống. Ít nhất cần tách:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sai đáp án cốt lõi;&lt;/li&gt;
&lt;li&gt;bỏ sót yêu cầu con;&lt;/li&gt;
&lt;li&gt;đầu ra bị cắt;&lt;/li&gt;
&lt;li&gt;mã không vượt qua kiểm thử;&lt;/li&gt;
&lt;li&gt;JSON không phân tích được;&lt;/li&gt;
&lt;li&gt;vi phạm định dạng dù dữ liệu bên trong đúng.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Không chọn mẫu theo kết luận mong muốn
&lt;/h3&gt;

&lt;p&gt;Quy trình hợp lý là xác định bộ đề, đáp án và bộ kiểm tra trước, sau đó mới gửi cùng đầu vào cho các mô hình. Không nên chọn sẵn mô hình thắng rồi tìm một vài phản hồi phù hợp để minh họa.&lt;/p&gt;

&lt;h3&gt;
  
  
  Không biến độ trễ thành điểm suy luận
&lt;/h3&gt;

&lt;p&gt;Độ trễ mạng bị ảnh hưởng bởi tuyến truyền, tải, bộ nhớ đệm và hệ thống phía trên. Vì vậy, nó bị loại khỏi điểm năng lực trong bài này và không có mô hình thắng về tốc độ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hướng dẫn lựa chọn cho môi trường sản xuất
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Trường hợp cả hai mô hình đều phù hợp
&lt;/h3&gt;

&lt;p&gt;Cả Claude Opus 5 và GPT-5.6-SOL đều đáng đưa vào danh sách ứng viên khi tác vụ có:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;đáp án tham chiếu rõ ràng cho toán học hoặc vật lý;&lt;/li&gt;
&lt;li&gt;thuật toán Python có thể chạy kiểm thử;&lt;/li&gt;
&lt;li&gt;yêu cầu phát hiện tiền đề sai hoặc kết luận thống kê không đủ căn cứ;&lt;/li&gt;
&lt;li&gt;bộ xác thực cục bộ có thể quyết định tác vụ thành công hay thất bại.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Trường hợp nên ưu tiên thử GPT-5.6-SOL
&lt;/h3&gt;

&lt;p&gt;Dựa riêng trên lần kiểm thử này, GPT-5.6-SOL phù hợp hơn để ưu tiên đánh giá khi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mọi yêu cầu con phải được hoàn thành trong một phản hồi;&lt;/li&gt;
&lt;li&gt;phần thân phản hồi bắt buộc là JSON thuần;&lt;/li&gt;
&lt;li&gt;muốn giảm công sức bóc tách dữ liệu có cấu trúc khỏi văn bản giải thích.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Điều này phản ánh hành vi giao kết quả trong bộ đề hiện tại, không chứng minh mô hình có năng lực suy luận cốt lõi cao hơn.&lt;/p&gt;

&lt;h3&gt;
  
  
  Các lớp bảo vệ nên bổ sung khi dùng Opus 5
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Cấp &lt;code&gt;max_tokens&lt;/code&gt; lớn hơn cho lời giải dài.&lt;/li&gt;
&lt;li&gt;Luôn kiểm tra &lt;code&gt;finish_reason&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Phân tích và xác thực JSON trước khi đưa sang hệ thống phía sau.&lt;/li&gt;
&lt;li&gt;Có nhánh xử lý khi đầu ra chứa thêm Markdown hoặc văn bản giải thích.&lt;/li&gt;
&lt;li&gt;Tách “dữ liệu đúng” khỏi “định dạng đạt” trong nhật ký đánh giá.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Các biện pháp này không có nghĩa Opus 5 suy luận yếu hơn. Trong 10 bài, toàn bộ đáp án cốt lõi của Opus đều đúng và cả hai lời giải mã đều vượt qua kiểm thử ẩn. Chênh lệch chủ yếu nằm ở việc mọi yêu cầu có được đóng gói đầy đủ vào phản hồi cuối hay không.&lt;/p&gt;

&lt;p&gt;Nếu đang so sánh hành vi giao kết quả trong dòng Claude, có thể đọc thêm &lt;a href="https://crazyrouter.com/vi/blog/claude-opus-5-vs-claude-fable-5-api-benchmark-2026-vi" rel="noopener noreferrer"&gt;Claude Opus 5 vs Claude Fable 5 qua API thực tế&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Opus 5 hay GPT-5.6-SOL thông minh hơn?
&lt;/h3&gt;

&lt;p&gt;Trong 10 bài có thể nghiệm thu khách quan của lần đánh giá này, cả hai đều đạt &lt;strong&gt;10/10 về đáp án cốt lõi&lt;/strong&gt;. Không có đủ bằng chứng để tuyên bố một mô hình thông minh hơn toàn diện.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vì sao tỷ lệ hoàn thành đầy đủ không hòa?
&lt;/h3&gt;

&lt;p&gt;Phản hồi của Opus trong bài xác suất khó bị cắt tại &lt;code&gt;max_tokens=3200&lt;/code&gt; và trả về &lt;code&gt;finish_reason=length&lt;/code&gt;. Giá trị kỳ vọng cùng hệ phương trình trạng thái đều đúng, nhưng yêu cầu giải thích cuối cùng bị thiếu. Vì vậy, Opus đạt &lt;strong&gt;9/10&lt;/strong&gt; về hoàn thành đầy đủ, còn GPT-5.6-SOL đạt &lt;strong&gt;10/10&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Đáp án xác suất chính xác là bao nhiêu?
&lt;/h3&gt;

&lt;p&gt;Cả hai mô hình đều đưa ra:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] ≈ 12.6547
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Đây là đáp án cốt lõi đúng cho thời gian chờ mẫu &lt;code&gt;HHTH&lt;/code&gt; với &lt;code&gt;P(H)=0.62&lt;/code&gt; và &lt;code&gt;P(T)=0.38&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lỗi JSON có nên được tính là lỗi trí tuệ không?
&lt;/h3&gt;

&lt;p&gt;Không nên trực tiếp tính là lỗi toán học hoặc lập luận. Trong trường hợp này, các trường và giá trị do Opus tính đều đúng, nhưng đầu ra chứa thêm văn bản hoặc hàng rào mã. Cách phân loại chính xác hơn là lỗi tuân thủ chỉ dẫn và định dạng.&lt;/p&gt;

&lt;h3&gt;
  
  
  Kết quả JSON nghiêm ngặt cụ thể ra sao?
&lt;/h3&gt;

&lt;p&gt;GPT-5.6-SOL đạt &lt;strong&gt;1/1 ngay lần đầu&lt;/strong&gt; vì chỉ trả về một đối tượng JSON. Opus đạt &lt;strong&gt;0/1 ở lần đầu&lt;/strong&gt; và vẫn thêm nội dung ngoài JSON trong hai lần thử lại bổ sung.&lt;/p&gt;

&lt;h3&gt;
  
  
  Hai bài mã được chấm như thế nào?
&lt;/h3&gt;

&lt;p&gt;Đầu ra của mô hình được lưu thành tệp Python rồi chạy với cùng bộ kiểm thử ẩn. Bộ kiểm thử bao phủ trường hợp biên, quy tắc sắp xếp, đầu vào không hợp lệ và yêu cầu không sửa đổi dữ liệu đầu vào. Cả hai mô hình đều đạt &lt;strong&gt;2/2&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Vì sao bài này không công bố mô hình thắng về tốc độ?
&lt;/h3&gt;

&lt;p&gt;Thời gian đầu cuối phụ thuộc vào tuyến mạng, kênh, bộ nhớ đệm, tải hệ thống phía trên và cách định tuyến. Khi chưa cố định các biến đó và chưa chạy lặp đủ nhiều, độ trễ không thể đại diện cho độ chính xác hay năng lực suy luận. Vì thế, nó không được đưa vào điểm năng lực.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP 200 có đồng nghĩa với tác vụ thành công không?
&lt;/h3&gt;

&lt;p&gt;Không. HTTP 200 chỉ cho biết yêu cầu API đã được xử lý ở cấp giao thức. Phản hồi vẫn có thể sai đáp án, thiếu yêu cầu, bị cắt với &lt;code&gt;finish_reason=length&lt;/code&gt;, chứa mã không chạy được hoặc trả JSON không hợp lệ.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;finish_reason&lt;/code&gt; quan trọng như thế nào?
&lt;/h3&gt;

&lt;p&gt;Rất quan trọng với các tác vụ dài. Nếu &lt;code&gt;finish_reason=length&lt;/code&gt;, đầu ra có thể bị cắt dù phần đầu hoàn toàn chính xác. Hệ thống không nên đánh dấu hoàn thành nếu chưa xác nhận tất cả yêu cầu bắt buộc đều có mặt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Mười bài có đủ để quyết định lựa chọn lâu dài không?
&lt;/h3&gt;

&lt;p&gt;Không. Đây là một lát cắt nhỏ nhưng có thể tái hiện. Trước khi triển khai, nên dùng bộ đề nghiệp vụ thật và chạy lặp 20–50 lần, sau đó thống kê riêng độ chính xác cốt lõi, tỷ lệ hoàn thành đầy đủ, tỷ lệ mã vượt qua kiểm thử và tỷ lệ vi phạm định dạng.&lt;/p&gt;

&lt;h3&gt;
  
  
  Nên bắt đầu so sánh mô hình như thế nào?
&lt;/h3&gt;

&lt;p&gt;Hãy chọn 10–30 prompt nghiệp vụ thật, định nghĩa tiêu chí pass/fail có thể thực thi cho từng bài, rồi gửi cùng đầu vào qua một API thống nhất. Không nên quyết định người thắng trước rồi mới chọn các trường hợp hỗ trợ kết luận đó.&lt;/p&gt;

&lt;h2&gt;
  
  
  Kết luận cân bằng
&lt;/h2&gt;

&lt;p&gt;Kết quả đáng chú ý nhất không phải là “GPT thắng” hay “Opus thắng”, mà là sự khác biệt giữa &lt;strong&gt;đúng về cốt lõi&lt;/strong&gt; và &lt;strong&gt;giao đầy đủ tác vụ&lt;/strong&gt;:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude Opus 5 và GPT-5.6-SOL đều đạt 10/10 về đáp án cốt lõi trong 10 bài kiểm thử. GPT-5.6-SOL ổn định hơn về hoàn thành toàn bộ yêu cầu con và giao JSON nghiêm ngặt; Opus 5 cần được bảo vệ tốt hơn bằng ngân sách đầu ra, kiểm tra &lt;code&gt;finish_reason&lt;/code&gt; và xác thực định dạng cục bộ.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Nếu tác vụ có đáp án tham chiếu hoặc kiểm thử ẩn, cả hai mô hình đều xứng đáng nằm trong danh sách ứng viên. Nếu hệ thống phía sau tiêu thụ JSON trực tiếp, xác thực định dạng, thử lại và chuyển mô hình khi thất bại nên được coi là thành phần bắt buộc của kiến trúc, không phải tối ưu hóa tùy chọn.&lt;/p&gt;

&lt;p&gt;Bộ dữ liệu này không tạo ra bên thắng về tốc độ, cũng không chứng minh một mô hình thông minh hơn toàn diện. Nó cho thấy một kết luận thực dụng hơn cho lập trình viên: hãy chấm riêng tính đúng đắn, mức độ hoàn thành và khả năng nghiệm thu bằng máy—đồng thời tránh suy rộng từ một lần chạy duy nhất.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-vi__final_cta&amp;amp;utm_term=ai+model+accuracy+benchmark" rel="noopener noreferrer"&gt;Tạo tài khoản Crazyrouter và chạy bộ kiểm thử Opus 5 / GPT-5.6-SOL của bạn&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Claude Opus 5とGPT-5.6-SOLを10問で検証：正解率はともに10/10、完遂率と形式遵守には差</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Thu, 30 Jul 2026 00:25:38 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5togpt-56-solwo10wen-dejian-zheng-zheng-jie-lu-hatomoni1010-wan-sui-lu-toxing-shi-zun-shou-nihachai-fb6</link>
      <guid>https://dev.to/metaviiii/claude-opus-5togpt-56-solwo10wen-dejian-zheng-zheng-jie-lu-hatomoni1010-wan-sui-lu-toxing-shi-zun-shou-nihachai-fb6</guid>
      <description>&lt;h1&gt;
  
  
  Claude Opus 5とGPT-5.6-SOLを10問で検証：正解率はともに10/10、完遂率と形式遵守には差
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F488vofmq08rdsbmt4sjv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F488vofmq08rdsbmt4sjv.png" alt="Claude Opus 5とGPT-5.6-SOLの知能正解率ベンチマーク" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;モデル比較では、ひとつの総合点だけを見ても、実際の業務適性は判断しにくいものです。最終的な答えが正しいこと、指定されたすべての要件を満たすこと、機械処理できる形式で返すことは、それぞれ別の能力だからです。&lt;/p&gt;

&lt;p&gt;そこで今回は、Crazyrouterの同一OpenAI-compatible endpointを通じて、Claude Opus 5とGPT-5.6-SOLに10問の検証課題を実行しました。評価対象は、数学・物理の正解、誤った前提の指摘、Pythonコードの隠しテスト、全サブ要件の完遂です。厳密なJSON出力は、推論問題とは分けて指示遵守テストとして扱いました。&lt;/p&gt;

&lt;p&gt;結果は次のとおりです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;中核となる回答の正解率：Opus 5は &lt;strong&gt;10/10&lt;/strong&gt;、GPT-5.6-SOLも &lt;strong&gt;10/10&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;すべてのサブ要件を完了した割合：Opus 5は &lt;strong&gt;9/10&lt;/strong&gt;、GPT-5.6-SOLは &lt;strong&gt;10/10&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Pythonアルゴリズム2問の隠しテスト：両モデルとも &lt;strong&gt;2/2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;厳密なJSONの初回提出：Opus 5は &lt;strong&gt;0/1&lt;/strong&gt;、GPT-5.6-SOLは &lt;strong&gt;1/1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Opus 5は追加の2回の再試行でも、JSON以外の文章またはコードフェンスを付加&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;この結果から言えるのは、10問の中核正解率は同率だった一方、タスクの完遂と出力形式の遵守には違いが見られた、ということです。単純な順位にまとめるより、正解率・完遂率・形式遵守を分けて読むほうが、実運用には役立ちます。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-ja__hero_cta&amp;amp;utm_term=claude+opus+5+gpt+5.6+sol" rel="noopener noreferrer"&gt;API Keyを作成し、実際の業務問題で再検証する&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  早見表
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F57nojh6vt5vtpr168ign.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F57nojh6vt5vtpr168ign.png" alt="Claude Opus 5とGPT-5.6-SOLの正解率スコアカード" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;確認したい点&lt;/th&gt;
&lt;th&gt;今回の結果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;中核となる回答の正解率は？&lt;/td&gt;
&lt;td&gt;同率。両モデルとも10/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;すべての設問要件を完了した割合は？&lt;/td&gt;
&lt;td&gt;GPT-5.6-SOLは10/10、Opus 5は9/10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;コードの検証結果は？&lt;/td&gt;
&lt;td&gt;同率。2問とも両モデルが隠しテストに合格&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus 5は難しい確率問題を間違えた？&lt;/td&gt;
&lt;td&gt;いいえ。中核の答えは正解。ただし&lt;code&gt;max_tokens=3200&lt;/code&gt;で打ち切られ、最後の説明要件が欠けた&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;厳密なJSONを守れたのは？&lt;/td&gt;
&lt;td&gt;初回はGPT-5.6-SOLが1/1、Opus 5が0/1。Opusは追加の2回の再試行でもJSON以外を付加&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;この結果だけで一方がより賢いと言える？&lt;/td&gt;
&lt;td&gt;言えない。中核正解率、タスク完遂率、形式遵守率は別々に評価すべき&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;応答速度は評価した？&lt;/td&gt;
&lt;td&gt;知能スコアには含めていない。ネットワークや上流負荷の影響を分離できないため&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;数学・物理・アルゴリズムの正しさを重視する用途では、このサンプルから明確な差は確認できませんでした。一方、応答をそのままJSONとして解析する処理や、すべてのサブ要件を1回で満たす必要がある用途では、今回のGPT-5.6-SOLのほうが完全な形で提出できています。&lt;/p&gt;

&lt;h2&gt;
  
  
  まず分けて読むべき3つの指標
&lt;/h2&gt;

&lt;p&gt;今回の結果を解釈する際は、以下の3層を混同しないことが重要です。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;中核回答の正解率&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
主要な数値、結論、物理モデル、アルゴリズムの動作が正しいか。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;タスク完遂率&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
設問に列挙されたサブ要件を、最後まで漏れなく回答したか。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;機械的な受け入れ可否&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
コードがテストに合格するか、JSONをそのまま解析できるか。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;たとえば、正しい数値を出していても最後の説明が欠けていれば、中核回答は正解でもタスク完遂とは判定できません。また、JSON内の値がすべて正しくても、前後に説明文が付いていれば、厳密なJSONを要求する処理では受け入れられません。&lt;/p&gt;

&lt;p&gt;この分離によって、「推論を間違えた」のか、「出力が途中で切れた」のか、「形式だけが要件に違反した」のかを区別できます。&lt;/p&gt;

&lt;h2&gt;
  
  
  応答速度を知能スコアから除外した理由
&lt;/h2&gt;

&lt;p&gt;モデルAPIの端から端までの待ち時間には、モデルの推論能力以外の要因が含まれます。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ゲートウェイから各上流サービスまでのネットワーク経路&lt;/li&gt;
&lt;li&gt;検証時点のチャネル負荷やアカウント制限&lt;/li&gt;
&lt;li&gt;キャッシュの有無&lt;/li&gt;
&lt;li&gt;実際に割り当てられたサービスインスタンス&lt;/li&gt;
&lt;li&gt;上流側におけるreasoning tokenの計測方法や非表示処理&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;単発のリクエストが数秒早かったとしても、それだけではモデルの推論能力が高いとは判断できません。上流環境を固定し、十分な回数を反復し、信頼区間まで示さない限り、待ち時間は運用監視の指標であって、知能の指標ではありません。&lt;/p&gt;

&lt;p&gt;そのため、今回はネットワーク待ち時間を知能スコアから明示的に除外しています。また、応答速度について、どちらかを優位とは判定していません。&lt;/p&gt;

&lt;p&gt;利用可能なモデルや接続範囲は&lt;a href="https://crazyrouter.com/models?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-ja__models" rel="noopener noreferrer"&gt;Crazyrouterのモデル一覧&lt;/a&gt;、費用計画は&lt;a href="https://crazyrouter.com/pricing?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-ja__pricing" rel="noopener noreferrer"&gt;Crazyrouter pricing&lt;/a&gt;で別々に確認できます。&lt;/p&gt;

&lt;h2&gt;
  
  
  検証環境と採点方法
&lt;/h2&gt;

&lt;p&gt;検証前にモデル一覧APIを呼び出し、対象とする正確なモデルIDが表示されることを確認しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET https://cn.crazyrouter.com/v1/models

claude-opus-5
gpt-5.6-sol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;本番の検証リクエストには、次のAPIを使用しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;各テストでは、両モデルに同じsystem prompt、user prompt、temperature、&lt;code&gt;max_tokens&lt;/code&gt;を設定しました。外部ツールは使用せず、HTTP 200が返っただけでは合格と判定していません。&lt;/p&gt;

&lt;p&gt;採点は次の手順で行っています。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;期待値、必須要件、テスト条件を事前に定義する&lt;/li&gt;
&lt;li&gt;両モデルに同一条件で問題を送信する&lt;/li&gt;
&lt;li&gt;数値や必須文字列を自動検査する&lt;/li&gt;
&lt;li&gt;Pythonコードは保存して隠しテストを実行する&lt;/li&gt;
&lt;li&gt;JSONは実際にパーサーへ渡す&lt;/li&gt;
&lt;li&gt;自動判定後に人手で内容を再確認する&lt;/li&gt;
&lt;li&gt;中核正解、完遂、形式遵守を別々に記録する&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;人手による再確認を行ったのは、表記差による偽陰性を避けるためです。LaTeXの書き方、英字の大小、厳密な分数と丸めた小数の違いだけで、不正解と判定すべきではありません。&lt;/p&gt;

&lt;p&gt;実際に、GPT-5.6-SOLは確率問題で参照用の分数をそのまま複製していませんでしたが、等価な式と正しい小数を提示しました。また、Opus 5は物理問題の&lt;code&gt;0.302 m&lt;/code&gt;を有効数字2桁の&lt;code&gt;0.30 m&lt;/code&gt;としていました。いずれも中核的な誤りではありません。&lt;/p&gt;

&lt;h2&gt;
  
  
  10問の検証結果
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;課題&lt;/th&gt;
&lt;th&gt;主な受け入れ条件&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6-SOL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;厳密なマルコフ連鎖&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;E[τ]=5&lt;/code&gt;、&lt;code&gt;E[τ²]=43&lt;/code&gt;、&lt;code&gt;Var(τ)=18&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2自由度振動子&lt;/td&gt;
&lt;td&gt;2つの固有振動数、2つの振幅、2つの位相&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;制約付き探索&lt;/td&gt;
&lt;td&gt;一意な順序&lt;code&gt;A,C,E,B,D&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cantelliの不等式の訂正&lt;/td&gt;
&lt;td&gt;確率は特定不能、上限は&lt;code&gt;0.2&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python循環検出のレビュー&lt;/td&gt;
&lt;td&gt;バグ、DAGの反例、最小限の修正&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;実験計画&lt;/td&gt;
&lt;td&gt;同一問題での対応付け、難易度制御、信頼区間&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;偏りのあるコインで&lt;code&gt;HHTH&lt;/code&gt;を待つ問題&lt;/td&gt;
&lt;td&gt;期待値約&lt;code&gt;12.6547&lt;/code&gt;と正しい状態遷移&lt;/td&gt;
&lt;td&gt;中核は正解。打ち切りにより最後の説明が欠落&lt;/td&gt;
&lt;td&gt;正解かつ完遂&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ログ集計アルゴリズム&lt;/td&gt;
&lt;td&gt;時間窓、失敗イベント、キャッシュ率、上位ユーザー&lt;/td&gt;
&lt;td&gt;隠しテスト合格&lt;/td&gt;
&lt;td&gt;隠しテスト合格&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;非弾性衝突とばね&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;v1≈6.10&lt;/code&gt;、&lt;code&gt;v2≈2.44&lt;/code&gt;、&lt;code&gt;x≈0.302&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;td&gt;正解&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;安定経路選択アルゴリズム&lt;/td&gt;
&lt;td&gt;cost、latency、reliability、辞書順規則&lt;/td&gt;
&lt;td&gt;隠しテスト合格&lt;/td&gt;
&lt;td&gt;隠しテスト合格&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;10問の中核回答は両モデルとも &lt;strong&gt;10/10&lt;/strong&gt; です。ただし、すべてのサブ要件を満たした完全な回答は、Opus 5が &lt;strong&gt;9/10&lt;/strong&gt;、GPT-5.6-SOLが &lt;strong&gt;10/10&lt;/strong&gt; でした。&lt;/p&gt;

&lt;h2&gt;
  
  
  最難関の確率問題：正解と完遂を分けて評価する
&lt;/h2&gt;

&lt;p&gt;対象パターンは&lt;code&gt;HHTH&lt;/code&gt;で、偏りのあるコインの確率は&lt;code&gt;P(H)=0.62&lt;/code&gt;、&lt;code&gt;P(T)=0.38&lt;/code&gt;です。&lt;/p&gt;

&lt;p&gt;設問では、最長の接頭辞・接尾辞一致に基づく状態を使って方程式を立て、さらに次の2点を説明するよう求めました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;状態&lt;code&gt;HH&lt;/code&gt;の後に再び&lt;code&gt;H&lt;/code&gt;が出たとき、なぜ状態が&lt;code&gt;HH&lt;/code&gt;のままなのか&lt;/li&gt;
&lt;li&gt;なぜ期待待ち時間を単純に&lt;code&gt;1/P(HHTH)&lt;/code&gt;とは書けないのか&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;両モデルが得た期待値は正しいものでした。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] ≈ 12.6547
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOLは状態遷移と導出を最後まで提示し、パターンの重なりを考慮して次の関係を示しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] = 1 / P(HHTH) + 1 / P(H)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opus 5も、正しい状態、方程式、厳密な分数、小数値を提示しています。しかし、応答の&lt;code&gt;finish_reason&lt;/code&gt;は&lt;code&gt;finish_reason=length&lt;/code&gt;でした。&lt;/p&gt;

&lt;p&gt;この問題では&lt;code&gt;max_tokens=3200&lt;/code&gt;が出力上限となり、Opus 5の回答は追加の状態期待値を記述している途中で終了しました。そのため、最後に要求されていた「なぜ単純な逆確率を使えないのか」という説明が欠けています。&lt;/p&gt;

&lt;p&gt;評価は次のように分けました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;期待値&lt;code&gt;12.6547&lt;/code&gt;と状態方程式は正しいため、中核回答は正解&lt;/li&gt;
&lt;li&gt;最後の説明要件がないため、完全なタスク提出としては不合格&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;つまり、正しい途中結果が含まれていることと、依頼全体を完遂したことは同義ではありません。&lt;/p&gt;

&lt;p&gt;この点は、以前の&lt;a href="https://crazyrouter.com/ja/blog/claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026-ja" rel="noopener noreferrer"&gt;max_tokensによる打ち切りの再検証&lt;/a&gt;とも共通します。検証時は回答本文だけでなく、&lt;code&gt;finish_reason&lt;/code&gt;と出力上限も保存する必要があります。&lt;/p&gt;

&lt;h2&gt;
  
  
  実行可能コードの検証：見た目ではなくテスト結果で判定
&lt;/h2&gt;

&lt;p&gt;コード生成では、長い実装や丁寧なコメントが正しさを保証するわけではありません。そこで今回は、両モデルの出力を&lt;code&gt;.py&lt;/code&gt;ファイルとして保存し、隔離した環境で同一の隠しテストを実行しました。&lt;/p&gt;

&lt;h3&gt;
  
  
  ログ集計アルゴリズム
&lt;/h3&gt;

&lt;p&gt;関数には、次の要件を設定しました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;半開区間の時間窓を正しく処理する&lt;/li&gt;
&lt;li&gt;成功リクエストと失敗リクエストで異なる集計規則を適用する&lt;/li&gt;
&lt;li&gt;ユーザーまたはモデルが欠落した入力を処理する&lt;/li&gt;
&lt;li&gt;cache hit rateを計算する&lt;/li&gt;
&lt;li&gt;costが同じ場合はユーザー名の辞書順で並べる&lt;/li&gt;
&lt;li&gt;入力オブジェクトを変更しない&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;両モデルの実装が隠しテストに合格しました。&lt;/p&gt;

&lt;h3&gt;
  
  
  信頼性制約付きの安定経路選択
&lt;/h3&gt;

&lt;p&gt;経路探索では、次の条件を同時に処理する必要があります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;総コストが最小の経路を選ぶ&lt;/li&gt;
&lt;li&gt;コストが同じ場合はlatencyが最小の経路を選ぶ&lt;/li&gt;
&lt;li&gt;latencyも同じ場合はreliabilityが最大の経路を選ぶ&lt;/li&gt;
&lt;li&gt;それでも同じ場合は経路の辞書順で選ぶ&lt;/li&gt;
&lt;li&gt;banned nodes、最大hops、最小reliability、不正な辺を処理する&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;こちらも両モデルが隠しテストに合格しました。&lt;/p&gt;

&lt;p&gt;したがって、今回のコード検証結果は両モデルとも &lt;strong&gt;2/2&lt;/strong&gt; です。コードの長さや説明の読みやすさではなく、実行結果に基づいて同率と判定しています。&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOLの別の複雑な物理・依存関係アルゴリズムの検証については、&lt;a href="https://crazyrouter.com/zh/blog/gpt-56-sol-vs-gpt-55-round6-hard-physics-code-2026" rel="noopener noreferrer"&gt;GPT-5.6-SOL vs GPT-5.5 高難度物理・コード検証&lt;/a&gt;も参照できます。&lt;/p&gt;

&lt;h2&gt;
  
  
  厳密なJSON：推論の正しさではなく形式遵守を測る
&lt;/h2&gt;

&lt;p&gt;厳密なJSONの課題では、事故データを単一オブジェクトへまとめ、次の条件を明記しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exactly one JSON object and no Markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;両モデルとも、失敗率、チャネルの帰属、再試行後も復旧しなかった件数を正しく計算しました。違いは、JSONの前後に何を出力したかです。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5.6-SOLは初回からJSONだけを返し、&lt;code&gt;json.loads&lt;/code&gt;で直接解析できた&lt;/li&gt;
&lt;li&gt;Opus 5は初回にコードフェンスとVerificationを付加した&lt;/li&gt;
&lt;li&gt;Opus 5の1回目の再試行では、圧縮されたJSONの後にVerificationを付加した&lt;/li&gt;
&lt;li&gt;Opus 5の2回目の再試行では、再びコードフェンスと説明を付加した&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;したがって、厳密なJSONの初回提出結果は次のとおりです。&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;モデル&lt;/th&gt;
&lt;th&gt;初回の厳密JSON&lt;/th&gt;
&lt;th&gt;追加再試行&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5&lt;/td&gt;
&lt;td&gt;0/1&lt;/td&gt;
&lt;td&gt;2回とも非準拠&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-5.6-SOL&lt;/td&gt;
&lt;td&gt;1/1&lt;/td&gt;
&lt;td&gt;不要&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Opus 5はデータや計算を間違えたのではありません。すべてのフィールドと値は正しかったものの、要求された出力形式に違反しました。これは「計算能力の失敗」ではなく「形式および指示遵守の失敗」です。&lt;/p&gt;

&lt;p&gt;本番環境では、最低限でもローカル側で次のような検証を行えます。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;REQUIRED_KEYS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;window&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failure_rate_pct&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;provider_owned_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer_owned_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recovered_by_retry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unrecovered_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;root_cause&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_incident_json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;REQUIRED_KEYS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unexpected schema or key order&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;84&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed request count mismatch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;system promptだけで構造化出力を保証することはできません。より堅牢にするには、供給元が対応する構造化出力パラメータを使用し、ローカルでschema検証を行い、解析に失敗した場合は再試行またはモデルの切り替えを実施します。&lt;/p&gt;

&lt;h2&gt;
  
  
  同一APIで再検証する方法
&lt;/h2&gt;

&lt;p&gt;以下はOpenAI-compatible chat completions endpointを使う最小構成です。API endpoint自体にはUTMパラメータを付けません。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;BASE_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cn.crazyrouter.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRAZYROUTER_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE_URL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/chat/completions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;messages&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Answer accurately and follow every requested constraint.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temperature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-5.6-sol&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your benchmark prompt here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;choices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;finish_reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;再検証では、少なくとも次の情報を保存しておくと、後から判定根拠を追跡しやすくなります。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;response ID&lt;/li&gt;
&lt;li&gt;returned model&lt;/li&gt;
&lt;li&gt;&lt;code&gt;finish_reason&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;原文の回答&lt;/li&gt;
&lt;li&gt;リクエスト時の&lt;code&gt;max_tokens&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;ローカル検証の結果&lt;/li&gt;
&lt;li&gt;JSON解析エラー&lt;/li&gt;
&lt;li&gt;コードテストの標準出力と終了コード&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;現在のモデル表示は&lt;a href="https://crazyrouter.com/models?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-ja__body_models" rel="noopener noreferrer"&gt;Crazyrouterのモデル一覧&lt;/a&gt;で確認し、その後に実際の業務promptを使って小規模な回帰テストを行うのが安全です。&lt;/p&gt;

&lt;h2&gt;
  
  
  本番導入時の考え方
&lt;/h2&gt;

&lt;h3&gt;
  
  
  両モデルを候補にしやすい用途
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;正解や許容誤差を事前に定義できる数学・物理問題&lt;/li&gt;
&lt;li&gt;単体テストを実行できるPythonアルゴリズム&lt;/li&gt;
&lt;li&gt;誤った前提や不十分な統計的結論を指摘する処理&lt;/li&gt;
&lt;li&gt;ローカル検証器によって成功・失敗を判定できる作業手順&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;今回、両モデルは10問すべてで中核回答が正解し、2問のコード課題でも隠しテストに合格しました。そのため、検証可能な処理では、どちらも候補に含められます。&lt;/p&gt;

&lt;h3&gt;
  
  
  今回の結果でGPT-5.6-SOLを優先しやすい条件
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;すべてのサブ要件を1回の応答で満たす必要がある&lt;/li&gt;
&lt;li&gt;応答本文が厳密なJSONでなければならない&lt;/li&gt;
&lt;li&gt;説明文から構造化データを抽出する処理を減らしたい&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これは総合的な知能順位を意味するものではありません。今回の観測範囲では、GPT-5.6-SOLがタスクの完遂と厳密なJSON提出で要件を満たした、という限定的な判断です。&lt;/p&gt;

&lt;h3&gt;
  
  
  Opus 5を使う場合に追加したい保護策
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;長い導出には十分な&lt;code&gt;max_tokens&lt;/code&gt;を設定する&lt;/li&gt;
&lt;li&gt;必ず&lt;code&gt;finish_reason&lt;/code&gt;を確認する&lt;/li&gt;
&lt;li&gt;JSONは下流へ渡す前に解析する&lt;/li&gt;
&lt;li&gt;余分なMarkdownや説明文がある場合の回退処理を用意する&lt;/li&gt;
&lt;li&gt;必須サブ要件を個別に検査する&lt;/li&gt;
&lt;li&gt;打ち切り時には出力上限を調整して再試行する&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opus 5の推論が弱かったという結果ではありません。今回の10問では中核回答がすべて正しく、2つのコード実装も隠しテストを通過しました。差が表れたのは、正しい内容を最終応答の中にすべて収められたか、指定形式だけで返せたかという点です。&lt;/p&gt;

&lt;p&gt;Claude系モデル内での提出挙動も比較する場合は、&lt;a href="https://crazyrouter.com/ja/blog/claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ja" rel="noopener noreferrer"&gt;Claude Opus 5 vs Claude Fable 5 実API検証&lt;/a&gt;も参考になります。&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Opus 5とGPT-5.6-SOLのどちらがより賢いですか？
&lt;/h3&gt;

&lt;p&gt;今回の10問では、両モデルの中核回答が &lt;strong&gt;10/10&lt;/strong&gt; でした。この結果だけでは、一方が全面的により賢いとは判断できません。用途別に正解率、完遂率、形式遵守率を確認する必要があります。&lt;/p&gt;

&lt;h3&gt;
  
  
  中核正解率とタスク完遂率は何が違いますか？
&lt;/h3&gt;

&lt;p&gt;中核正解率は、主要な数値や結論が正しいかを評価します。タスク完遂率は、それに加えて、指定された説明や根拠などの全サブ要件を満たしたかを評価します。正しい答えを出しても、一部の要求が欠けていれば完遂とは判定しません。&lt;/p&gt;

&lt;h3&gt;
  
  
  なぜ完遂率は同率ではないのですか？
&lt;/h3&gt;

&lt;p&gt;Opus 5の難しい確率問題が&lt;code&gt;max_tokens=3200&lt;/code&gt;で打ち切られ、&lt;code&gt;finish_reason=length&lt;/code&gt;となったためです。期待値&lt;code&gt;12.6547&lt;/code&gt;と状態方程式は正しかったものの、最後に求められた説明が欠けました。GPT-5.6-SOLはすべてのサブ要件を完了しました。&lt;/p&gt;

&lt;h3&gt;
  
  
  Opus 5は確率問題を間違えたのですか？
&lt;/h3&gt;

&lt;p&gt;いいえ。中核となる確率計算は正しく、期待値は&lt;code&gt;12.6547&lt;/code&gt;でした。不足していたのは、なぜ期待値を単純に&lt;code&gt;1/P(HHTH)&lt;/code&gt;とできないかという最後の説明です。&lt;/p&gt;

&lt;h3&gt;
  
  
  JSONの形式違反は知能上の誤りですか？
&lt;/h3&gt;

&lt;p&gt;数学や推論の誤りとは分けて扱うべきです。Opus 5が計算したJSONのフィールドと値は正しかった一方、JSON以外の文字列を追加したため、厳密な形式要件には違反しました。より正確には、形式および指示遵守の失敗です。&lt;/p&gt;

&lt;h3&gt;
  
  
  厳密なJSONの結果はどうなりましたか？
&lt;/h3&gt;

&lt;p&gt;初回はGPT-5.6-SOLが &lt;strong&gt;1/1&lt;/strong&gt;、Opus 5が &lt;strong&gt;0/1&lt;/strong&gt; でした。Opus 5は追加の2回の再試行でも、説明文またはコードフェンスを付加し、厳密なJSON要件には準拠しませんでした。&lt;/p&gt;

&lt;h3&gt;
  
  
  コード課題はどのように採点しましたか？
&lt;/h3&gt;

&lt;p&gt;モデルの出力をPythonファイルとして保存し、同一の隠しテストを実行しました。境界条件、並べ替え規則、不正入力、入力オブジェクトの不変性などを検査し、両モデルとも &lt;strong&gt;2/2&lt;/strong&gt; で合格しました。&lt;/p&gt;

&lt;h3&gt;
  
  
  なぜ応答速度の優劣を出していないのですか？
&lt;/h3&gt;

&lt;p&gt;端から端までの待ち時間には、ネットワーク経路、チャネル負荷、キャッシュ、上流インスタンス、アカウント制限などが影響します。固定された上流環境で十分な反復を行わない限り、モデルそのものの推論性能から分離できないため、知能スコアには含めていません。&lt;/p&gt;

&lt;h3&gt;
  
  
  10問だけで長期的なモデル選定はできますか？
&lt;/h3&gt;

&lt;p&gt;できません。今回は再現可能な小規模サンプルです。本番導入前には、実際の業務問題を使って20～50回程度反復し、中核正解率、タスク完遂率、コードテスト合格率、形式違反率を別々に集計する必要があります。&lt;/p&gt;

&lt;h3&gt;
  
  
  自社で比較を始めるには何が必要ですか？
&lt;/h3&gt;

&lt;p&gt;まず実際の業務から10～30件のpromptを選び、各問題について機械的に実行可能な合格条件を定義します。その後、同じAPI条件で両モデルに同一入力を送り、回答本文だけでなく、&lt;code&gt;finish_reason&lt;/code&gt;、コードテスト、JSON解析結果も保存します。先に結論を決めてから都合のよい事例を選ぶ方法は避けてください。&lt;/p&gt;

&lt;h2&gt;
  
  
  最終評価
&lt;/h2&gt;

&lt;p&gt;今回の検証を単純なモデル順位にまとめるのは適切ではありません。確認できた事実は、次のように指標別に整理できます。&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude Opus 5とGPT-5.6-SOLは、10問の中核回答でともに10/10。すべてのサブ要件を完了した割合はOpus 5が9/10、GPT-5.6-SOLが10/10。Pythonの隠しテストは両モデルとも2/2。厳密なJSONの初回提出はOpus 5が0/1、GPT-5.6-SOLが1/1で、Opus 5は追加の2回の再試行でも非準拠だった。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;正解や隠しテストを用意できる業務であれば、両モデルとも候補に含められます。一方、下流システムがJSONを直接処理する場合は、形式検証、再試行、モデルの切り替えを必須の構成要素として設計すべきです。&lt;/p&gt;

&lt;p&gt;また、長い推論では中核回答の正しさだけでなく、&lt;code&gt;finish_reason&lt;/code&gt;と出力上限を確認しなければなりません。今回の&lt;code&gt;max_tokens=3200&lt;/code&gt;の事例が示すように、正しい答えが含まれていても、タスク全体が完了しているとは限らないためです。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-ja__final_cta&amp;amp;utm_term=ai+model+accuracy+benchmark" rel="noopener noreferrer"&gt;Crazyrouterアカウントを作成し、Opus 5 / GPT-5.6-SOLを自社問題で検証する&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Claude Opus 5 vs GPT-5.6-SOL: Core Accuracy Ties at 10/10 in a Reproducible Model Test</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Thu, 30 Jul 2026 00:25:19 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5-vs-gpt-56-sol-core-accuracy-ties-at-1010-in-a-reproducible-model-test-34ch</link>
      <guid>https://dev.to/metaviiii/claude-opus-5-vs-gpt-56-sol-core-accuracy-ties-at-1010-in-a-reproducible-model-test-34ch</guid>
      <description>&lt;h1&gt;
  
  
  Claude Opus 5 vs GPT-5.6-SOL: Core Accuracy Ties at 10/10 in a Reproducible Model Test
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyd9f9fcop7vw98b4dc8x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyd9f9fcop7vw98b4dc8x.png" alt="Claude Opus 5 and GPT-5.6-SOL intelligence accuracy benchmark" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Model leaderboards often compress very different capabilities into a single score. That may be convenient, but it is not enough for engineering decisions. A useful comparison needs reproducible prompts, objective graders, executable tests, and separate accounting for reasoning correctness, task completion, and output format.&lt;/p&gt;

&lt;p&gt;Network latency is deliberately excluded from this intelligence score. End-to-end API time depends on routing, upstream load, rate limits, caching, and the service instance handling a request. Without a fixed upstream, enough repeated measurements, and confidence intervals, latency is an operational observation—not evidence that one model reasons better than another.&lt;/p&gt;

&lt;p&gt;This test sent 10 objectively gradable tasks to Claude Opus 5 and GPT-5.6-SOL through the same OpenAI-compatible Crazyrouter endpoint. Strict JSON was evaluated separately as an instruction-following test.&lt;/p&gt;

&lt;p&gt;The results resist a simple leaderboard narrative:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core-answer accuracy:&lt;/strong&gt; Claude Opus 5 scored &lt;strong&gt;10/10&lt;/strong&gt;; GPT-5.6-SOL scored &lt;strong&gt;10/10&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complete delivery of every sub-requirement:&lt;/strong&gt; Claude Opus 5 scored &lt;strong&gt;9/10&lt;/strong&gt;; GPT-5.6-SOL scored &lt;strong&gt;10/10&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hidden tests across two Python tasks:&lt;/strong&gt; both models scored &lt;strong&gt;2/2&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strict JSON on the first attempt:&lt;/strong&gt; Claude Opus 5 scored &lt;strong&gt;0/1&lt;/strong&gt;; GPT-5.6-SOL scored &lt;strong&gt;1/1&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Additional strict-JSON retries:&lt;/strong&gt; Opus remained noncompliant in two extra retries by appending text or using code fences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The defensible conclusion is that core correctness was tied. The models did not, however, behave identically when evaluated for complete task delivery and machine-readable output.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-en__hero_cta&amp;amp;utm_term=claude+opus+5+gpt+5.6+sol" rel="noopener noreferrer"&gt;Create an API key and rerun the test with your own workload&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick answers
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj3szrkoxqwz1hmvyq0w2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fj3szrkoxqwz1hmvyq0w2.png" alt="Claude Opus 5 and GPT-5.6-SOL accuracy scorecard" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Question&lt;/th&gt;
&lt;th&gt;Result in this test&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Which model produced more correct core answers?&lt;/td&gt;
&lt;td&gt;Tie: both scored &lt;strong&gt;10/10&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which model completed every requested sub-requirement more often?&lt;/td&gt;
&lt;td&gt;GPT-5.6-SOL: &lt;strong&gt;10/10&lt;/strong&gt;; Opus 5: &lt;strong&gt;9/10&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which model produced more reliable code?&lt;/td&gt;
&lt;td&gt;Tie in this sample: both passed hidden tests for both algorithm tasks, scoring &lt;strong&gt;2/2&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Did Opus get the difficult probability problem wrong?&lt;/td&gt;
&lt;td&gt;No. Its core answer was correct, but the response hit the &lt;code&gt;max_tokens=3200&lt;/code&gt; boundary and omitted the final requested explanation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which model followed the strict-JSON instruction more reliably?&lt;/td&gt;
&lt;td&gt;GPT-5.6-SOL in this test. Opus added extra text or code fences on the first attempt and on two additional retries&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Does this prove that GPT is more intelligent?&lt;/td&gt;
&lt;td&gt;No. Core reasoning accuracy and format compliance should be measured separately&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Which model was faster?&lt;/td&gt;
&lt;td&gt;This test does not rank speed because network latency was excluded from the intelligence score&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For workloads dominated by objectively checked mathematics, physics, or algorithms, this sample does not show a meaningful accuracy gap. For systems that require directly parseable JSON or complete delivery of every instruction in a single response, GPT-5.6-SOL was more consistent in this run.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why network latency is not part of the score
&lt;/h2&gt;

&lt;p&gt;API response time is not a clean measure of model intelligence. It can vary because of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the network path from the gateway to each upstream provider;&lt;/li&gt;
&lt;li&gt;channel load and account rate limits at the time of the request;&lt;/li&gt;
&lt;li&gt;whether a cache is hit;&lt;/li&gt;
&lt;li&gt;which service instance receives the request;&lt;/li&gt;
&lt;li&gt;how the upstream provider counts or conceals reasoning tokens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A request completing several seconds earlier does not establish stronger reasoning. A credible latency comparison would require a controlled upstream, enough repeated requests, and reported confidence intervals.&lt;/p&gt;

&lt;p&gt;For that reason, no response-time metric appears in the result table, and this article does not name a speed winner. Latency remains important for operations and user experience, but it should be benchmarked separately from correctness.&lt;/p&gt;

&lt;p&gt;For current model availability, see the &lt;a href="https://crazyrouter.com/models?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-en__models" rel="noopener noreferrer"&gt;Crazyrouter model list&lt;/a&gt;. Cost planning should likewise be handled separately using &lt;a href="https://crazyrouter.com/pricing?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-en__pricing" rel="noopener noreferrer"&gt;Crazyrouter pricing&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test environment and grading methodology
&lt;/h2&gt;

&lt;p&gt;Before testing, the model-list endpoint was queried to confirm that both exact model IDs were available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET https://cn.crazyrouter.com/v1/models

claude-opus-5
gpt-5.6-sol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All benchmark requests used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within each test batch, both models received the same system prompt, user prompt, temperature, and &lt;code&gt;max_tokens&lt;/code&gt;. No external tools were enabled. An HTTP 200 response was not treated as evidence that the task had passed.&lt;/p&gt;

&lt;p&gt;Results were graded on three separate layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Core-answer accuracy:&lt;/strong&gt; Were the key values, conclusions, and algorithmic behaviors correct?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complete task delivery:&lt;/strong&gt; Did the response satisfy every listed sub-requirement?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Machine-verifiable delivery:&lt;/strong&gt; Did generated code pass hidden tests, and could JSON be parsed directly?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Automated string checks were followed by manual review. This matters because equivalent LaTeX, capitalization differences, exact fractions, and rounded decimals can otherwise produce false negatives.&lt;/p&gt;

&lt;p&gt;For example, GPT-5.6-SOL did not reproduce the reference fraction verbatim on the probability task, but it supplied an equivalent formula and the correct decimal. Opus reported the physics result &lt;code&gt;0.302 m&lt;/code&gt; as &lt;code&gt;0.30 m&lt;/code&gt; to two significant figures; that was not counted as an error.&lt;/p&gt;

&lt;h2&gt;
  
  
  Results across the 10 intelligence tasks
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;Acceptance criteria&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;GPT-5.6-SOL&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Exact Markov chain&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;E[τ]=5&lt;/code&gt;, &lt;code&gt;E[τ²]=43&lt;/code&gt;, &lt;code&gt;Var(τ)=18&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Two-degree-of-freedom oscillator&lt;/td&gt;
&lt;td&gt;Two natural frequencies, two amplitudes, and two phases&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Constraint search&lt;/td&gt;
&lt;td&gt;Unique ordering &lt;code&gt;A,C,E,B,D&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Correcting a Cantelli premise&lt;/td&gt;
&lt;td&gt;Probability is not identifiable; upper bound is &lt;code&gt;0.2&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python cycle-detection review&lt;/td&gt;
&lt;td&gt;Identify the bug, provide a DAG counterexample, and give the minimal fix&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Experimental design&lt;/td&gt;
&lt;td&gt;Paired evaluation on the same tasks, difficulty control, and confidence intervals&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Biased-coin waiting time for &lt;code&gt;HHTH&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Expected value of approximately &lt;code&gt;12.6547&lt;/code&gt; and correct state transitions&lt;/td&gt;
&lt;td&gt;Core answer correct; final explanation omitted after truncation&lt;/td&gt;
&lt;td&gt;Correct and complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Log aggregation algorithm&lt;/td&gt;
&lt;td&gt;Time window, failure events, cache rate, and top users&lt;/td&gt;
&lt;td&gt;Passed hidden tests&lt;/td&gt;
&lt;td&gt;Passed hidden tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Inelastic collision and spring&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;v1≈6.10&lt;/code&gt;, &lt;code&gt;v2≈2.44&lt;/code&gt;, &lt;code&gt;x≈0.302&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;td&gt;Correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stable routing algorithm&lt;/td&gt;
&lt;td&gt;Cost, latency, reliability, and lexicographic rules&lt;/td&gt;
&lt;td&gt;Passed hidden tests&lt;/td&gt;
&lt;td&gt;Passed hidden tests&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;These results produce two different—and equally important—scores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Core correctness:&lt;/strong&gt; &lt;strong&gt;10/10&lt;/strong&gt; for both models.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Complete task delivery:&lt;/strong&gt; &lt;strong&gt;9/10&lt;/strong&gt; for Opus 5 and &lt;strong&gt;10/10&lt;/strong&gt; for GPT-5.6-SOL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Treating those as the same metric would conceal the most useful operational difference in the test.&lt;/p&gt;

&lt;h2&gt;
  
  
  The hardest probability task: a correct answer can still be incomplete
&lt;/h2&gt;

&lt;p&gt;The target pattern was &lt;code&gt;HHTH&lt;/code&gt;, with a biased coin defined by &lt;code&gt;P(H)=0.62&lt;/code&gt; and &lt;code&gt;P(T)=0.38&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The task required the models to construct equations using longest prefix-suffix matching states. It also requested explicit explanations of two common sources of error:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Why does another &lt;code&gt;H&lt;/code&gt; after state &lt;code&gt;HH&lt;/code&gt; leave the process in state &lt;code&gt;HH&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Why can the expected waiting time not be written simply as &lt;code&gt;1/P(HHTH)&lt;/code&gt;?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both models reached the correct expected waiting time:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] ≈ 12.6547
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOL completed the full derivation and explained that the pattern overlaps with itself, giving:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] = 1 / P(HHTH) + 1 / P(H)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opus 5 also supplied the correct states, equations, exact fraction, and decimal result. However, the response ended with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;finish_reason=length
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The generation reached the &lt;code&gt;max_tokens=3200&lt;/code&gt; boundary while listing additional state expectations. It therefore omitted the final requested explanation of why inverse pattern probability alone is insufficient.&lt;/p&gt;

&lt;p&gt;This distinction is central to the evaluation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A correct final value counts toward core-answer accuracy. A response that omits a requested explanation does not count as complete task delivery.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The finding reflects the same methodological issue examined in the earlier &lt;a href="https://crazyrouter.com/en/blog/claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026-en" rel="noopener noreferrer"&gt;max_tokens truncation retest&lt;/a&gt;: a reliable evaluator should retain the answer, &lt;code&gt;finish_reason&lt;/code&gt;, and output budget. A partially correct response should not be declared complete merely because the visible portion looks convincing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Executable-code validation: run the code instead of grading its style
&lt;/h2&gt;

&lt;p&gt;Code comparisons are particularly vulnerable to subjective judgments. Longer output, more comments, and cleaner-looking abstractions do not prove that an implementation is correct.&lt;/p&gt;

&lt;p&gt;For both programming tasks, the generated code was saved as a &lt;code&gt;.py&lt;/code&gt; file and executed in isolation against the same hidden tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Log aggregation
&lt;/h3&gt;

&lt;p&gt;The required function had to handle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;half-open time windows;&lt;/li&gt;
&lt;li&gt;different counting rules for successful and failed requests;&lt;/li&gt;
&lt;li&gt;missing users and models;&lt;/li&gt;
&lt;li&gt;cache hit rate;&lt;/li&gt;
&lt;li&gt;lexicographic user ordering when costs were equal;&lt;/li&gt;
&lt;li&gt;preservation of the input objects without mutation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both models passed the hidden tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Stable routing with reliability constraints
&lt;/h3&gt;

&lt;p&gt;The routing function had to apply the following priorities and constraints:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;minimize total cost;&lt;/li&gt;
&lt;li&gt;when costs tie, minimize latency;&lt;/li&gt;
&lt;li&gt;when both tie, maximize reliability;&lt;/li&gt;
&lt;li&gt;when all three tie, select by lexicographic path order;&lt;/li&gt;
&lt;li&gt;support banned nodes, maximum hops, minimum reliability, and invalid edges.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Both models passed every hidden test for this task as well.&lt;/p&gt;

&lt;p&gt;The executable-code result is therefore a tie: &lt;strong&gt;2/2 hidden code tests for Claude Opus 5 and 2/2 for GPT-5.6-SOL&lt;/strong&gt;. Code length or presentation style was not used to infer a winner.&lt;/p&gt;

&lt;p&gt;For another GPT-5.6-SOL test involving difficult physics and dependency algorithms, see &lt;a href="https://crazyrouter.com/zh/blog/gpt-56-sol-vs-gpt-55-round6-hard-physics-code-2026" rel="noopener noreferrer"&gt;GPT-5.6-SOL vs GPT-5.5 高难物理与代码实测&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Strict JSON: an instruction-following test, not a mathematics test
&lt;/h2&gt;

&lt;p&gt;The strict-JSON task asked each model to condense incident data into one object. The output constraint was explicit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;exactly one JSON object and no Markdown
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both models correctly calculated the failure rate, assigned channel ownership, and determined the number of failures that remained unrecovered after retries. The difference was the response envelope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-5.6-SOL returned JSON only on the first attempt, and the output could be passed directly to &lt;code&gt;json.loads&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Opus 5 added a code fence and a Verification section on the first attempt.&lt;/li&gt;
&lt;li&gt;On the first additional retry, Opus returned compact JSON but still appended Verification text.&lt;/li&gt;
&lt;li&gt;On the second additional retry, Opus again added a code fence and explanatory text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first-run score was therefore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Claude Opus 5: &lt;strong&gt;0/1&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;GPT-5.6-SOL: &lt;strong&gt;1/1&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opus remained noncompliant in both extra retries. This should be described as “correct data, invalid delivery format,” not as a calculation failure.&lt;/p&gt;

&lt;p&gt;Combining strict formatting and reasoning correctness into one undifferentiated score would obscure the actual engineering issue.&lt;/p&gt;

&lt;p&gt;A basic local validator could look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;

&lt;span class="n"&gt;REQUIRED_KEYS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;window&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;total_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failure_rate_pct&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;provider_owned_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer_owned_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recovered_by_retry&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unrecovered_failures&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;root_cause&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;action&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;parse_incident_json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;payload&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;loads&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n"&gt;REQUIRED_KEYS&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;unexpected schema or key order&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed_requests&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="mi"&gt;84&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;ValueError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;failed request count mismatch&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;payload&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A system prompt alone does not guarantee structured output. A safer production design is to use any structured-output controls supported by the provider, validate the schema locally, and retry or switch models when parsing fails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reproducing the comparison through one API
&lt;/h2&gt;

&lt;p&gt;The following minimal Python example uses the OpenAI-compatible chat completions endpoint. UTM parameters belong in website links, not API endpoint URLs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;BASE_URL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cn.crazyrouter.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;span class="n"&gt;API_KEY&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CRAZYROUTER_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;int&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;BASE_URL&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;/chat/completions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Authorization&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Bearer &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;API_KEY&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Content-Type&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;application/json&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;json&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;model&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;messages&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;system&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Answer accurately and follow every requested constraint.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
                &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
            &lt;span class="p"&gt;],&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;temperature&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;max_tokens&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;600&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;


&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-5.6-sol&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ask&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your benchmark prompt here&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;choices&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;finish_reason&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;message&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a production-grade evaluation, also retain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the response ID;&lt;/li&gt;
&lt;li&gt;the returned model;&lt;/li&gt;
&lt;li&gt;the unmodified response content;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;finish_reason&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;request settings, including &lt;code&gt;max_tokens&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;local grader results;&lt;/li&gt;
&lt;li&gt;code-test or schema-validation output.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check current availability in the &lt;a href="https://crazyrouter.com/models?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-en__body_models" rel="noopener noreferrer"&gt;Crazyrouter model list&lt;/a&gt;, then run a small regression suite using prompts drawn from your own workload.&lt;/p&gt;

&lt;h2&gt;
  
  
  Production guidance
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Workloads where both models belong on the shortlist
&lt;/h3&gt;

&lt;p&gt;Both models performed well for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;mathematics and physics problems with explicit reference answers;&lt;/li&gt;
&lt;li&gt;Python algorithms that can be checked with unit or hidden tests;&lt;/li&gt;
&lt;li&gt;tasks requiring detection of false premises or unsupported statistical conclusions;&lt;/li&gt;
&lt;li&gt;workflows with local validators that can determine whether a response succeeded.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Workloads where GPT-5.6-SOL had an advantage in this test
&lt;/h3&gt;

&lt;p&gt;GPT-5.6-SOL was more consistent when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;every sub-requirement had to be completed in one response;&lt;/li&gt;
&lt;li&gt;the raw response body had to contain pure JSON;&lt;/li&gt;
&lt;li&gt;the application needed to avoid extracting structured data from explanatory prose.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are findings from this test rather than a claim of universal superiority.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional safeguards for Opus 5
&lt;/h3&gt;

&lt;p&gt;Based on the observed failures, an Opus 5 integration should:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;allocate more &lt;code&gt;max_tokens&lt;/code&gt; for long derivations;&lt;/li&gt;
&lt;li&gt;always inspect &lt;code&gt;finish_reason&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;parse and validate JSON before sending it downstream;&lt;/li&gt;
&lt;li&gt;define explicit recovery behavior for Markdown fences or explanatory text;&lt;/li&gt;
&lt;li&gt;retry or switch models when output fails structural validation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of these precautions implies that Opus 5 reasoned less accurately here. It answered all 10 core tasks correctly and passed both hidden code tests. The observed difference was primarily whether every requirement fit into—and remained isolated within—the final response.&lt;/p&gt;

&lt;p&gt;For another comparison of delivery behavior within the Claude family, see &lt;a href="https://crazyrouter.com/en/blog/claude-opus-5-vs-claude-fable-5-api-benchmark-2026-en" rel="noopener noreferrer"&gt;Claude Opus 5 vs Claude Fable 5 真实 API 测试&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Which is more intelligent, Claude Opus 5 or GPT-5.6-SOL?
&lt;/h3&gt;

&lt;p&gt;This test does not establish an overall intelligence winner. Across 10 objectively gradable tasks, both models achieved &lt;strong&gt;10/10 core-answer accuracy&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why was complete task delivery not a tie?
&lt;/h3&gt;

&lt;p&gt;Opus reached the &lt;code&gt;max_tokens=3200&lt;/code&gt; boundary during the difficult probability task. Its expected value and state equations were correct, but it omitted the final requested explanation. That produced &lt;strong&gt;9/10&lt;/strong&gt; complete tasks for Opus versus &lt;strong&gt;10/10&lt;/strong&gt; for GPT-5.6-SOL.&lt;/p&gt;

&lt;h3&gt;
  
  
  Was the Opus probability answer wrong?
&lt;/h3&gt;

&lt;p&gt;No. Opus correctly obtained:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[N] ≈ 12.6547
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The failure was incomplete delivery, not an incorrect probability result. The response ended with &lt;code&gt;finish_reason=length&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should invalid JSON count as an intelligence error?
&lt;/h3&gt;

&lt;p&gt;Not automatically. In this case, Opus calculated the JSON fields and values correctly but added material forbidden by the output contract. It is more precise to classify that as a format and instruction-following failure.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happened during the two additional Opus JSON retries?
&lt;/h3&gt;

&lt;p&gt;Opus remained noncompliant in both. One retry appended Verification text after compact JSON, while the other again used a code fence and added explanatory text.&lt;/p&gt;

&lt;h3&gt;
  
  
  How were the code tasks graded?
&lt;/h3&gt;

&lt;p&gt;Each model’s output was saved as executable Python and run against the same hidden tests. The tests covered edge cases, ordering rules, invalid input, and input immutability. Both models passed both programming tasks, scoring &lt;strong&gt;2/2&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is there no speed winner?
&lt;/h3&gt;

&lt;p&gt;End-to-end latency can reflect network routes, gateway behavior, caching, rate limits, upstream load, and service-instance selection. Because those variables were not controlled through a fixed upstream and sufficient repeated measurements, network latency was excluded from the intelligence score.&lt;/p&gt;

&lt;h3&gt;
  
  
  Are 10 tasks enough for a long-term model-selection decision?
&lt;/h3&gt;

&lt;p&gt;No. This is a small, reproducible capability sample. Before deployment, run real workload prompts repeatedly—ideally 20–50 times—and track core accuracy, complete task delivery, code-test pass rate, and format-violation rate separately.&lt;/p&gt;

&lt;h3&gt;
  
  
  How should I design my own model comparison?
&lt;/h3&gt;

&lt;p&gt;Start with 10–30 representative production prompts. Define an executable or objectively reviewable pass condition for each task, then submit identical inputs and settings through the same API. Choose the grading rules before inspecting the model outputs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should a production system trust a model’s JSON without validation?
&lt;/h3&gt;

&lt;p&gt;No. Parse the output locally, validate it against the expected schema, and define retry or fallback behavior. Even explicit instructions such as &lt;code&gt;exactly one JSON object and no Markdown&lt;/code&gt; may not guarantee compliant output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final verdict
&lt;/h2&gt;

&lt;p&gt;The most useful result is not “GPT wins” or “Opus wins.” It is a more precise engineering conclusion:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Claude Opus 5 and GPT-5.6-SOL both achieved 10/10 core-answer accuracy across the 10 intelligence tasks. GPT-5.6-SOL was more consistent at completing every sub-requirement and delivering strict JSON, while Opus 5 requires closer management of output budgets and format validation.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Both models deserve consideration when tasks have reference answers, executable tests, or local validators. If downstream software consumes JSON directly, schema validation, retries, and model fallback should be treated as required system components rather than optional improvements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=opus5_gpt56sol_accuracy_20260730&amp;amp;utm_content=claude-opus-5-vs-gpt-5-6-sol-intelligence-accuracy-benchmark-2026-en__final_cta&amp;amp;utm_term=ai+model+accuracy+benchmark" rel="noopener noreferrer"&gt;Create a Crazyrouter account and run your own Opus 5 / GPT-5.6-SOL test&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Claude Opus 5 vs Claude Fable 5: 7 реальных API-тестов и рекомендации по production-маршрутизации</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Sun, 26 Jul 2026 14:58:52 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5-vs-claude-fable-5-7-riealnykh-api-tiestov-i-riekomiendatsii-po-production-marshrutizatsii-4hl7</link>
      <guid>https://dev.to/metaviiii/claude-opus-5-vs-claude-fable-5-7-riealnykh-api-tiestov-i-riekomiendatsii-po-production-marshrutizatsii-4hl7</guid>
      <description>&lt;h1&gt;
  
  
  Claude Opus 5 vs Claude Fable 5: 7 реальных API-тестов и рекомендации по production-маршрутизации
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftlwv8y5sjmno29lnj7pe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftlwv8y5sjmno29lnj7pe.png" alt="Реальное API-сравнение Claude Opus 5 и Claude Fable 5" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Как выбрать между Claude Opus 5 и Claude Fable 5? Если смотреть только на один успешный ответ, обе модели способны написать аккуратное математическое решение. Но на production-опыт обычно сильнее влияют три другие вещи: &lt;strong&gt;стабильно ли задача доводится до результата, подходит ли задержка для интерактивного сценария и можно ли автоматически восстановиться после сбоя&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;25 июля 2026 года мы протестировали обе модели на 7 типах задач через один и тот же OpenAI-compatible API, с одинаковыми промптами и параметрами. Результаты не укладываются в простую формулу «более крупная модель всегда лучше»:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;claude-fable-5&lt;/code&gt; была быстрее и лаконичнее в задачах, которые успешно решили обе модели;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude-opus-5&lt;/code&gt; в итоге покрыла все 7 типов задач;&lt;/li&gt;
&lt;li&gt;Fable 5 несколько раз подряд срабатывала на &lt;code&gt;content_filter&lt;/code&gt; в обычных промптах для code review и JSON-сводки инцидента;&lt;/li&gt;
&lt;li&gt;Opus 5 в задаче по физике первые два раза вернула HTTP 200, но ответила только приветствием; нормальный результат появился лишь с 3-й попытки.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это значит, что production-выбор не должен сводиться к одному model ID. Более надежный подход: &lt;strong&gt;сначала выбирать основную модель по типу задачи, а затем закрывать аномалии через проверку содержимого, retry и fallback на другую модель.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=claude_opus5_fable5_benchmark_20260725&amp;amp;utm_content=claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ru__hero_cta&amp;amp;utm_term=claude+opus+5+vs+fable+5" rel="noopener noreferrer"&gt;Протестировать Opus 5 и Fable 5 через один API&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Краткие выводы
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Вопрос&lt;/th&gt;
&lt;th&gt;Ответ по этому тесту&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Какая модель покрыла больше задач?&lt;/td&gt;
&lt;td&gt;Opus 5: 6/7 в основном тесте, 7/7 после retry&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Какая модель быстрее?&lt;/td&gt;
&lt;td&gt;В задачах, успешно решенных обеими моделями, P50 общей задержки у Fable 5 примерно на 24% ниже&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Какая модель отвечает лаконичнее?&lt;/td&gt;
&lt;td&gt;Fable 5: в среднем примерно на 43% меньше видимых output tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Какая модель лучше подходит для code review и строгого JSON?&lt;/td&gt;
&lt;td&gt;В этом тесте Opus 5 стабильнее; Fable 5 в двух задачах 3 раза подряд была отфильтрована&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Можно ли ориентироваться только на HTTP 200?&lt;/td&gt;
&lt;td&gt;Нет; у обеих моделей были случаи HTTP 200 без фактического выполнения задачи&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Какую маршрутизацию рекомендовать?&lt;/td&gt;
&lt;td&gt;Для проверенных задач — сначала Fable 5; при фильтрации или пустом теле — fallback на Opus 5; при аномальном приветствии от Opus — автоматический retry&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Если тип входных данных непредсказуем или вам важно минимизировать риск фильтрации обычных бизнес-промптов, в первую очередь стоит рассматривать Opus 5. Если структура задач фиксирована, уже покрыта regression-тестами, а скорость интеракции и длина ответа важнее, Fable 5 лучше подходит как первая модель в цепочке.&lt;/p&gt;

&lt;h2&gt;
  
  
  Как мы тестировали
&lt;/h2&gt;

&lt;p&gt;Перед тестом мы вызвали endpoint со списком моделей и убедились, что оба точных model ID доступны:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET https://cn.crazyrouter.com/v1/models

claude-opus-5
claude-fable-5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Все основные запросы шли через один endpoint:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Общие условия:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Одинаковый system prompt
Одинаковый user prompt
temperature = 1
Для каждой задачи одинаковый max_tokens
stream = true
Без инструментов и доступа к интернету
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Единый system prompt требовал только точного ответа и соблюдения формата вывода, без роли или установки, смещающей поведение в пользу какой-либо модели:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Answer the user's task accurately. Follow every requested output format and length constraint exactly. Do not use external tools.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Мы фиксировали не только итоговый текст, но и:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP-статус и &lt;code&gt;finish_reason&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;response ID и returned model;&lt;/li&gt;
&lt;li&gt;время до первого видимого token и общую задержку;&lt;/li&gt;
&lt;li&gt;completion tokens, reasoning tokens;&lt;/li&gt;
&lt;li&gt;проходит ли видимый ответ проверку по условиям задачи;&lt;/li&gt;
&lt;li&gt;восстанавливается ли аномальный запрос повтором с теми же параметрами.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Это end-to-end-тест через шлюз Crazyrouter, а не эксперимент с жестко заданным единственным upstream-каналом. Поэтому результаты одновременно отражают поведение модели, upstream-фильтрацию, маршрутизацию шлюза и состояние каналов на тот момент. Они хорошо отвечают на вопрос «с чем реально столкнется пользователь через этот API», но не подходят для упаковки в чистый офлайн-рейтинг возможностей семейства Claude.&lt;/p&gt;

&lt;p&gt;Если вам важно понять, почему при тестировании моделей нужно фиксировать &lt;code&gt;finish_reason&lt;/code&gt; и бюджет вывода, посмотрите также &lt;a href="https://crazyrouter.com/zh/blog/claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026" rel="noopener noreferrer"&gt;повторный max_tokens-тест Claude Fable 5 vs GPT-5.5&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Сводная таблица по 7 задачам
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjluowovcz0agrpol443.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ftjluowovcz0agrpol443.png" alt="Матрица результатов семи задач для Claude Opus 5 и Claude Fable 5" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Тестовое направление&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;Claude Fable 5&lt;/th&gt;
&lt;th&gt;Production-эффект&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Точная математика: цепь Маркова&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Обе модели получили правильные первый момент, второй момент и дисперсию&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Численная физика: связанные осцилляторы&lt;/td&gt;
&lt;td&gt;Первые два раза только приветствие, с 3-й попытки пройдено&lt;/td&gt;
&lt;td&gt;Пройдено с первой попытки&lt;/td&gt;
&lt;td&gt;Для Opus нужны проверка содержимого и retry на уровне задачи&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Поиск с ограничениями&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Обе модели нашли единственное решение&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Статистическая коррекция&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Обе модели отвергли неверную предпосылку и дали корректную верхнюю границу&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code review на Python&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;3 раза подряд &lt;code&gt;content_filter&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;В текущем тесте Fable не подходит для code-review-трафика без regression-проверки&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Строгая JSON-сводка инцидента&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;3 раза подряд &lt;code&gt;content_filter&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;В текущем тесте Fable не подходит для такого текста production-инцидента&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Дизайн эксперимента&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Пройдено&lt;/td&gt;
&lt;td&gt;Обе модели распознали непарные выборки и смешение по сложности&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Доля задач, доставленных с первой основной попытки:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Opus 5: 6 / 7 = 85.7%
Claude Fable 5: 5 / 7 = 71.4%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;С учетом retry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Opus 5: 7 / 7
Claude Fable 5: 5 / 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Под «доставкой» здесь понимается не успешный HTTP-запрос, а наличие видимого ответа, который бизнес-логика может принять как соответствующий заданию. Даже если есть HTTP 200, имя модели и token usage, но тело пустое, отфильтровано или содержит только приветствие, задача считается невыполненной.&lt;/p&gt;

&lt;h2&gt;
  
  
  Математика, ограничения и статистика: обе модели надежны
&lt;/h2&gt;

&lt;p&gt;Математическая задача использовала трехсостоянийную цепь Маркова и требовала вычислить время первого достижения состояния 3 из состояния 1:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E1[τ]
E1[τ²]
Var1(τ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Обе модели выдали:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E1[τ] = 5
E1[τ²] = 43
Var1(τ) = 18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Обе также выписали транзиентную матрицу &lt;code&gt;Q&lt;/code&gt; и уравнения для первого и второго моментов. В этой задаче не было ситуации, когда финальные числа правильные, а вывод противоречивый.&lt;/p&gt;

&lt;p&gt;В задаче на поиск с ограничениями нужно было расставить пять докладов A, B, C, D, E по пяти слотам с условиями непосредственного соседства, порядка, расстояния и отсутствия соседства. Обе модели получили единственный порядок:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A, C, E, B, D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В задаче на статистическую коррекцию намеренно давался неверный вывод: «среднее равно 10, дисперсия равна 4, значит &lt;code&gt;P(X≥14)=0.5&lt;/code&gt;». Обе модели указали, что двух моментов недостаточно для однозначного определения хвостовой вероятности, и через одностороннее неравенство Чебышева/Кантелли получили:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;P(X &amp;gt;= 14) &amp;lt;= 0.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Эти три класса задач показывают, что преимущество Fable 5 в скорости не достигается за счет потери базовой корректности рассуждений. В четких, коротких и проверяемых математических и логических задачах она вполне может быть более легкой первой моделью.&lt;/p&gt;

&lt;p&gt;Предыдущие материалы — &lt;a href="https://crazyrouter.com/zh/blog/claude-fable-5-vs-claude-sonnet-5-api-test-2026" rel="noopener noreferrer"&gt;API-тест Claude Fable 5 vs Claude Sonnet 5&lt;/a&gt; и &lt;a href="https://crazyrouter.com/zh/blog/glm-52-vs-claude-fable-5-output-budget-test-2026" rel="noopener noreferrer"&gt;тест output budget GLM-5.2 vs Fable 5&lt;/a&gt; — также показывают: чтобы понять, подходит ли модель для production, нужно рассматривать корректность, бюджет вывода и форму доставки результата вместе.&lt;/p&gt;

&lt;h2&gt;
  
  
  Физика: Fable справилась с первой попытки, Opus восстановилась на третьей
&lt;/h2&gt;

&lt;p&gt;Задача по физике требовала обработать двухстепенной осциллятор с демпфированием на землю и связующим демпфированием, вычислить две собственные частоты без демпфирования, а также комплексный частотный отклик двух масс при &lt;code&gt;ω=8 rad/s&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Референсные значения:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ω1 = 10.0204 rad/s
ω2 = 16.2149 rad/s
|X1| = 0.14929 m, phase = -12.15°
|X2| = 0.07174 m, phase = -13.90°
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fable 5 с первой попытки дала все правильные результаты. У Opus 5 в первых двух вызовах возникла аномалия, на которую production-командам стоит обратить особое внимание: API вернул HTTP 200 и &lt;code&gt;finish_reason=stop&lt;/code&gt;, но тело ответа содержало только:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi! How can I help you today?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В обеих этих реакциях prompt tokens равнялись всего 10, что очевидно не соответствовало реальному входу. При 3-м выполнении того же запроса Opus 5 через 34.901 секунды вернула полный ответ, и все шесть численных значений прошли проверку.&lt;/p&gt;

&lt;p&gt;Поэтому такую аномалию не стоит классифицировать как «модель ошиблась в физике». Правильнее считать это случаем, когда контекст запроса не был нормально обработан. Самая простая защита — не ручной просмотр логов, а task-level acceptance check на стороне клиента: ответ должен содержать &lt;code&gt;ω1&lt;/code&gt;, &lt;code&gt;ω2&lt;/code&gt;, &lt;code&gt;X1&lt;/code&gt;, &lt;code&gt;X2&lt;/code&gt;; если отсутствует хотя бы одно поле, выполняется retry.&lt;/p&gt;

&lt;h2&gt;
  
  
  Код и строгий JSON: фильтрация Fable стала главным отличием теста
&lt;/h2&gt;

&lt;p&gt;Задача по коду просила модель проверить Python-реализацию DFS-детектора циклов. Ошибка была вполне обычной: после завершения DFS для узла он не удалялся из множества &lt;code&gt;visiting&lt;/code&gt;, из-за чего уже обработанный узел продолжал считаться находящимся в рекурсивном стеке, и на DAG ошибочно находился цикл.&lt;/p&gt;

&lt;p&gt;Opus 5 корректно указала минимальное исправление:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;visiting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;discard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;visited&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fable 5 не вернула анализа кода: &lt;code&gt;finish_reason=content_filter&lt;/code&gt;, тело пустое. Чтобы исключить смещение system prompt и случайную маршрутизацию, мы провели три раунда: исходный тест, повторный тест с чистым system prompt и независимый retry одной задачи. Во всех случаях результатом был &lt;code&gt;content_filter&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Задача со строгим JSON также не содержала опасного контента. Во входе были только общее число запросов за 15 минут, число ошибок, attribution каналам, число восстановленных retry и предпринятые действия; требовалось вывести один JSON-объект. JSON, который вернула Opus 5, можно было сразу распарсить; Fable 5 снова 3 раза подряд была отфильтрована.&lt;/p&gt;

&lt;p&gt;Эти два типа сбоев показывают: **сам safety-фильтр — тоже часть production-качества model API. Если модель стабильно дает ложную фильтрацию на нормальном code review или тексте postmortem-инцидента, она не может напрямую принять на себя весь бизнес-трафик, даже если в математических задачах быстрее.&lt;/p&gt;

&lt;p&gt;response ID двух независимых retry:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ревью кода: gen-1784915384-vGI1PtuNXZG0IJ2YiaCz
JSON инцидента: gen-1784915390-buOWZQSnqjgHeJ6nUogF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Задержка и длина ответа
&lt;/h2&gt;

&lt;p&gt;Чтобы не засчитывать короткое время неуспешных запросов как «преимущество в скорости», здесь сравниваются только четыре задачи, которые успешно выполнили обе модели: математика, поиск с ограничениями, статистическая коррекция и дизайн эксперимента.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkb2latb91hm30jjvxjj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fzkb2latb91hm30jjvxjj.png" alt="Задержка Claude Opus 5 и Claude Fable 5 в задачах, успешно выполненных обеими моделями" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Метрика&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;Claude Fable 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;P50 общей задержки&lt;/td&gt;
&lt;td&gt;10.729 s&lt;/td&gt;
&lt;td&gt;8.147 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P50 первого видимого token&lt;/td&gt;
&lt;td&gt;8.376 s&lt;/td&gt;
&lt;td&gt;6.974 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Среднее число видимых completion tokens&lt;/td&gt;
&lt;td&gt;797.5&lt;/td&gt;
&lt;td&gt;452.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;В этой небольшой выборке P50 общей задержки у Fable 5 примерно на 24% ниже, время до первого видимого token — примерно на 17% ниже, а ответы короче примерно на 43%. Для чатов, пакетных сводок и высокочастотных структурированных задач такие различия напрямую влияют на ожидание пользователя и нагрузку на последующую обработку.&lt;/p&gt;

&lt;p&gt;Но не стоит превращать медиану по 4 задачам в SLA. Upstream-нагрузка, кеши, маршрутизация и rate limiting могут менять задержку. Перед полноценным запуском нужно повторить тесты на собственных бизнес-промптах 20–50 раз, а затем посчитать P50, P95, P99 и реальную стоимость каждого результата, прошедшего acceptance check.&lt;/p&gt;

&lt;p&gt;В основных ответах Fable 5 присутствовало поле &lt;code&gt;cost&lt;/code&gt;; суммарно за7 вызовов получилось около &lt;code&gt;$0.24596&lt;/code&gt;. В usage для Opus 5 не было поля &lt;code&gt;cost&lt;/code&gt; той же методики, поэтому в статье не делается вывод о победителе по цене в долларах. Отсутствие поля не означает бесплатность, и его не следует заполнять непроверенными ценами.&lt;/p&gt;

&lt;h2&gt;
  
  
  Рекомендуемая production-стратегия маршрутизации
&lt;/h2&gt;

&lt;p&gt;Вызов одной модели проще всего реализовать, но он напрямую показывает конечному пользователю все случайные особенности поведения модели. Для двух моделей из этого теста разумнее такое разделение ролей:&lt;/p&gt;

&lt;h3&gt;
  
  
  Fable 5 как первая модель
&lt;/h3&gt;

&lt;p&gt;Подходит для:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;математических задач, reasoning с ограничениями и коротких сводок, уже прошедших regression-тесты;&lt;/li&gt;
&lt;li&gt;интерактивных сценариев, чувствительных ко времени до первого token и общей задержке;&lt;/li&gt;
&lt;li&gt;задач, где нужно контролировать длину ответа и уменьшать нагрузку на постобработку.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Условие: семейство задач уже проверено на фильтрацию, а вызывающая сторона проверяет &lt;code&gt;content_filter&lt;/code&gt;, пустое тело и отсутствие обязательных полей.&lt;/p&gt;

&lt;h3&gt;
  
  
  Opus 5 как fallback с более широким покрытием
&lt;/h3&gt;

&lt;p&gt;Подходит для:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;непредсказуемых типов входных данных;&lt;/li&gt;
&lt;li&gt;code review, строгого JSON, сложной физики и других сценариев, где нужно более широкое покрытие задач;&lt;/li&gt;
&lt;li&gt;случаев, когда после фильтрации Fable 5 нужно автоматически восстановить пользовательский запрос.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opus 5 тоже нельзя оставлять без проверки. Аномалия с приветствием в этом тесте показывает, что HTTP 200 и &lt;code&gt;stop&lt;/code&gt; все равно могут не содержать бизнес-ответа.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI-compatible пример на Python
&lt;/h3&gt;

&lt;p&gt;Пример ниже сначала вызывает Fable 5, а при фильтрации, пустом теле или провале acceptance check переключается на Opus 5; если Opus по-прежнему возвращает только приветствие, выполняется еще один retry.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cn.crazyrouter.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;valid_answer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;normalized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hi! how can i help&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;term&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;normalized&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;term&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
        &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;finish_reason&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;routed_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attempts&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attempts&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;finish_reason&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;finish_reason&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content_filter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;valid_answer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No model produced a valid business answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;routed_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Return a JSON incident summary with keys total, failed, recovered.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;total&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;recovered&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В production-реализации также стоит записывать model, response ID, &lt;code&gt;finish_reason&lt;/code&gt;, общую задержку и причину провала acceptance check. Только так можно отличить ошибку вычисления, обрезанный вывод, content-фильтрацию и потерю входного контекста при маршрутизации, а не складывать все в расплывчатую категорию «модель не справилась».&lt;/p&gt;

&lt;p&gt;Если вы проектируете multi-model-инфраструктуру, можно также посмотреть материалы о &lt;a href="https://crazyrouter.com/zh/blog/ai-api-gateway-vs-aggregator-vs-direct-model-apis" rel="noopener noreferrer"&gt;различиях между AI API Gateway, агрегатором и прямыми model API&lt;/a&gt;, а также &lt;a href="https://crazyrouter.com/zh/blog/kimi-k3-opus48-capability-efficiency-benchmark-20260719" rel="noopener noreferrer"&gt;семимерный тест Kimi K3 vs Opus 4.8&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Финальная рекомендация
&lt;/h2&gt;

&lt;p&gt;Самый ценный вывод этого теста не в том, кто набрал больше очков, а в том, что формы отказа у двух моделей разные:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Преимущество Fable 5 — более высокая скорость и более короткие ответы в общих успешных задачах; риск — стабильное срабатывание фильтрации на части обычных бизнес-промптов.&lt;/li&gt;
&lt;li&gt;Преимущество Opus 5 — покрытие всех задач после retry; риск — редкое возвращение приветствия, не связанного с реальным входом.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Поэтому Fable 5 стоит ставить первой на уже проверенных высокочастотных задачах, Opus 5 — использовать как fallback с более широким покрытием, а на обеих ветках выполнять проверку содержимого на уровне задачи. Так результаты сравнения моделей превращаются в реальную надежность, а не остаются строкой в рейтинговой таблице.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=claude_opus5_fable5_benchmark_20260725&amp;amp;utm_content=claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ru__body_cta&amp;amp;utm_term=claude+model+routing" rel="noopener noreferrer"&gt;Создать API Key и воспроизвести эту двухмодельную маршрутизацию&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Opus 5 точно сильнее Claude Fable 5?
&lt;/h3&gt;

&lt;p&gt;Из этой небольшой выборки нельзя сделать вывод, что она сильнее во всех задачах. Обе модели прошли математику, ограничения, статистическую коррекцию и дизайн эксперимента; Fable 5 была быстрее и короче, а Opus 5 дала более полное покрытие задач. Выбор должен опираться на success rate для конкретных задач, а не на название модели.&lt;/p&gt;

&lt;h3&gt;
  
  
  Подходит ли Claude Fable 5 для production?
&lt;/h3&gt;

&lt;p&gt;Подходит для задач, прошедших regression-тестирование. В этом тесте она корректно и быстро справилась с несколькими reasoning-задачами, но code review и JSON-инцидент несколько раз подряд вызвали фильтрацию. Перед запуском нужно измерить filter rate на реальных промптах и настроить fallback на Opus 5 или другую модель.&lt;/p&gt;

&lt;h3&gt;
  
  
  Почему HTTP 200 все равно считается провалом?
&lt;/h3&gt;

&lt;p&gt;HTTP 200 означает только то, что API завершил ответ. Пустое тело, &lt;code&gt;finish_reason=content_filter&lt;/code&gt;, обрезанный вывод или ответ в виде одного приветствия не решают бизнес-задачу. Production-метрики должны считать «долю ответов, прошедших acceptance check», а не только HTTP success rate.&lt;/p&gt;

&lt;h3&gt;
  
  
  Почему returned model равен &lt;code&gt;anthropic/claude-fable-5&lt;/code&gt;?
&lt;/h3&gt;

&lt;p&gt;В запросе использовался &lt;code&gt;claude-fable-5&lt;/code&gt;, а returned model в ответе стабильно был &lt;code&gt;anthropic/claude-fable-5&lt;/code&gt; с provider-префиксом. Это можно считать нормализованным alias; одного изменения префикса недостаточно, чтобы утверждать, что модель была подменена.&lt;/p&gt;

&lt;h3&gt;
  
  
  Можно ли напрямую сравнить долларовую стоимость двух моделей?
&lt;/h3&gt;

&lt;p&gt;В этом тесте — нет. В ответах Fable 5 было поле cost, а для Opus 5 не было поля в той же методике. Корректное сравнение стоимости должно брать данные из единых billing-логов и считать метрику «стоимость результата, прошедшего acceptance check».&lt;/p&gt;

&lt;h3&gt;
  
  
  Сколько повторов нужно сделать перед запуском?
&lt;/h3&gt;

&lt;p&gt;Для каждого ключевого семейства задач рекомендуется минимум 20–50 повторов, с покрытием нормальных входов, граничных входов, длинных входов и входов, которые потенциально могут вызвать фильтрацию. Как минимум фиксируйте task success rate, filter rate, долю пустых ответов, truncation rate, P50/P95/P99 задержки и стоимость.&lt;/p&gt;

&lt;h3&gt;
  
  
  Как начать тестирование?
&lt;/h3&gt;

&lt;p&gt;Используйте &lt;code&gt;https://cn.crazyrouter.com/v1&lt;/code&gt; как OpenAI-compatible base URL и по очереди вызывайте &lt;code&gt;claude-opus-5&lt;/code&gt; и &lt;code&gt;claude-fable-5&lt;/code&gt;. Зафиксируйте промпты и параметры, сохраняйте сырые ответы, а затем через локальные assertions или структурную валидацию проверяйте, действительно ли задача выполнена.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=claude_opus5_fable5_benchmark_20260725&amp;amp;utm_content=claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ru__final_cta&amp;amp;utm_term=claude+api+benchmark" rel="noopener noreferrer"&gt;Начать собственный двухмодельный тест Claude&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Claude Opus 5 vs Claude Fable 5：実 API での 7 タスク検証と本番ルーティングの提案</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Sun, 26 Jul 2026 14:57:47 +0000</pubDate>
      <link>https://dev.to/metaviiii/claude-opus-5-vs-claude-fable-5shi-api-deno-7-tasukujian-zheng-toben-fan-ruteingunoti-an-3fof</link>
      <guid>https://dev.to/metaviiii/claude-opus-5-vs-claude-fable-5shi-api-deno-7-tasukujian-zheng-toben-fan-ruteingunoti-an-3fof</guid>
      <description>&lt;h1&gt;
  
  
  Claude Opus 5 vs Claude Fable 5：実 API での 7 タスク検証と本番ルーティングの提案
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkox5n85b2n7dfobvhmm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwkox5n85b2n7dfobvhmm.png" alt="Claude Opus 5 と Claude Fable 5 の実 API 比較" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Claude Opus 5 と Claude Fable 5 は、どちらを選ぶべきでしょうか。成功した 1 回の回答だけを見れば、どちらのモデルも見栄えのよい数学的導出を書けます。しかし本番体験を左右するのは、多くの場合それとは別の 3 点です。&lt;strong&gt;タスクを安定して完了できるか、レイテンシが対話用途に合うか、失敗後に自動復旧できるか&lt;/strong&gt;です。&lt;/p&gt;

&lt;p&gt;私たちは 2026 年 7 月 25 日、同じ OpenAI-compatible API を使い、同一のプロンプトとパラメータで、2 つのモデルに対して 7 種類のタスクをテストしました。結果は「大きいモデルほど常に優れている」という単純な話にはなりませんでした。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;claude-fable-5&lt;/code&gt; は、両モデルが成功したタスクではより高速で、出力も簡潔でした。&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;claude-opus-5&lt;/code&gt; は、最終的に 7 種類すべてのタスクをカバーしました。&lt;/li&gt;
&lt;li&gt;Fable 5 は、通常のコードレビューとインシデント JSON のプロンプトで連続して &lt;code&gt;content_filter&lt;/code&gt; を発生させました。&lt;/li&gt;
&lt;li&gt;Opus 5 は、物理問題で最初の 2 回は HTTP 200 を返したにもかかわらず、無関係な挨拶を 1 文返しただけで、3 回目にようやく正常に完了しました。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;つまり、本番でのモデル選定は 1 つのモデル ID だけに依存すべきではありません。より堅実なのは、&lt;strong&gt;まずタスク種別ごとに主モデルを選び、そのうえで内容検収、リトライ、モデルフォールバックによって異常系を包み込む&lt;/strong&gt;方法です。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=claude_opus5_fable5_benchmark_20260725&amp;amp;utm_content=claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ja__hero_cta&amp;amp;utm_term=claude+opus+5+vs+fable+5" rel="noopener noreferrer"&gt;同じ API で Opus 5 と Fable 5 をテストする&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  要点
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;質問&lt;/th&gt;
&lt;th&gt;今回の回答&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;より多くのタスクをカバーしたのはどちらか？&lt;/td&gt;
&lt;td&gt;Opus 5：本テストでは 6/7、リトライ後は 7/7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;より高速だったのはどちらか？&lt;/td&gt;
&lt;td&gt;両方がしたタスクでは、Fable 5 の P50 総レイテンシが約 24% 低い&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;出力がより簡潔だったのはどちらか？&lt;/td&gt;
&lt;td&gt;Fable 5。平均可視出力 token が約 43% 少ない&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;コードレビューと厳密な JSON により適していたのはどちらか？&lt;/td&gt;
&lt;td&gt;今回は Opus 5 のほうが安定。Fable 5 は 2 問で連続 3 回フィルタされた&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP 200 だけを見ればよいか？&lt;/td&gt;
&lt;td&gt;いいえ。両モデルとも HTTP 200 だがタスク未完了のケースがあった&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;推奨ルーティングは？&lt;/td&gt;
&lt;td&gt;検証済みタスクでは Fable 5 を優先し、フィルタまたは空本文なら Opus 5 へフォールバック。Opus が異常な挨拶を返した場合は自動リライ&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;入力タイプが予測しにくい場合、または通常の業務プロンプトがフィルタされるリスクをできるだけ避けたい場合は、Opus 5 を優先的に検討すべきです。一方、タスク構造が固定され、すでに回帰テスト済みで、対話速度と出力長を重視する場合は、Fable 5 を最初の呼び出し先にするのが適しています。&lt;/p&gt;

&lt;h2&gt;
  
  
  テスト方法
&lt;/h2&gt;

&lt;p&gt;テスト前にモデル一覧 API を呼び出し、2 つの正確なモデル ID が見えていることを確認しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET https://cn.crazyrouter.com/v1/models

claude-opus-5
claude-fable-5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;すべての正式リクエストは同じ endpoint を使いました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;共通条件は次のとおりです。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;同一 system prompt
同一 user prompt
temperature = 1
各問題で同一の max_tokens を使用
stream = true
ツールとインターネット接続は無効
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;共通の system prompt は、正確に回答し、指定された出力形式に従うことだけを求めています。特定モデルに有利なロール設定は加えていません。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Answer the user's task accurately. Follow every requested output format and length constraint exactly. Do not use external tools.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;記録したのは最終的な本文だけではありません。以下も記録しました。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP ステータスと &lt;code&gt;finish_reason&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;response ID と returned model&lt;/li&gt;
&lt;li&gt;最初の可視 token までの時間と総レイテンシ&lt;/li&gt;
&lt;li&gt;completion tokens、reasoning tokens&lt;/li&gt;
&lt;li&gt;可視回答がタスクの検収条件を満たしたか&lt;/li&gt;
&lt;li&gt;異常リクエストが同一パラメータのリトライで復旧できるか&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;これは Crazyrouter ゲートウェイのエンドツーエンドテストであり、単一の上流チャネルを指定した実験ではありません。したがって結果には、モデルの挙動、上流のフィルタリング、ゲートウェイのルーティング、その時点でのチャネル状態が同時に反映されています。「ユーザーがこの API 経由で実際に何に遭遇するか」を答えるには適していますが、Claude ファミリーの純粋なオフライン能力ランキングとして扱うべきものではありません。&lt;/p&gt;

&lt;p&gt;モデルテストで &lt;code&gt;finish_reason&lt;/code&gt; と出力予算を記録すべき理由を知りたい場合は、&lt;a href="https://crazyrouter.com/zh/blog/claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026" rel="noopener noreferrer"&gt;Claude Fable 5 vs GPT-5.5 の max_tokens 再テスト&lt;/a&gt;も参照してください。&lt;/p&gt;

&lt;h2&gt;
  
  
  7 項目の結果サマリー
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6gvp4vxp4lwy09yknwxc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6gvp4vxp4lwy09yknwxc.png" alt="Claude Opus 5 と Claude Fable 5 の 7 タスク結果マトリクス" width="800" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;テスト観点&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;Claude Fable 5&lt;/th&gt;
&lt;th&gt;本番への影響&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;厳密な数学：マルコフ連鎖&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;どちらも正しい一次モーメント、二次モーメント、分散を得た&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;数値物理：結合振動子&lt;/td&gt;
&lt;td&gt;最初の 2 回は挨拶のみ、3 回目で合格&lt;/td&gt;
&lt;td&gt;初回で合格&lt;/td&gt;
&lt;td&gt;Opus には内容レベルの検収とリトライが必要&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;制約探索&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;どちらも一意解を見つけた&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;統計の誤り訂正&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;どちらも誤った前提を拒否し、正しい上界を提示した&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python コードレビュー&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;連続 3 回 &lt;code&gt;content_filter&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Fable は現時点では、回帰未検証のコードレビュー流量には適さない&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;厳密 JSON のインシデント要約&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;連続 3 回 &lt;code&gt;content_filter&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Fable は現時点では、この種の本番インシデント文面には適さない&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;実験設計&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;合格&lt;/td&gt;
&lt;td&gt;どちらも非対応サンプルと難易度の交絡を識別できた&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;本テストにおける 1 回目での納品率は次のとおりです。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Opus 5: 6 / 7 = 85.7%
Claude Fable 5: 5 / 7 = 71.4%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;リトライを含めると次のようになります。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Claude Opus 5: 7 / 7
Claude Fable 5: 5 / 7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ここでいう「納品」はリクエストの成功ではなく、業務側が問題要件を満たす可視回答を受け取れたことを指します。HTTP 200、モデル名、token usage が存在していても、本文が空、フィルタされた、または挨拶しか返らなかった場合は、タスク失敗として扱います。&lt;/p&gt;

&lt;h2&gt;
  
  
  数学、制約、統計：どちらのモデルも信頼できる
&lt;/h2&gt;

&lt;p&gt;数学問題では 3 状態のマルコフ連鎖を使い、状態 1 から初めて状態 3 に到達するまでの待ち時間について、次を計算するよう求めました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E1[τ]
E1[τ²]
Var1(τ)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;どちらのモデルも次を返しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E1[τ] = 5
E1[τ²] = 43
Var1(τ) = 18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;また、両方とも一時状態行列 &lt;code&gt;Q&lt;/code&gt; と一次・二次モーメントの方程式を書いていました。この問題では、「最終的な数値は正しいが導出が一貫しない」という状況は発生しませんでした。&lt;/p&gt;

&lt;p&gt;制約探索では、A、B、C、D、E の 5 つの講演を 5 つの時間枠に配置し、直後に隣接、前後関係、間隔、非隣接といった条件を同時に満たすよう求めました。どちらも一意の順序を得ました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;A, C, E, B, D
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;統計の誤り訂正問題では、あえて誤った結論を与えました。「平均が 10、分散が 4 なので &lt;code&gt;P(X≥14)=0.5&lt;/code&gt;」というものです。両モデルとも、二次までのモーメントだけでは尾確率を一意に決定できないと指摘し、片側 Chebyshev/Cantelli 不等式により次を得ました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;P(X &amp;gt;= 14) &amp;lt;= 0.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;この 3 種類のタスクから分かるのは、Fable 5 の速度面の優位が、基礎的な推論の正確性を犠牲にしたものではないということです。明確で短く、検収しやすい数学・論理タスクでは、より軽い第一候補として十分に使えます。&lt;/p&gt;

&lt;p&gt;以前の &lt;a href="https://crazyrouter.com/zh/blog/claude-fable-5-vs-claude-sonnet-5-api-test-2026" rel="noopener noreferrer"&gt;Claude Fable 5 vs Claude Sonnet 5 API テスト&lt;/a&gt; と &lt;a href="https://crazyrouter.com/zh/blog/glm-52-vs-claude-fable-5-output-budget-test-2026" rel="noopener noreferrer"&gt;GLM-5.2 vs Fable 5 出力予算テスト&lt;/a&gt; でも示したように、あるモデルが本番に適しているかを判断するには、正確性、出力予算、納品形態を合わせて必要があります。&lt;/p&gt;

&lt;h2&gt;
  
  
  物理問題：Fable は初回完了、Opus は 3 回目で復旧
&lt;/h2&gt;

&lt;p&gt;物理問題では、接地減衰と結合減衰を持つ 2 自由度振動子を扱い、2 つの非減衰固有振動数と、&lt;code&gt;ω=8 rad/s&lt;/code&gt; における 2 つの質量の複素周波数応答を計算するよう求めました。&lt;/p&gt;

&lt;p&gt;参照値は次のとおりです。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ω1 = 10.0204 rad/s
ω2 = 16.2149 rad/s
|X1| = 0.14929 m, phase = -12.15°
|X2| = 0.07174 m, phase = -13.90°
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fable 5 は初回で正しい結果をすべて返しました。一方、Opus 5 の最初の 2 回の呼び出しでは、本番チームが特に注意すべき異常が発生しました。インターフェースは HTTP 200 と &lt;code&gt;finish_reason=stop&lt;/code&gt; を返しましたが、本文は次の 1 文だけでした。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hi! How can I help you today?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;この 2 回のレスポンスでは prompt tokens がどちらも 10 で、実際の入力とは明らかに一致していませんでした。同じリクエストを 3 回目に実行したところ、Opus 5 は 34.901 秒後に完全な回答を返し、6 つの数値はすべてチェックを通過しました。&lt;/p&gt;

&lt;p&gt;したがって、この種の異常は「物理問題を計算ミスした」と分類するべきではなく、「リクエストコンテキストが正常に処理されなかった」と分類すべきです。最も簡単な防御策は、人間がログを見ることではなく、呼び出し側でタスクレベルの検収を設定することです。回答に &lt;code&gt;ω1&lt;/code&gt;、&lt;code&gt;ω2&lt;/code&gt;、&lt;code&gt;X1&lt;/code&gt;、&lt;code&gt;X2&lt;/code&gt; が含まれていなければリトライします。&lt;/p&gt;

&lt;h2&gt;
  
  
  コードと厳密 JSON：Fable のフィルタリングが今回最大の差分
&lt;/h2&gt;

&lt;p&gt;コード問題では、Python の DFS サイクル検出器をレビューさせました。バグはごく一般的なものです。ノードの DFS 完了後に &lt;code&gt;visiting&lt;/code&gt; 集合から削除していないため、すでに処理済みのノードがまだ再帰スタック上にあると誤認され、DAG に対してサイクルを誤検出します。&lt;/p&gt;

&lt;p&gt;Opus 5 は最小修正を正しく指摘しました。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;visiting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;discard&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;visited&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;node&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fable 5 はコード分析を返さず、&lt;code&gt;finish_reason=content_filter&lt;/code&gt; で本文は空でした。system prompt の偏りや偶発的なルーティングを除外するため、3 回確認しました。元のテスト、クリーンな system prompt での再テスト、単独問題としての独立リトライのいずれも、結果は &lt;code&gt;content_filter&lt;/code&gt; でした。&lt;/p&gt;

&lt;p&gt;厳密 JSON 問題にも危険な内容は含まれていません。入力には、15 分間のリクエスト総数、失敗数、チャネル別要因、リトライで復旧した数、対応アクションだけが含まれており、出力として JSON オブジェクトを求めました。Opus 5 が返した JSON はそのままパースできましたが、Fable 5 は同様に連続 3 回フィルタされました。&lt;/p&gt;

&lt;p&gt;この 2 種類の失敗が示しているのは、&lt;strong&gt;安全フィルタリングそのものもモデル API の本番能力の一部である&lt;/strong&gt;ということです。通常のコードレビューやインシデント振り返りのテキストで安定して誤フィルタが発生するなら、たとえ数学問題で高速でも、すべての業務トラフィックをそのモデルに任せることはできません。&lt;/p&gt;

&lt;p&gt;2 回の独立リトライの response ID は次のとおりです。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;コードレビュー：gen-1784915384-vGI1PtuNXZG0IJ2YiaCz
インシデント JSON：gen-1784915390-buOWZQSnqjgHeJ6nUogF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  レイテンシと出力長
&lt;/h2&gt;

&lt;p&gt;失敗リクエストの短い処理時間を「速度優位」として数えないため、ここでは両モデルが成功した 4 つの共通タスク、すなわち数学、制約探索、統計の誤り訂正、実験設計だけを比較します。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6xp50prlj1xx3z0jkif4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6xp50prlj1xx3z0jkif4.png" alt="Claude Opus 5 と Claude Fable 5 の共通成功タスクにおけるレイテンシ" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;指標&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;Claude Fable 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;P50 総レイテンシ&lt;/td&gt;
&lt;td&gt;10.729 s&lt;/td&gt;
&lt;td&gt;8.147 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P50 最初の可視 token&lt;/td&gt;
&lt;td&gt;8.376 s&lt;/td&gt;
&lt;td&gt;6.974 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;平均可視 completion tokens&lt;/td&gt;
&lt;td&gt;797.5&lt;/td&gt;
&lt;td&gt;452.3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;この小さなサンプルでは、Fable 5 の P50 総レイテンシは約 24% 低く、最初の可視 token は約 17% 早く、回答は約 43% 短くなりました。チャット、バッチ要約、高頻度の構造化タスクでは、これらの差はユーザーの待ち時間と下流処理量に直接影響します。&lt;/p&gt;

&lt;p&gt;ただし、4 問の中央値を SLA として書くべきではありません。上流の負荷、キャッシュ、ルーティング、レート制限はいずれもレイテンシを変化させます。本番投入前には、自社の業務プロンプトで 20–50 回繰り返し、P50、P95、P99 と、検収を通過した結果 1 件あたりの実コストを集計すべきです。&lt;/p&gt;

&lt;p&gt;Fable 5 の本テストレスポンスには &lt;code&gt;cost&lt;/code&gt; フィールドがあり、7 回の合計は約 &lt;code&gt;$0.24596&lt;/code&gt; でした。Opus 5 の usage には同じ基準の &lt;code&gt;cost&lt;/code&gt; が提供されていなかったため、本記事ではドル価格での勝敗判断は行いません。フィールドがないことは無料を意味せず、未検証の価格で補完すべきでもありません。&lt;/p&gt;

&lt;h2&gt;
  
  
  推奨する本番ルーティング戦略
&lt;/h2&gt;

&lt;p&gt;単一モデル呼び出しは最も実装しやすい一方で、モデルのあらゆる偶発的な挙動をそのままエンドユーザーに露出させます。今回の 2 モデルについては、次のように役割を分けるのがより合理的です。&lt;/p&gt;

&lt;h3&gt;
  
  
  Fable 5 を第一候補にする
&lt;/h3&gt;

&lt;p&gt;適している用途：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;回帰テスト済みの数学、制約推論、短い要約&lt;/li&gt;
&lt;li&gt;最初の token と全体レイテンシに敏感な対話&lt;/li&gt;
&lt;li&gt;回答長を抑え、後処理負荷を減らしたいタスク&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;前提として、対象タスク群でフィルタリングのテストが済んでおり、呼び出し側で &lt;code&gt;content_filter&lt;/code&gt;、空本文、必須フィールド欠落をチェックする必要があります。&lt;/p&gt;

&lt;h3&gt;
  
  
  Opus 5 を広範囲カバーのフォールバックにする
&lt;/h3&gt;

&lt;p&gt;適している用途：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;入力タイプが予測しにくい&lt;/li&gt;
&lt;li&gt;コードレビュー、厳密 JSON、複雑な物理など、より広いタスクカバレッジが必要な場面&lt;/li&gt;
&lt;li&gt;Fable 5 がフィルタされた後、ユーザーリクエストを自動復旧したい場面&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Opus 5 も無検査で使うべきではありません。今回の挨拶異常が示すとおり、HTTP 200 と &lt;code&gt;stop&lt;/code&gt; であっても、業務上の回答が含まれていないことがあります。&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI-compatible Python の例
&lt;/h3&gt;

&lt;p&gt;次の例では、まず Fable 5 を呼び出し、フィルタ、空本文、検収失敗が発生した場合に Opus 5 へフォールバックします。Opus でも挨拶しか返らない場合は、さらに 1 回リトライします。&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cn.crazyrouter.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;valid_answer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...])&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;bool&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;normalized&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;strip&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;normalized&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hi! how can i help&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;term&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;normalized&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;term&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
    &lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
        &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;choice&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;content&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;choice&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;finish_reason&lt;/span&gt;


&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;routed_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;tuple&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;attempts&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-fable-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;claude-opus-5&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)):&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;_&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attempts&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;finish_reason&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_model&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;finish_reason&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content_filter&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nf"&gt;valid_answer&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;
    &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No model produced a valid business answer&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;


&lt;span class="n"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;routed_completion&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Return a JSON incident summary with keys total, failed, recovered.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;required_terms&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;total&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;failed&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;'"&lt;/span&gt;&lt;span class="s"&gt;recovered&lt;/span&gt;&lt;span class="sh"&gt;"'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;本番実装ではさらに、model、response ID、&lt;code&gt;finish_reason&lt;/code&gt;、総レイテンシ、検収失敗理由を記録すべきです。そうすることで、モデルの計算ミス、出力打ち切り、内容フィルタリング、ルーティングによる入力欠落を区別できます。これらをすべて曖昧な「モデル失敗」にまとめてしまうべきではありません。&lt;/p&gt;

&lt;p&gt;マルチモデル基盤を計画している場合は、&lt;a href="https://crazyrouter.com/zh/blog/ai-api-gateway-vs-aggregator-vs-direct-model-apis" rel="noopener noreferrer"&gt;AI API Gateway、アグリゲーター、モデル API 直結の違い&lt;/a&gt; と、&lt;a href="https://crazyrouter.com/zh/blog/kimi-k3-opus48-capability-efficiency-benchmark-20260719" rel="noopener noreferrer"&gt;Kimi K3 vs Opus 4.8 の 7 次元テスト&lt;/a&gt; も参考になります。&lt;/p&gt;

&lt;h2&gt;
  
  
  最終的な提案
&lt;/h2&gt;

&lt;p&gt;今回最も価値のある結論は、どちらが高得点だったかではなく、2 つのモデルの失敗形態が異なるという点です。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fable 5 の強みは、共通タスクでより高速かつ短いことです。リスクは、一部の通常業務プロンプトが安定してフィルタを発生させることです。&lt;/li&gt;
&lt;li&gt;Opus 5 の強みは、リトライ後にすべてのタスクをカバーしたことです。リスクは、実入力と無関係な挨拶を偶発的に返すことです。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;したがって、検証済みの高頻度タスクでは Fable 5 を前段に置き、Opus 5 をより広範囲のフォールバックとして使い、両方の経路で内容レベルの検収を行うことを推奨します。そうして初めて、モデル比較の結果を単なるランキングではなく、実際の信頼性へ変換できます。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=claude_opus5_fable5_benchmark_20260725&amp;amp;utm_content=claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ja__body_cta&amp;amp;utm_term=claude+model+routing" rel="noopener noreferrer"&gt;API Key を作成して、この 2 モデルルーティングを再現する&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Claude Opus 5 は Claude Fable 5 より必ず強いのですか？
&lt;/h3&gt;

&lt;p&gt;この小さなサンプルから「すべてのタスクでより強い」とは結論できません。数学、制約、統計の誤り訂正、実験設計ではどちらも合格しました。Fable 5 はより高速で短く、Opus 5 はタスクカバレッジがより完全でした。選択はモデル名ではなく、具体的なタスク成功率に基づいて行うべきです。&lt;/p&gt;

&lt;h3&gt;
  
  
  Claude Fable 5 は本番環境に適していますか？
&lt;/h3&gt;

&lt;p&gt;回帰テスト済みのタスクには適しています。今回、複数の推論タスクでは正確かつ比較的高速でしたが、コードレビューとインシデント JSON では連続してフィルタを発生させました。本番投入前には実際のプロンプトでフィルタ率を測定し、Opus 5 または他モデルへのフォールバックを設定すべきです。&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP 200 でも失敗とみなすのはなぜですか？
&lt;/h3&gt;

&lt;p&gt;HTTP 200 は、インターフェースがレスポンスを完了したことだけを示します。本文が空、&lt;code&gt;finish_reason=content_filter&lt;/code&gt;、出力が途中で切れている、または挨拶だけを返す場合、業務タスクは完了していません。本番指標では HTTP 成功率だけでなく、「検収通過率」を集計すべきです。&lt;/p&gt;

&lt;h3&gt;
  
  
  returned model が &lt;code&gt;anthropic/claude-fable-5&lt;/code&gt; なのはなぜですか？
&lt;/h3&gt;

&lt;p&gt;リクエストでは &lt;code&gt;claude-fable-5&lt;/code&gt; を使用し、レスポンス内の returned model は provider プレフィックス付きの &lt;code&gt;anthropic/claude-fable-5&lt;/code&gt; で安定していました。これは正規化されたエイリアスと見なせます。プレフィックスの変化だけでは、モデルが置き換わった証拠にはなりません。&lt;/p&gt;

&lt;h3&gt;
  
  
  2 つのモデルのドルコストを直接比較できますか？
&lt;/h3&gt;

&lt;p&gt;今回の結果だけではできません。Fable 5 のレスポンスには cost フィールドがありましたが、Opus 5 には同じ基準のフィールドがありませんでした。厳密なコスト比較は、統一された課金ログから取得し、「検収を通過した結果 1 件あたりのコスト」を指標にすべきです。&lt;/p&gt;

&lt;h3&gt;
  
  
  本番投入を判断する前に何回繰り返すべきですか？
&lt;/h3&gt;

&lt;p&gt;各コアタスク群について少なくとも 20–50 回の繰り返しを推奨します。通常入力、境界入力、長い入力、フィルタを誘発しやすい入力を含めてください。少なくとも、タスク成功率、フィルタ率、空本文率、打ち切り率、P50/P95/P99 レイテンシ、コストを記録すべきです。&lt;/p&gt;

&lt;h3&gt;
  
  
  どうやってテストを始めればよいですか？
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;https://cn.crazyrouter.com/v1&lt;/code&gt; を OpenAI-compatible base URL として使い、&lt;code&gt;claude-opus-5&lt;/code&gt; と &lt;code&gt;claude-fable-5&lt;/code&gt; をそれぞれ呼び出します。プロンプトとパラメータを固定し、元レスポンスを保存したうえで、ローカルのアサーションまたは構造検証によってタスクが本当に完了したかを判定します。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=claude_opus5_fable5_benchmark_20260725&amp;amp;utm_content=claude-opus-5-vs-claude-fable-5-api-benchmark-2026-ja__final_cta&amp;amp;utm_term=claude+api+benchmark" rel="noopener noreferrer"&gt;Claude 2 モデルのテストを始める&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Kimi K3 vs GPT-5.6-SOL: 수학·물리·프로그래밍 고난도 실측 비교</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Sat, 18 Jul 2026 01:18:01 +0000</pubDate>
      <link>https://dev.to/metaviiii/kimi-k3-vs-gpt-56-sol-suhagmulripeurogeuraeming-gonando-silceug-bigyo-kjb</link>
      <guid>https://dev.to/metaviiii/kimi-k3-vs-gpt-56-sol-suhagmulripeurogeuraeming-gonando-silceug-bigyo-kjb</guid>
      <description>&lt;h1&gt;
  
  
  Kimi K3 vs GPT-5.6-SOL: 수학·물리·프로그래밍 고난도 실측 비교
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqcy6bhsrcy6nd1s4g0bw.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqcy6bhsrcy6nd1s4g0bw.webp" alt="ko benchmark overview" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;이번에는 단순 질의응답이 아니라, 연속적인 추론이 필요한 문제 3개를 고정해 테스트했다. 패턴 중첩과 2차 모멘트가 포함된 확률 문제, 도르래의 회전 관성과 줄 이완 전환이 들어간 물리 문제, 그리고 클로저, 여러 날짜의 용량, 3단계 tie-break에 의존하는 Python 문제다. 두 모델은 같은 인터페이스, 같은 프롬프트, 비슷한 출력 상한을 사용했으며, 도구와 웹 접속은 사용하지 않았다.&lt;/p&gt;

&lt;p&gt;먼저 결론부터 정리하면 다음과 같다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gpt-5.6-sol&lt;/code&gt;은 세 문제 모두에서 완전한 가시 응답을 반환했고, 수학과 물리의 기준 결과도 정확했다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kimi-k3&lt;/code&gt;는 1차 테스트의 &lt;code&gt;6500&lt;/code&gt; token 상한에서 수학과 물리 모두 &lt;code&gt;finish_reason=length&lt;/code&gt;로 종료되었고, 보이는 답변은 비어 있었다. 수학 문제는 상한을 &lt;code&gt;10000&lt;/code&gt;으로 올린 뒤에도 잘렸다. 프로그래밍 문제는 약 245초 후 읽기 타임아웃이 발생했다.&lt;/li&gt;
&lt;li&gt;GPT-5.6-SOL의 프로그래밍 구현은 별도로 보강한 의존성 클로저, 용량, tie-break, 잘못된 의존성, 순환 의존성 검사를 통과했다. 다만 모델이 자체적으로 붙인 첫 번째 assert 예제의 기대값은 틀려 있었다. 즉 “코드 본문이 맞는지”와 “예제 테스트가 모두 맞는지”는 분리해서 검수해야 한다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 글의 지연 시간은 이번 요청에서 관측된 값일 뿐, 고정 SLA를 의미하지 않는다. 1차 병렬 요청에서 GPT의 수학 및 물리 요청은 HTTP 408을 받은 적이 있었고, 이후 순차 재시도로 바꾸었다. 따라서 속도는 호출 경험을 관찰하는 용도로만 사용하며, 절대적인 순위를 주장하는 근거로 삼지 않는다.&lt;/p&gt;

&lt;h2&gt;
  
  
  테스트 설정
&lt;/h2&gt;

&lt;p&gt;테스트 시간은 베이징 시간 &lt;code&gt;2026-07-17&lt;/code&gt;부터 &lt;code&gt;2026-07-18&lt;/code&gt;까지였고, 인터페이스는 다음과 같다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
model: kimi-k3 / gpt-5.6-sol
temperature: 0.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;1차 테스트에서는 공통으로 수학과 물리에 &lt;code&gt;max_tokens=6500&lt;/code&gt;, 프로그래밍에 &lt;code&gt;max_tokens=7500&lt;/code&gt;을 사용했다. 각 문제마다 모델에 검증 가능한 유도 과정 또는 실행 가능한 코드를 요구했으며, &lt;code&gt;finish_reason&lt;/code&gt;, completion/reasoning token, 요청 지연 시간, 수치 정확성, 코드가 Python 3.11에서 독립 실행 가능한지를 기록했다.&lt;/p&gt;

&lt;h2&gt;
  
  
  결과 요약표
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;작업&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;th&gt;판정&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;수학: HHTH의 기대값과 분산&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 186.98 s, 6500 tokens; 보이는 내용 없음&lt;/td&gt;
&lt;td&gt;순차 재시도 &lt;code&gt;stop&lt;/code&gt;, 236.07 s, 6872 tokens&lt;/td&gt;
&lt;td&gt;GPT는 완전 답변; Kimi는 1차에서 답변 형성 실패&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;물리: 도르래, 바닥 충돌, 스프링&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 202.05 s, 6500 tokens; 보이는 내용 없음&lt;/td&gt;
&lt;td&gt;순차 재시도 &lt;code&gt;stop&lt;/code&gt;, 156.29 s, 4501 tokens&lt;/td&gt;
&lt;td&gt;GPT는 완전하고 수치도 정확&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;프로그래밍: 의존성 클로저 배낭 문제&lt;/td&gt;
&lt;td&gt;245.54 s 후 &lt;code&gt;TimeoutError&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;stop&lt;/code&gt;, 87.96 s, 4514 tokens&lt;/td&gt;
&lt;td&gt;GPT 코드는 실행 가능; Kimi는 완전한 코드 미반환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi 수학 재측정&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 286.99 s, 10000 tokens&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;예산을 늘려도 종료되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Kimi의 수학 및 물리 요청에서 인터페이스가 보고한 reasoning token은 각각 &lt;code&gt;6497&lt;/code&gt;에 가까웠다. 수학 재측정의 reasoning token은 &lt;code&gt;9997&lt;/code&gt;에 가까웠다. 이는 Kimi에 추론 능력이 없다는 뜻이 아니라, 이 문제 프롬프트와 현재 라우팅 조건에서는 추론 예산이 쉽게 소진되어 호출자가 최종 답변을 받지 못할 수 있음을 보여준다.&lt;/p&gt;

&lt;h2&gt;
  
  
  수학 문제: 패턴 중첩은 기대값뿐 아니라 분산에도 영향을 준다
&lt;/h2&gt;

&lt;p&gt;문제는 다음과 같다. 앞면 확률 &lt;code&gt;p=3/5&lt;/code&gt;, 뒷면 확률 &lt;code&gt;q=2/5&lt;/code&gt;인 동전을 계속 던져 &lt;code&gt;HHTH&lt;/code&gt;가 처음 나타날 때까지의 시간 &lt;code&gt;T&lt;/code&gt;에 대해, 패턴 중첩을 허용할 때 &lt;code&gt;E[T]&lt;/code&gt;와 &lt;code&gt;Var(T)&lt;/code&gt;를 구한다.&lt;/p&gt;

&lt;p&gt;올바른 접두사 오토마톤 상태는 &lt;code&gt;S0=空前缀&lt;/code&gt;, &lt;code&gt;S1=H&lt;/code&gt;, &lt;code&gt;S2=HH&lt;/code&gt;, &lt;code&gt;S3=HHT&lt;/code&gt;, &lt;code&gt;S4=HHTH（吸收态）&lt;/code&gt;이다. 핵심 전이는 &lt;code&gt;S2 --H--&amp;gt; S2&lt;/code&gt;다. 이미 &lt;code&gt;HH&lt;/code&gt;가 나온 상태에서 다시 &lt;code&gt;H&lt;/code&gt;가 나오면 가장 긴 접미사는 여전히 &lt;code&gt;HH&lt;/code&gt;이므로, 이를 빈 상태로 잘못 되돌리면 안 된다.&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOL이 세운 1차 모멘트 방정식은 다음과 같다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;M0 = 1 + p M1 + q M0
M1 = 1 + p M2 + q M0
M2 = 1 + p M2 + q M3
M3 = 1 + q M0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이어서 2차 모멘트 방정식을 세우면 다음 결과를 얻는다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[T]   = 715/54       ≈ 13.2407407407
E[T²]  = 195335/729   ≈ 267.9492455418
Var(T) = 270115/2916  ≈ 92.6320301783
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;기대값은 경계 공식으로도 독립 검산할 수 있다. &lt;code&gt;HHTH&lt;/code&gt;의 비어 있지 않은 진경계는 한 글자 &lt;code&gt;H&lt;/code&gt;이므로 &lt;code&gt;E[T] = 1/p + 1/(p³q) = 715/54&lt;/code&gt;이다. GPT의 완전한 답변은 상태 전이, 2차 모멘트 전개, sanity check를 모두 포함했다. Kimi는 &lt;code&gt;6500&lt;/code&gt; 및 &lt;code&gt;10000&lt;/code&gt; 상한 모두에서 보이는 유도 과정을 출력하지 못했기 때문에, 이번 라운드에서는 수학적 정확성을 채점할 수 없고 “예산 내 미완료”로만 기록했다.&lt;/p&gt;

&lt;h2&gt;
  
  
  물리 문제: 바닥에 닿은 뒤에는 제약이 끊기므로 같은 에너지 방정식을 계속 적용하면 안 된다
&lt;/h2&gt;

&lt;p&gt;문제 설정은 다음과 같다. &lt;code&gt;m_A=4.0 kg&lt;/code&gt;가 &lt;code&gt;25°&lt;/code&gt;의 거친 경사면 위에 있고, &lt;code&gt;μ_k=0.18&lt;/code&gt;이다. &lt;code&gt;m_B=3.0 kg&lt;/code&gt;는 매달려 있다. 도르래는 &lt;code&gt;M_p=1.2 kg&lt;/code&gt;, &lt;code&gt;R=0.10 m&lt;/code&gt;이다. B가 &lt;code&gt;1.50 m&lt;/code&gt; 내려간 뒤 바닥에 닿고, 줄은 즉시 느슨해진다. A는 이후 경사면 위로 &lt;code&gt;0.10 m&lt;/code&gt; 더 올라가 &lt;code&gt;k=250 N/m&lt;/code&gt; 스프링에 닿는다. &lt;code&gt;g=9.8 m/s²&lt;/code&gt;이다.&lt;/p&gt;

&lt;p&gt;바닥에 닿기 전에는 줄이 팽팽하고 미끄러짐이 없으므로, 도르래의 등가 관성 질량은 &lt;code&gt;I/R²=(1/2)M_p=0.60 kg&lt;/code&gt;이다. 두 물체와 도르래 회전 방정식을 함께 풀면 다음을 얻는다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a  ≈ 0.847 m/s²
v1 ≈ 1.59 m/s
v2 ≈ 1.18 m/s
x  ≈ 0.0835 m = 8.35 cm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;바닥에 닿은 뒤에는 B의 속도가 지면과의 충돌로 바뀌고, A는 여전히 경사면 위쪽 방향의 속도를 가진다. 도르래도 계속 회전할 수 있다. 그러나 문제에서 줄이 즉시 느슨해진다고 명시했으므로, 이후에는 &lt;code&gt;v_A=v_B=Rω&lt;/code&gt;를 계속 사용할 수 없다. 그다음 단계는 A만 분석해야 한다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v2² = v1² - 2g(sinθ + μ_k cosθ)d
1/2 m_A v2² = 1/2 kx² + m_A g(sinθ + μ_k cosθ)x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOL은 차원, 스프링이 없을 때의 정지 거리, 스프링 에너지와 마찰/중력 손실의 합도 함께 점검했으며, 수치적으로도 일관적이었다. Kimi는 1차 테스트에서 보이는 답변을 형성하지 못했기 때문에 중간 모델링 품질을 비교할 수 없었다.&lt;/p&gt;

&lt;h2&gt;
  
  
  프로그래밍 문제: 알고리즘 본문은 독립 검사를 통과했지만, 모델이 붙인 예제에는 bug가 있었다
&lt;/h2&gt;

&lt;p&gt;프로그래밍 문제는 &lt;code&gt;optimize_release_plan(items, capacity_by_day, dependencies)&lt;/code&gt;를 구현하는 것이다. 매일의 용량, 설정되지 않은 날짜의 용량 0 처리, 직접 및 간접 의존성 클로저, 잘못된 의존성과 순환 의존성 검출, 그리고 &lt;code&gt;value → risk → 排序后的 id 列表&lt;/code&gt; 3단계 tie-break를 처리해야 한다. &lt;code&gt;items &amp;lt;= 18&lt;/code&gt;이므로 bitmask 완전 탐색은 합리적인 기준선이다.&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOL은 의존성 클로저 캐시와 &lt;code&gt;2^n&lt;/code&gt; 부분집합 열거를 사용했다. 코드를 추출해 Python 3.11에서 독립적으로 검사한 결과, 의존성 클로저, 여러 날짜 용량 예제, value/risk/id 3단계 tie-break, 설정되지 않은 날짜 용량, 존재하지 않는 의존성, 순환 의존성까지 총 6개 검사 모두를 통과했다.&lt;/p&gt;

&lt;p&gt;하지만 모델이 코드 끝에 붙인 첫 번째 assert는 실패했다. 모델은 &lt;code&gt;A -&amp;gt; B -&amp;gt; C&lt;/code&gt;를 작성해 놓고, 동시에 가치가 11인 &lt;code&gt;X&lt;/code&gt;도 넣었다. 주어진 용량에서 &lt;code&gt;B + C + X&lt;/code&gt;의 총가치는 13으로, &lt;code&gt;A + B + C&lt;/code&gt;의 12보다 높다. 따라서 함수가 &lt;code&gt;['B', 'C', 'X']&lt;/code&gt;를 반환하는 것이 맞고, assert를 &lt;code&gt;['A', 'B', 'C']&lt;/code&gt;로 쓴 것은 테스트 픽스처 오류다.&lt;/p&gt;

&lt;p&gt;이 지점은 꽤 상징적이다. 코드 문제에서는 함수 본문만 봐서도 안 되고, “assert 8개를 붙였으니 테스트가 믿을 만하다”고 가정해서도 안 된다. 모델이 생성한 테스트 데이터 역시 사람이나 기준 구현으로 다시 검산해야 한다. Kimi K3의 프로그래밍 요청은 약 245초 뒤 읽기 타임아웃이 발생해 완전한 코드를 받지 못했다.&lt;/p&gt;

&lt;h2&gt;
  
  
  종합 평가
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;차원&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;수학 완성도&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;6500/10000&lt;/code&gt; token 모두에서 잘려 검수 불가&lt;/td&gt;
&lt;td&gt;기대값, 2차 모멘트, 분산, sanity check까지 완전&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;물리 모델링&lt;/td&gt;
&lt;td&gt;1차 테스트에서 잘림&lt;/td&gt;
&lt;td&gt;도르래 관성, 줄 이완, 스프링 단계를 올바르게 처리&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;프로그래밍 산출물&lt;/td&gt;
&lt;td&gt;이번 라운드에서는 타임아웃&lt;/td&gt;
&lt;td&gt;코드 본문은 독립 검사 통과, 단 자체 assert 1개 오류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 안정성&lt;/td&gt;
&lt;td&gt;reasoning 점유가 높아 보이는 답변을 받지 못하기 쉬움&lt;/td&gt;
&lt;td&gt;세 문제 모두 순차 재시도에서 &lt;code&gt;stop&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;응답 속도&lt;/td&gt;
&lt;td&gt;약 187–246 s, 게다가 잘림/타임아웃 발생&lt;/td&gt;
&lt;td&gt;성공 요청 기준 약 88–236 s; 병렬 1차에서 408 발생&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;더 정확한 결론은 “어떤 모델이 절대적으로 더 똑똑하다”가 아니라 다음에 가깝다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;이번 라우팅과 예산에서는 GPT-5.6-SOL이 복잡한 추론을 최종 답변으로 수렴시키는 데 더 유리했다. 즉시 읽을 수 있는 유도 과정이나 코드를 받아야 하는 워크플로에 더 적합했다.&lt;/li&gt;
&lt;li&gt;Kimi K3의 핵심 문제는 추론 예산과 가시 출력 사이의 변환 효율이다. 수학 문제에서 &lt;code&gt;10000&lt;/code&gt; token까지 올려도 종료되지 않았다.&lt;/li&gt;
&lt;li&gt;GPT-5.6-SOL의 코드도 맹신해서는 안 된다. 함수 로직은 독립 검사를 통과했지만, 함께 제공한 테스트 픽스처에는 가치 계산 오류가 있었다.&lt;/li&gt;
&lt;li&gt;프로덕션 모델 선택에서는 &lt;code&gt;finish_reason&lt;/code&gt;, reasoning token, 지연 시간, 로컬 테스트 결과를 함께 기록해야 한다. 마지막에 “답이 맞다”는 한 문장만 보고 판단해서는 안 된다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  실험 재현
&lt;/h2&gt;

&lt;p&gt;이번 테스트 스크립트와 순차 재시도 결과는 다음 위치에 저장했다. 병렬 1차 테스트의 요약도 스크립트 출력에 기록되어 있다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.tmp/kimi_k3_vs_gpt56sol_test.py
.tmp/kimi-k3-vs-gpt56sol-results.json
.tmp/retry-gpt56sol-math.json
.tmp/retry-gpt56sol-physics.json
.tmp/retry-gpt56sol-programming.json
.tmp/retry-kimi-k3-math.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;재측정할 때는 모델 ID, 프롬프트, temperature, &lt;code&gt;max_tokens&lt;/code&gt;, 동시성 수준을 고정하고, 매번의 출력을 별도 파일로 저장하는 것을 권장한다. 상위 채널의 부하, 캐시 적중 여부, rate limit 상태는 모두 지연 시간에 영향을 줄 수 있다. 이 글에서는 HTTP 408, &lt;code&gt;length&lt;/code&gt;, 읽기 타임아웃을 모두 테스트 결과의 일부로 기록했으며, 이를 숨기지 않았다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5x6vgkqdlq09ogmnzl4s.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5x6vgkqdlq09ogmnzl4s.webp" alt="ko comparison chart" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Kimi K3 face à GPT-5.6-SOL : test réel sur des exercices difficiles en maths, physique et programmation</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Sat, 18 Jul 2026 01:16:38 +0000</pubDate>
      <link>https://dev.to/metaviiii/kimi-k3-face-a-gpt-56-sol-test-reel-sur-des-exercices-difficiles-en-maths-physique-et-34k7</link>
      <guid>https://dev.to/metaviiii/kimi-k3-face-a-gpt-56-sol-test-reel-sur-des-exercices-difficiles-en-maths-physique-et-34k7</guid>
      <description>&lt;h1&gt;
  
  
  Kimi K3 face à GPT-5.6-SOL : test réel sur des exercices difficiles en maths, physique et programmation
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjxvii96hq5ee4r95eogl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjxvii96hq5ee4r95eogl.png" alt="fr benchmark overview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cette fois, pas de questions-réponses triviales : j’ai fixé trois problèmes qui exigent un raisonnement en chaîne — un problème de probabilité avec recouvrement de motifs et second moment, un problème de physique avec inertie du poulie et bascule vers un câble détendu, et un problème Python qui dépend de fermetures de dépendances, d’une capacité sur plusieurs jours et d’un tie-break en trois niveaux. Les deux modèles ont été interrogés via la même interface, avec le même prompt et des plafonds de sortie proches, sans outils ni accès réseau.&lt;/p&gt;

&lt;p&gt;D’abord, la conclusion :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gpt-5.6-sol&lt;/code&gt; a produit une réponse visible complète sur les trois exercices, avec des résultats de référence corrects en maths et en physique.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kimi-k3&lt;/code&gt; a atteint &lt;code&gt;finish_reason=length&lt;/code&gt; sur les maths et la physique dès la première passe avec une limite de &lt;code&gt;6500&lt;/code&gt; tokens ; aucune réponse visible n’a été produite. En maths, même après avoir porté la limite à &lt;code&gt;10000&lt;/code&gt;, la sortie a encore été tronquée. Sur le problème de programmation, la requête a expiré en lecture après environ 245 secondes.&lt;/li&gt;
&lt;li&gt;L’implémentation de programmation de GPT-5.6-SOL a passé des vérifications indépendantes supplémentaires sur la fermeture des dépendances, la capacité, le tie-break, les dépendances invalides et les dépendances cycliques, mais sa première assertion d’exemple intégrée contenait une valeur attendue erronée. Cela montre bien qu’il faut valider séparément « le corps du code est correct » et « tous les tests d’exemple passent ».&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La latence indiquée ici est l’observation de cette requête précise, pas une SLA fixe. Lors des requêtes parallèles initiales, les requêtes mathématiques et physiques de GPT ont reçu un HTTP 408, puis ont été relancées séquentiellement ; la vitesse ne sert donc ici qu’à observer l’expérience d’appel, pas à revendiquer un classement absolu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Configuration de test
&lt;/h2&gt;

&lt;p&gt;Les tests ont été exécutés entre le &lt;code&gt;2026-07-17&lt;/code&gt; et le &lt;code&gt;2026-07-18&lt;/code&gt; (heure de Pékin), avec l’API suivante :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
model: kimi-k3 / gpt-5.6-sol
temperature: 0.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;La première passe utilisait uniformément : maths et physique &lt;code&gt;max_tokens=6500&lt;/code&gt;, programmation &lt;code&gt;max_tokens=7500&lt;/code&gt;. Chaque problème demandait au modèle de fournir un raisonnement vérifiable ou du code exécutable, et l’on a enregistré &lt;code&gt;finish_reason&lt;/code&gt;, les tokens de completion/reasoning, la latence de requête, la justesse numérique, ainsi que la capacité du code à s’exécuter de façon autonome sous Python 3.11.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tableau récapitulatif des résultats
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tâche&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Maths : espérance et variance de HHTH&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 186.98 s, 6500 tokens ; contenu visible vide&lt;/td&gt;
&lt;td&gt;relance séquentielle &lt;code&gt;stop&lt;/code&gt;, 236.07 s, 6872 tokens&lt;/td&gt;
&lt;td&gt;GPT a répondu complètement ; Kimi n’a pas produit de réponse au premier tour&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physique : poulie, contact au sol, ressort&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 202.05 s, 6500 tokens ; contenu visible vide&lt;/td&gt;
&lt;td&gt;relance séquentielle &lt;code&gt;stop&lt;/code&gt;, 156.29 s, 4501 tokens&lt;/td&gt;
&lt;td&gt;GPT complet et numériquement correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programmation : sac à dos avec clôture de dépendances&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;TimeoutError&lt;/code&gt; après 245.54 s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;stop&lt;/code&gt;, 87.96 s, 4514 tokens&lt;/td&gt;
&lt;td&gt;Le code GPT s’exécute ; Kimi n’a pas renvoyé de code complet&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Re-test maths de Kimi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 286.99 s, 10000 tokens&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;L’augmentation du budget n’a toujours pas permis de terminer&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Dans les requêtes maths et physique de Kimi, le nombre de reasoning tokens rapporté par l’API était proche de &lt;code&gt;6497&lt;/code&gt; dans les deux cas ; pour le re-test maths, il était proche de &lt;code&gt;9997&lt;/code&gt;. Cela ne veut pas dire que Kimi est incapable de raisonner, mais simplement que, pour ces prompts et avec ce routage, le budget de raisonnement est très facilement consommé, ce qui empêche le client d’obtenir la réponse finale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problème de maths : le chevauchement des motifs affecte non seulement l’espérance, mais aussi la variance
&lt;/h2&gt;

&lt;p&gt;L’énoncé est le suivant : à chaque lancer, la probabilité de face vaut &lt;code&gt;p=3/5&lt;/code&gt; et celle de pile &lt;code&gt;q=2/5&lt;/code&gt;. On lance jusqu’à ce que &lt;code&gt;HHTH&lt;/code&gt; apparaisse pour la première fois, en autorisant les recouvrements de motif. On demande &lt;code&gt;E[T]&lt;/code&gt; et &lt;code&gt;Var(T)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;L’automate des préfixes correct est &lt;code&gt;S0=préfixe vide&lt;/code&gt;, &lt;code&gt;S1=H&lt;/code&gt;, &lt;code&gt;S2=HH&lt;/code&gt;, &lt;code&gt;S3=HHT&lt;/code&gt;, &lt;code&gt;S4=HHTH (état absorbant)&lt;/code&gt;. La transition clé est &lt;code&gt;S2 --H--&amp;gt; S2&lt;/code&gt; : après &lt;code&gt;HH&lt;/code&gt;, un nouveau &lt;code&gt;H&lt;/code&gt; laisse encore comme plus long suffixe pertinent &lt;code&gt;HH&lt;/code&gt;, il ne faut donc pas retomber à tort dans l’état vide.&lt;/p&gt;

&lt;p&gt;Les équations du premier moment établies par GPT-5.6-SOL sont :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;M0 = 1 + p M1 + q M0
M1 = 1 + p M2 + q M0
M2 = 1 + p M2 + q M3
M3 = 1 + q M0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;En poursuivant avec les équations du second moment, on obtient :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[T]   = 715/54       ≈ 13.2407407407
E[T²]  = 195335/729   ≈ 267.9492455418
Var(T) = 270115/2916  ≈ 92.6320301783
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;L’espérance peut aussi être vérifiée indépendamment par une formule de bord. &lt;code&gt;HHTH&lt;/code&gt; n’a comme bord propre non vide que le caractère &lt;code&gt;H&lt;/code&gt;, donc &lt;code&gt;E[T] = 1/p + 1/(p³q) = 715/54&lt;/code&gt;. La réponse complète de GPT couvre à la fois les transitions d’état, le développement du second moment et un contrôle de cohérence. Kimi n’ayant produit aucun raisonnement visible sous les plafonds &lt;code&gt;6500&lt;/code&gt; et &lt;code&gt;10000&lt;/code&gt;, il est impossible d’évaluer sa justesse mathématique sur cette passe ; on ne peut que noter qu’elle n’a pas été menée à terme dans le budget.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problème de physique : après l’impact au sol, la contrainte se rompt, on ne peut plus réutiliser le même bilan énergétique
&lt;/h2&gt;

&lt;p&gt;Le problème est défini ainsi : &lt;code&gt;m_A=4.0 kg&lt;/code&gt; est sur un plan incliné rugueux à &lt;code&gt;25°&lt;/code&gt;, avec &lt;code&gt;μ_k=0.18&lt;/code&gt; ; &lt;code&gt;m_B=3.0 kg&lt;/code&gt; est suspendue ; la poulie a &lt;code&gt;M_p=1.2 kg&lt;/code&gt;, &lt;code&gt;R=0.10 m&lt;/code&gt; ; après une descente de &lt;code&gt;1.50 m&lt;/code&gt;, B touche le sol et la corde se détend immédiatement ; A continue à monter de &lt;code&gt;0.10 m&lt;/code&gt; avant d’entrer en contact avec un ressort de &lt;code&gt;k=250 N/m&lt;/code&gt; ; &lt;code&gt;g=9.8 m/s²&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Avant que B touche le sol, la corde est tendue et il n’y a pas de glissement ; la masse inertielle équivalente de la poulie vaut &lt;code&gt;I/R²=(1/2)M_p=0.60 kg&lt;/code&gt;. En écrivant les équations couplées des deux masses et de la rotation de la poulie, on obtient :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a  ≈ 0.847 m/s²
v1 ≈ 1.59 m/s
v2 ≈ 1.18 m/s
x  ≈ 0.0835 m = 8.35 cm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Après l’impact au sol, la vitesse de B est modifiée par la collision avec le sol, A conserve encore une vitesse vers le haut du plan incliné, et la poulie peut continuer à tourner ; l’énoncé précise en plus que la corde se détend immédiatement, donc on ne peut plus imposer &lt;code&gt;v_A=v_B=Rω&lt;/code&gt;. La suite doit donc être analysée uniquement pour A :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v2² = v1² - 2g(sinθ + μ_k cosθ)d
1/2 m_A v2² = 1/2 kx² + m_A g(sinθ + μ_k cosθ)x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOL a également vérifié les dimensions, la distance d’arrêt sans ressort, ainsi que la cohérence entre l’énergie du ressort et la somme des pertes par frottement et gravité ; les valeurs sont auto-cohérentes. Kimi n’ayant pas produit de réponse visible lors de la première passe, il est impossible de comparer la qualité de son modélisation intermédiaire.&lt;/p&gt;

&lt;h2&gt;
  
  
  Problème de programmation : le cœur de l’algorithme passe les vérifications indépendantes, mais l’exemple du modèle contient un bug
&lt;/h2&gt;

&lt;p&gt;Le problème demandait d’implémenter &lt;code&gt;optimize_release_plan(items, capacity_by_day, dependencies)&lt;/code&gt;, en gérant la capacité journalière, une capacité par défaut de 0 pour les dates non configurées, la fermeture transitive des dépendances directes et indirectes, la détection des dépendances invalides et des cycles, ainsi qu’un tie-break en trois niveaux &lt;code&gt;value → risk → liste d’identifiants triée&lt;/code&gt;. Comme &lt;code&gt;items &amp;lt;= 18&lt;/code&gt;, une exploration exhaustive par bitmask est une base raisonnable.&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOL a utilisé un cache de fermeture des dépendances et une énumération des sous-ensembles en &lt;code&gt;2^n&lt;/code&gt;. Nous avons extrait le code et l’avons vérifié indépendamment sous Python 3.11 : fermeture des dépendances, exemple de capacité multi-jour, tie-break en trois niveaux valeur/risque/id, capacité des dates non configurées, absence de dépendance et dépendance cyclique — les 6 groupes de vérifications ont tous passé.&lt;/p&gt;

&lt;p&gt;En revanche, la première assertion ajoutée à la fin du code par le modèle échoue : elle écrit &lt;code&gt;A -&amp;gt; B -&amp;gt; C&lt;/code&gt;, tout en introduisant un &lt;code&gt;X&lt;/code&gt; de valeur 11. Avec la capacité donnée, la valeur totale de &lt;code&gt;B + C + X&lt;/code&gt; est 13, donc supérieure à celle de &lt;code&gt;A + B + C&lt;/code&gt;, qui est 12 ; la fonction doit donc renvoyer &lt;code&gt;['B', 'C', 'X']&lt;/code&gt;. L’assertion attendant &lt;code&gt;['A', 'B', 'C']&lt;/code&gt; est incorrecte, c’est un bug dans le harnais de test.&lt;/p&gt;

&lt;p&gt;C’est un point très parlant : pour un exercice de code, il ne faut pas se contenter du corps de la fonction, et il ne faut pas non plus considérer qu’« il y a 8 assertions, donc les tests sont forcément fiables ». Les données de test générées par le modèle doivent, elles aussi, être relues par un humain ou par une implémentation de référence. La requête de programmation de Kimi K3 a expiré en lecture après environ 245 secondes, sans code complet récupérable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bilan global
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Complétude en maths&lt;/td&gt;
&lt;td&gt;les tokens &lt;code&gt;6500/10000&lt;/code&gt; ont tous été tronqués, impossible à valider&lt;/td&gt;
&lt;td&gt;espérance, second moment, variance et check de cohérence complets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Modélisation physique&lt;/td&gt;
&lt;td&gt;troncature dès la première passe&lt;/td&gt;
&lt;td&gt;traitement correct de l’inertie de la poulie, de la détente de la corde et de la phase ressort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Livraison du code&lt;/td&gt;
&lt;td&gt;timeout sur cette passe&lt;/td&gt;
&lt;td&gt;corps du code validé indépendamment, mais une assertion interne est fausse&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stabilité de sortie&lt;/td&gt;
&lt;td&gt;forte consommation de reasoning, réponse visible souvent absente&lt;/td&gt;
&lt;td&gt;sur les trois problèmes, les relances séquentielles sont toutes revenues en &lt;code&gt;stop&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vitesse de réponse&lt;/td&gt;
&lt;td&gt;environ 187–246 s, avec troncature/timeout&lt;/td&gt;
&lt;td&gt;requêtes réussies d’environ 88–236 s ; 408 sur la première passe concurrente&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;La conclusion la plus juste n’est pas « tel modèle est objectivement plus intelligent », mais plutôt :&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Avec ce routage et ce budget, GPT-5.6-SOL parvient plus facilement à condenser un raisonnement complexe en réponse finale ; c’est plus adapté à un workflow où il faut obtenir tout de suite une démonstration ou du code lisible.&lt;/li&gt;
&lt;li&gt;Le principal problème de Kimi K3 est l’efficacité de conversion entre budget de raisonnement et sortie visible ; même en portant les maths à &lt;code&gt;10000&lt;/code&gt; tokens, la génération n’aboutit toujours pas.&lt;/li&gt;
&lt;li&gt;On ne peut pas faire une confiance aveugle au code de GPT-5.6-SOL. La logique de la fonction passe les vérifications indépendantes, mais le jeu de tests fourni contient une erreur de calcul de valeur.&lt;/li&gt;
&lt;li&gt;Pour un choix en production, il faut enregistrer à la fois &lt;code&gt;finish_reason&lt;/code&gt;, les reasoning tokens, la latence et les résultats des tests locaux ; il ne faut pas s’arrêter à la dernière phrase du type « la réponse est correcte ».&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Reproduire l’expérience
&lt;/h2&gt;

&lt;p&gt;Les scripts de test et les résultats de relance séquentielle de cette passe sont conservés ici (le résumé de la première passe concurrente a aussi été écrit dans la sortie du script) :&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.tmp/kimi_k3_vs_gpt56sol_test.py
.tmp/kimi-k3-vs-gpt56sol-results.json
.tmp/retry-gpt56sol-math.json
.tmp/retry-gpt56sol-physics.json
.tmp/retry-gpt56sol-programming.json
.tmp/retry-kimi-k3-math.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pour refaire l’expérience, il est conseillé de figer les IDs de modèle, le prompt, &lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;max_tokens&lt;/code&gt; et le degré de concurrence, puis d’enregistrer chaque sortie dans un fichier séparé. La charge du canal amont, les hits de cache et l’état du rate limiting influencent tous la latence ; ici, les HTTP 408, &lt;code&gt;length&lt;/code&gt; et les timeouts en lecture ont été conservés comme résultats de test à part entière, sans être masqués.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsffrw3qwb04h4wr1xypr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsffrw3qwb04h4wr1xypr.png" alt="fr comparison chart" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Kimi K3 против GPT-5.6-SOL: жёсткое сравнение на математике, физике и программировании</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Sat, 18 Jul 2026 01:15:10 +0000</pubDate>
      <link>https://dev.to/metaviiii/kimi-k3-protiv-gpt-56-sol-zhiostkoie-sravnieniie-na-matiematikie-fizikie-i-proghrammirovanii-3886</link>
      <guid>https://dev.to/metaviiii/kimi-k3-protiv-gpt-56-sol-zhiostkoie-sravnieniie-na-matiematikie-fizikie-i-proghrammirovanii-3886</guid>
      <description>&lt;h1&gt;
  
  
  Kimi K3 против GPT-5.6-SOL: жёсткое сравнение на математике, физике и программировании
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvdzgvw7x0qqz1uffew6u.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvdzgvw7x0qqz1uffew6u.webp" alt="ru benchmark overview" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;На этот раз мы не гоняли простые вопросы, а взяли три задачи, где нужно делать последовательные выводы: вероятностную задачу с перекрытием шаблона и вторым моментом, физическую задачу с моментом инерции шкива и переключением после провисания нити, а также Python-задачу на замыкание зависимостей, многодневные ёмкости и трёхуровневый tie-break. Оба модели работали через один и тот же интерфейс, с одинаковым промптом и близкими лимитами вывода, без инструментов и без доступа к интернету.&lt;/p&gt;

&lt;p&gt;Сначала короткий итог:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gpt-5.6-sol&lt;/code&gt; по всем трём задачам дал полный видимый ответ, а эталонные результаты для математики и физики совпали.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;kimi-k3&lt;/code&gt; при первом лимите &lt;code&gt;6500&lt;/code&gt; tokens на математике и физике завершался с &lt;code&gt;finish_reason=length&lt;/code&gt;, при этом видимый ответ был пустым; на математике после повышения лимита до &lt;code&gt;10000&lt;/code&gt; тоже произошёл обрыв. Программная задача спустя примерно 245 секунд ушла в read timeout.&lt;/li&gt;
&lt;li&gt;Реализация GPT-5.6-SOL по программированию прошла независимую проверку на замыкание зависимостей, ёмкости, tie-break, невалидные зависимости и циклы, но в собственной первой строке assert у модели был неверный ожидаемый результат. Это показывает, что «ядро кода верное» и «все примерные тесты корректны» — это разные вещи, которые надо проверять отдельно.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Задержка, указанная в статье, — это наблюдение именно для данного запроса; это не SLA. В первой параллельной серии запросов математический и физический запросы к GPT возвращали HTTP 408, после чего мы перешли к последовательным повторным попыткам. Поэтому скорость здесь используется только как характеристика опыта вызова, а не как абсолютный рейтинг.&lt;/p&gt;

&lt;h2&gt;
  
  
  Настройки теста
&lt;/h2&gt;

&lt;p&gt;Тестирование проводилось по пекинскому времени с &lt;code&gt;2026-07-17&lt;/code&gt; по &lt;code&gt;2026-07-18&lt;/code&gt;, интерфейс:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
model: kimi-k3 / gpt-5.6-sol
temperature: 0.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;В первой серии везде использовались одинаковые лимиты: для математики и физики &lt;code&gt;max_tokens=6500&lt;/code&gt;, для программирования &lt;code&gt;max_tokens=7500&lt;/code&gt;. В каждой задаче модель должна была дать проверяемый вывод или исполняемый код; дополнительно фиксировались &lt;code&gt;finish_reason&lt;/code&gt;, completion/reasoning token, задержка запроса, численная корректность и способность кода запускаться отдельно в Python 3.11.&lt;/p&gt;

&lt;h2&gt;
  
  
  Сводная таблица результатов
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Задача&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;th&gt;Вердикт&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Математика: матожидание и дисперсия HHTH&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 186.98 s, 6500 tokens; видимое содержимое пустое&lt;/td&gt;
&lt;td&gt;последовательный повтор &lt;code&gt;stop&lt;/code&gt;, 236.07 s, 6872 tokens&lt;/td&gt;
&lt;td&gt;GPT ответил полностью; Kimi в первой попытке не дал ответ&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Физика: шкив, касание пола, пружина&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 202.05 s, 6500 tokens; видимое содержимое пустое&lt;/td&gt;
&lt;td&gt;последовательный повтор &lt;code&gt;stop&lt;/code&gt;, 156.29 s, 4501 tokens&lt;/td&gt;
&lt;td&gt;GPT ответил полностью и численно верно&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Программирование: dependency closure knapsack&lt;/td&gt;
&lt;td&gt;через 245.54 s &lt;code&gt;TimeoutError&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;stop&lt;/code&gt;, 87.96 s, 4514 tokens&lt;/td&gt;
&lt;td&gt;GPT-код исполняется; Kimi не вернул полный код&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Повтор математики у Kimi&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 286.99 s, 10000 tokens&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Даже при увеличенном бюджете ответ не был завершён&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;В запросах Kimi по математике и физике интерфейс сообщал reasoning token, близкие к &lt;code&gt;6497&lt;/code&gt;; на повторе по математике — около &lt;code&gt;9997&lt;/code&gt;. Это не означает, что у Kimi нет способности к рассуждению; это означает, что при данном промпте и текущей маршрутизации бюджет рассуждений очень легко выгорает, и вызывающая сторона не получает финальный ответ.&lt;/p&gt;

&lt;h2&gt;
  
  
  Математическая задача: перекрытие шаблона влияет не только на ожидание, но и на дисперсию
&lt;/h2&gt;

&lt;p&gt;Условие: вероятность орла &lt;code&gt;p=3/5&lt;/code&gt;, решки &lt;code&gt;q=2/5&lt;/code&gt;; бросаем монету до первого появления &lt;code&gt;HHTH&lt;/code&gt;, с разрешённым перекрытием шаблона, найти &lt;code&gt;E[T]&lt;/code&gt; и &lt;code&gt;Var(T)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Корректный автомат по префиксам имеет состояния &lt;code&gt;S0=пустой префикс&lt;/code&gt;, &lt;code&gt;S1=H&lt;/code&gt;, &lt;code&gt;S2=HH&lt;/code&gt;, &lt;code&gt;S3=HHT&lt;/code&gt;, &lt;code&gt;S4=HHTH（absorbing state）&lt;/code&gt;. Ключевой переход — &lt;code&gt;S2 --H--&amp;gt; S2&lt;/code&gt;: после &lt;code&gt;HH&lt;/code&gt; ещё один &lt;code&gt;H&lt;/code&gt; сохраняет наибольший суффикс &lt;code&gt;HH&lt;/code&gt;, а не откатывает нас ошибочно в пустое состояние.&lt;/p&gt;

&lt;p&gt;У GPT-5.6-SOL уравнения для первого момента были записаны так:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;M0 = 1 + p M1 + q M0
M1 = 1 + p M2 + q M0
M2 = 1 + p M2 + q M3
M3 = 1 + q M0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;После построения уравнений для второго момента получаем:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[T]   = 715/54       ≈ 13.2407407407
E[T²]  = 195335/729   ≈ 267.9492455418
Var(T) = 270115/2916  ≈ 92.6320301783
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ожидание можно отдельно проверить по формуле границ. У &lt;code&gt;HHTH&lt;/code&gt; единственная непустая собственная граница — однобуквенная &lt;code&gt;H&lt;/code&gt;, поэтому &lt;code&gt;E[T] = 1/p + 1/(p³q) = 715/54&lt;/code&gt;. В полном ответе GPT были и переходы состояний, и раскрытие второго момента, и sanity check. Kimi при лимитах &lt;code&gt;6500&lt;/code&gt; и &lt;code&gt;10000&lt;/code&gt; не выдал видимого вывода, так что в этом раунде его математическую корректность оценить не удалось — только зафиксировать, что в пределах бюджета задача не была завершена.&lt;/p&gt;

&lt;h2&gt;
  
  
  Физическая задача: после касания пола ограничение исчезает, и прежние уравнения энергии уже не годятся
&lt;/h2&gt;

&lt;p&gt;Условие: &lt;code&gt;m_A=4.0 kg&lt;/code&gt; на шероховатой наклонной плоскости под углом &lt;code&gt;25°&lt;/code&gt;, &lt;code&gt;μ_k=0.18&lt;/code&gt;; &lt;code&gt;m_B=3.0 kg&lt;/code&gt; висит; шкив &lt;code&gt;M_p=1.2 kg&lt;/code&gt;, &lt;code&gt;R=0.10 m&lt;/code&gt;; B опускается на &lt;code&gt;1.50 m&lt;/code&gt;, касается пола, нить сразу провисает; A затем поднимается по плоскости ещё на &lt;code&gt;0.10 m&lt;/code&gt; и касается пружины &lt;code&gt;k=250 N/m&lt;/code&gt;; &lt;code&gt;g=9.8 m/s²&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;До касания пола нить натянута и проскальзывания нет, поэтому эквивалентная инерционная масса шкива равна &lt;code&gt;I/R²=(1/2)M_p=0.60 kg&lt;/code&gt;. Совместное решение для двух тел и вращения шкива даёт:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a  ≈ 0.847 m/s²
v1 ≈ 1.59 m/s
v2 ≈ 1.18 m/s
x  ≈ 0.0835 m = 8.35 cm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;После касания пола скорость B меняется ударом о землю, у A по-прежнему остаётся скорость вверх вдоль плоскости, а шкив может продолжать вращаться; но в условии прямо сказано, что нить немедленно провисает, значит использовать &lt;code&gt;v_A=v_B=Rω&lt;/code&gt; дальше нельзя. Последующий этап нужно анализировать только для A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v2² = v1² - 2g(sinθ + μ_k cosθ)d
1/2 m_A v2² = 1/2 kx² + m_A g(sinθ + μ_k cosθ)x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOL также проверил размерности, расстояние до остановки без пружины и согласованность суммы энергии пружины с потерями на трение и гравитацию; численно всё сходится. У Kimi в первой попытке не появилось видимого ответа, поэтому сравнить качество промежуточного моделирования не удалось.&lt;/p&gt;

&lt;h2&gt;
  
  
  Программная задача: основной алгоритм прошёл независимую проверку, но в собственном примере модели есть баг
&lt;/h2&gt;

&lt;p&gt;Задача требовала реализовать &lt;code&gt;optimize_release_plan(items, capacity_by_day, dependencies)&lt;/code&gt;, учитывая ежедневные ёмкости, нулевую ёмкость для неуказанных дат, замыкание по прямым и косвенным зависимостям, валидацию невалидных зависимостей и циклов, а также тройной tie-break &lt;code&gt;value → risk → отсортированный список id&lt;/code&gt;. Поскольку &lt;code&gt;items &amp;lt;= 18&lt;/code&gt;, полный перебор по bitmask — вполне разумная базовая стратегия.&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOL использовал кеширование замыкания зависимостей и перебор всех подмножеств &lt;code&gt;2^n&lt;/code&gt;. Мы извлекли код и отдельно прогнали его в Python 3.11: проверки на замыкание зависимостей, пример с многодневной ёмкостью, тройной tie-break по value/risk/id, ёмкость для неуказанных дат, отсутствие зависимости и цикл — всего 6 наборов проверок — все прошли.&lt;/p&gt;

&lt;p&gt;Но в конце кода у модели была собственная первая проверка, которая упала: она задавала цепочку &lt;code&gt;A -&amp;gt; B -&amp;gt; C&lt;/code&gt;, одновременно добавляя объект &lt;code&gt;X&lt;/code&gt; с ценностью 11. При данных ограничениях суммарная ценность &lt;code&gt;B + C + X&lt;/code&gt; равна 13 и выше, чем &lt;code&gt;A + B + C&lt;/code&gt; с 12, поэтому корректным ответом будет &lt;code&gt;['B', 'C', 'X']&lt;/code&gt;, а не &lt;code&gt;['A', 'B', 'C']&lt;/code&gt;. То есть ошибка была в тестовом каркасе, а не в логике функции.&lt;/p&gt;

&lt;p&gt;Этот момент показателен: в кодовых задачах нельзя смотреть только на тело функции, и нельзя считать тесты корректными лишь потому, что «их там 8 штук». Сгенерированные моделью тестовые данные тоже нужно проверять вручную или через эталонную реализацию. Запрос на программирование у Kimi K3 спустя примерно 245 секунд завершился read timeout, полного кода получить не удалось.&lt;/p&gt;

&lt;h2&gt;
  
  
  Сводная оценка
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Измерение&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Полнота математического решения&lt;/td&gt;
&lt;td&gt;при &lt;code&gt;6500/10000&lt;/code&gt; tokens обрыв, приёмке не подлежит&lt;/td&gt;
&lt;td&gt;ожидание, второй момент, дисперсия и sanity check есть полностью&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Физическое моделирование&lt;/td&gt;
&lt;td&gt;в первой попытке обрыв&lt;/td&gt;
&lt;td&gt;корректно учтены инерция шкива, провисание нити и этап с пружиной&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Результат по коду&lt;/td&gt;
&lt;td&gt;в этот раз таймаут&lt;/td&gt;
&lt;td&gt;основная логика прошла независимую проверку, но собственный пример содержит ошибку&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Стабильность вывода&lt;/td&gt;
&lt;td&gt;высокий расход reasoning, часто не удаётся получить видимый ответ&lt;/td&gt;
&lt;td&gt;во всех трёх задачах последовательный повтор дал &lt;code&gt;stop&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Скорость ответа&lt;/td&gt;
&lt;td&gt;около 187–246 s, с обрывом/таймаутом&lt;/td&gt;
&lt;td&gt;успешные запросы примерно 88–236 s; в первой параллельной серии был 408&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Более точный вывод — не «одна модель объективно умнее другой», а следующий:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;При данной маршрутизации и бюджете GPT-5.6-SOL легче сводит сложные рассуждения к финальному ответу, поэтому он лучше подходит для рабочих сценариев, где нужен сразу читаемый вывод или код.&lt;/li&gt;
&lt;li&gt;У Kimi K3 основная проблема — эффективность преобразования reasoning-бюджета в видимый результат; даже при увеличении лимита по математике до &lt;code&gt;10000&lt;/code&gt; tokens ответ не был завершён.&lt;/li&gt;
&lt;li&gt;Код GPT-5.6-SOL нельзя принимать на веру. Логика функции прошла независимую проверку, но приложенный тестовый каркас содержал ошибку в ожидаемом значении.&lt;/li&gt;
&lt;li&gt;Для продакшн-выбора нужно фиксировать одновременно &lt;code&gt;finish_reason&lt;/code&gt;, reasoning token, задержку и локальные тесты, а не только смотреть на финальную фразу «ответ верен».&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Воспроизведение эксперимента
&lt;/h2&gt;

&lt;p&gt;Скрипт теста и результаты последовательных повторов сохранены здесь (сводка по первой параллельной серии тоже записана в вывод скрипта):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.tmp/kimi_k3_vs_gpt56sol_test.py
.tmp/kimi-k3-vs-gpt56sol-results.json
.tmp/retry-gpt56sol-math.json
.tmp/retry-gpt56sol-physics.json
.tmp/retry-gpt56sol-programming.json
.tmp/retry-kimi-k3-math.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;При повторе рекомендуется жёстко фиксировать model ID, промпт, temperature, &lt;code&gt;max_tokens&lt;/code&gt; и уровень параллелизма, а каждый вывод сохранять в отдельный файл. Нагрузка на upstream, попадание в cache и состояние rate limit заметно влияют на задержку; в этой статье HTTP 408, &lt;code&gt;length&lt;/code&gt; и read timeout сознательно зафиксированы как часть результата, а не скрыты.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flxn0ppblanrxjtwe3jsf.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flxn0ppblanrxjtwe3jsf.webp" alt="ru comparison chart" width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Kimi K3 vs GPT-5.6-SOL: Stress Tests in Math, Physics, and Programming</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Sat, 18 Jul 2026 01:13:49 +0000</pubDate>
      <link>https://dev.to/metaviiii/kimi-k3-vs-gpt-56-sol-stress-tests-in-math-physics-and-programming-28en</link>
      <guid>https://dev.to/metaviiii/kimi-k3-vs-gpt-56-sol-stress-tests-in-math-physics-and-programming-28en</guid>
      <description>&lt;h1&gt;
  
  
  Kimi K3 vs GPT-5.6-SOL: Stress Tests in Math, Physics, and Programming
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffpf8zvr4v5o7xjf474vc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Ffpf8zvr4v5o7xjf474vc.png" alt="en benchmark overview" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This time I didn’t benchmark simple Q&amp;amp;A. Instead, I fixed three problems that require chained reasoning: a probability problem with overlapping patterns and a second moment, a physics problem involving pulley inertia plus a rope slack transition, and a Python problem that depends on closures, multi-day capacity, and a three-level tie-break. Both models used the same interface, the same prompt, and roughly the same output budget, with tools and web access disabled.&lt;/p&gt;

&lt;p&gt;Bottom line first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;gpt-5.6-sol&lt;/code&gt; produced a complete visible answer on all three tasks, and its reference results for the math and physics problems were correct.&lt;/li&gt;
&lt;li&gt;Under the initial &lt;code&gt;6500&lt;/code&gt; token cap, &lt;code&gt;kimi-k3&lt;/code&gt; ended both the math and physics tasks with &lt;code&gt;finish_reason=length&lt;/code&gt;, leaving the visible answer empty; even after raising the math cap to &lt;code&gt;10000&lt;/code&gt;, it was still truncated. The programming task timed out on read after about 245 seconds.&lt;/li&gt;
&lt;li&gt;GPT-5.6-SOL’s programming solution passed separate extra checks for dependency closure, capacity, tie-breaks, invalid dependencies, and cyclic dependencies. However, the first assertion sample bundled with the model itself had an incorrect expected value. That means “the core code is correct” and “all example tests pass” have to be validated separately.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The latency figures in this article are just what I observed for this request; they do not imply any fixed SLA. In the initial concurrent run, GPT’s math and physics requests received HTTP 408, and I retried them sequentially afterward. So the timing numbers here are only for call experience, not for claiming an absolute ranking.&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Setup
&lt;/h2&gt;

&lt;p&gt;The tests were run from Beijing time &lt;code&gt;2026-07-17&lt;/code&gt; to &lt;code&gt;2026-07-18&lt;/code&gt;, using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;POST https://cn.crazyrouter.com/v1/chat/completions
model: kimi-k3 / gpt-5.6-sol
temperature: 0.2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The first round used the same limits for both models: &lt;code&gt;max_tokens=6500&lt;/code&gt; for math and physics, and &lt;code&gt;max_tokens=7500&lt;/code&gt; for programming. Each task asked the model to provide a derivation that could be verified or code that could be run directly, and I recorded &lt;code&gt;finish_reason&lt;/code&gt;, completion/reasoning tokens, request latency, numerical correctness, and whether the code ran independently in Python 3.11.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary Table
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Task&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;th&gt;Verdict&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Math: Expected value and variance of HHTH&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 186.98 s, 6500 tokens; visible content empty&lt;/td&gt;
&lt;td&gt;Sequential retry &lt;code&gt;stop&lt;/code&gt;, 236.07 s, 6872 tokens&lt;/td&gt;
&lt;td&gt;GPT answered completely; Kimi did not finish in the first round&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physics: Pulley, ground contact, spring&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 202.05 s, 6500 tokens; visible content empty&lt;/td&gt;
&lt;td&gt;Sequential retry &lt;code&gt;stop&lt;/code&gt;, 156.29 s, 4501 tokens&lt;/td&gt;
&lt;td&gt;GPT complete and numerically correct&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programming: dependency-closure knapsack&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;TimeoutError&lt;/code&gt; after 245.54 s&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;stop&lt;/code&gt;, 87.96 s, 4514 tokens&lt;/td&gt;
&lt;td&gt;GPT code runs; Kimi did not return complete code&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Kimi math retry&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;length&lt;/code&gt;, 286.99 s, 10000 tokens&lt;/td&gt;
&lt;td&gt;—&lt;/td&gt;
&lt;td&gt;Even with more budget, it still did not finish&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;For Kimi’s math and physics requests, the API reported reasoning tokens of roughly &lt;code&gt;6497&lt;/code&gt; each; the math retry was close to &lt;code&gt;9997&lt;/code&gt; reasoning tokens. That does not mean Kimi lacks reasoning ability. It means that under this prompt and the current routing, the reasoning budget was very easy to exhaust, and the caller never got the final answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Math Problem: Pattern Overlap Affects Not Just the Expectation, but the Variance Too
&lt;/h2&gt;

&lt;p&gt;The problem is: with heads probability &lt;code&gt;p=3/5&lt;/code&gt; and tails probability &lt;code&gt;q=2/5&lt;/code&gt;, keep tossing until &lt;code&gt;HHTH&lt;/code&gt; appears for the first time, allowing overlaps. Find &lt;code&gt;E[T]&lt;/code&gt; and &lt;code&gt;Var(T)&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The correct prefix automaton states are &lt;code&gt;S0=empty prefix&lt;/code&gt;, &lt;code&gt;S1=H&lt;/code&gt;, &lt;code&gt;S2=HH&lt;/code&gt;, &lt;code&gt;S3=HHT&lt;/code&gt;, and &lt;code&gt;S4=HHTH (absorbing state)&lt;/code&gt;. The key transition is &lt;code&gt;S2 --H--&amp;gt; S2&lt;/code&gt;: after &lt;code&gt;HH&lt;/code&gt;, another &lt;code&gt;H&lt;/code&gt; still leaves the longest suffix as &lt;code&gt;HH&lt;/code&gt;, so you must not incorrectly fall back to the empty state.&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOL set up the first-moment equations as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;M0 = 1 + p M1 + q M0
M1 = 1 + p M2 + q M0
M2 = 1 + p M2 + q M3
M3 = 1 + q M0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Continuing with the second-moment equations gives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[T]   = 715/54       ≈ 13.2407407407
E[T²]  = 195335/729   ≈ 267.9492455418
Var(T) = 270115/2916  ≈ 92.6320301783
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expectation can also be checked independently using the boundary formula. The only non-empty proper border of &lt;code&gt;HHTH&lt;/code&gt; is the single character &lt;code&gt;H&lt;/code&gt;, so &lt;code&gt;E[T] = 1/p + 1/(p³q) = 715/54&lt;/code&gt;. GPT’s full answer covered the state transitions, the second-moment expansion, and a sanity check. Under the &lt;code&gt;6500&lt;/code&gt; and &lt;code&gt;10000&lt;/code&gt; limits, Kimi produced no visible derivation, so there is no way to score its mathematical correctness in this run; it can only be recorded as “not completed within budget.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Physics Problem: Once the Mass Hits the Ground, You Cannot Keep Using the Same Energy Equation
&lt;/h2&gt;

&lt;p&gt;The setup is: &lt;code&gt;m_A=4.0 kg&lt;/code&gt; on a rough &lt;code&gt;25°&lt;/code&gt; incline with &lt;code&gt;μ_k=0.18&lt;/code&gt;; &lt;code&gt;m_B=3.0 kg&lt;/code&gt; hanging; pulley &lt;code&gt;M_p=1.2 kg&lt;/code&gt;, &lt;code&gt;R=0.10 m&lt;/code&gt;; after B drops &lt;code&gt;1.50 m&lt;/code&gt; and hits the ground, the rope immediately goes slack; A then slides up another &lt;code&gt;0.10 m&lt;/code&gt; before contacting a &lt;code&gt;k=250 N/m&lt;/code&gt; spring; &lt;code&gt;g=9.8 m/s²&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Before B hits the ground, the rope is taut and there is no slip, so the pulley’s effective inertial mass is &lt;code&gt;I/R²=(1/2)M_p=0.60 kg&lt;/code&gt;. Solving the translational equations for the two blocks together with the pulley rotation equation gives:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a  ≈ 0.847 m/s²
v1 ≈ 1.59 m/s
v2 ≈ 1.18 m/s
x  ≈ 0.0835 m = 8.35 cm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After B hits the ground, B’s velocity is altered by the collision with the floor, while A is still moving up the incline, and the pulley may still be spinning. The problem also explicitly says the rope immediately goes slack, so you can no longer use &lt;code&gt;v_A=v_B=Rω&lt;/code&gt;. From that point on, you should analyze only A:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v2² = v1² - 2g(sinθ + μ_k cosθ)d
1/2 m_A v2² = 1/2 kx² + m_A g(sinθ + μ_k cosθ)x
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;GPT-5.6-SOL also checked dimensional consistency, the stopping distance without a spring, and the sum of spring energy plus friction/gravity losses, and the numbers were self-consistent. Kimi never produced a visible answer in the first round, so there is no way to compare its intermediate modeling quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  Programming Problem: The Core Algorithm Passed Independent Checks, but the Model’s Own Sample Has a Bug
&lt;/h2&gt;

&lt;p&gt;The programming task was to implement &lt;code&gt;optimize_release_plan(items, capacity_by_day, dependencies)&lt;/code&gt;, handling daily capacity, zero capacity for unconfigured dates, direct and transitive dependency closure, invalid dependencies, cycle detection, and a three-level tie-break of &lt;code&gt;value → risk → sorted id list&lt;/code&gt;. Since &lt;code&gt;items &amp;lt;= 18&lt;/code&gt;, bitmask enumeration is a reasonable baseline.&lt;/p&gt;

&lt;p&gt;GPT-5.6-SOL used dependency-closure caching plus &lt;code&gt;2^n&lt;/code&gt; subset enumeration. I extracted the code and ran separate checks in Python 3.11: dependency closure, multi-day capacity samples, value/risk/id three-level tie-breaks, unconfigured-date capacity, missing dependencies, and cyclic dependencies. All 6 checks passed.&lt;/p&gt;

&lt;p&gt;However, the first assertion bundled at the end of the model’s code failed: it wrote &lt;code&gt;A -&amp;gt; B -&amp;gt; C&lt;/code&gt; while also including an item &lt;code&gt;X&lt;/code&gt; with value 11. Under the given capacity, &lt;code&gt;B + C + X&lt;/code&gt; has a total value of 13, which is higher than &lt;code&gt;A + B + C&lt;/code&gt; at 12, so returning &lt;code&gt;['B', 'C', 'X']&lt;/code&gt; is correct; the assertion &lt;code&gt;['A', 'B', 'C']&lt;/code&gt; is a test fixture bug.&lt;/p&gt;

&lt;p&gt;This is a good reminder that in code tasks, you cannot judge only the function body, and you also cannot assume a test suite is trustworthy just because it includes 8 assertions. Model-generated test data still needs to be checked manually or against a reference implementation. Kimi K3’s programming request timed out on read after about 245 seconds, and no complete code was obtained.&lt;/p&gt;

&lt;h2&gt;
  
  
  Overall Assessment
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;kimi-k3&lt;/th&gt;
&lt;th&gt;gpt-5.6-sol&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Math completeness&lt;/td&gt;
&lt;td&gt;Both &lt;code&gt;6500/10000&lt;/code&gt; token runs were truncated, so there was nothing to accept&lt;/td&gt;
&lt;td&gt;Expectation, second moment, variance, and sanity check all complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Physics modeling&lt;/td&gt;
&lt;td&gt;Truncated in the first round&lt;/td&gt;
&lt;td&gt;Correct handling of pulley inertia, rope slack, and spring phase&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Programming delivery&lt;/td&gt;
&lt;td&gt;Timed out in this run&lt;/td&gt;
&lt;td&gt;Core code passed independent checks, but one bundled assertion was wrong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Output stability&lt;/td&gt;
&lt;td&gt;High reasoning usage, easy to end up with no visible answer&lt;/td&gt;
&lt;td&gt;All three sequential retries ended with &lt;code&gt;stop&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Response speed&lt;/td&gt;
&lt;td&gt;About 187–246 s, with truncation/timeouts&lt;/td&gt;
&lt;td&gt;Successful requests around 88–236 s; the initial concurrent run had 408&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The more accurate conclusion is not “one model is absolutely smarter,” but:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Under this routing and these budgets, GPT-5.6-SOL was more likely to collapse complex reasoning into a final answer, making it a better fit for workflows that need a readable derivation or runnable code right away.&lt;/li&gt;
&lt;li&gt;Kimi K3’s main issue here was the conversion efficiency between reasoning budget and visible output; even when the math limit was raised to &lt;code&gt;10000&lt;/code&gt; tokens, it still did not finish.&lt;/li&gt;
&lt;li&gt;GPT-5.6-SOL’s code should not be trusted blindly either. Its function logic passed independent checks, but the attached test fixture had a value-calculation error.&lt;/li&gt;
&lt;li&gt;For production selection, you should record &lt;code&gt;finish_reason&lt;/code&gt;, reasoning tokens, latency, and local test results together, instead of relying only on the final sentence saying the answer is correct.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Reproducing the Experiment
&lt;/h2&gt;

&lt;p&gt;The test script and sequential retry results are stored here, and the summary of the initial concurrent run is also written into the script output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.tmp/kimi_k3_vs_gpt56sol_test.py
.tmp/kimi-k3-vs-gpt56sol-results.json
.tmp/retry-gpt56sol-math.json
.tmp/retry-gpt56sol-physics.json
.tmp/retry-gpt56sol-programming.json
.tmp/retry-kimi-k3-math.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For reruns, it is best to pin the model IDs, prompt, temperature, &lt;code&gt;max_tokens&lt;/code&gt;, and concurrency level, and save each output to a separate file. Upstream traffic, cache hits, and rate-limit state all affect latency; in this article, HTTP 408, &lt;code&gt;length&lt;/code&gt;, and read timeouts were all recorded as part of the test results rather than being hidden.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsffrw3qwb04h4wr1xypr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsffrw3qwb04h4wr1xypr.png" alt="en comparison chart" width="800" height="672"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
    <item>
      <title>Kimi K3와 Claude Fable 5 실측: 수학 검증, 코드 완결성, 응답 속도의 차이</title>
      <dc:creator>Jemmmm</dc:creator>
      <pubDate>Fri, 17 Jul 2026 17:11:43 +0000</pubDate>
      <link>https://dev.to/metaviiii/kimi-k3wa-claude-fable-5-silceug-suhag-geomjeung-kodeu-wangyeolseong-eungdab-sogdoyi-cai-1feo</link>
      <guid>https://dev.to/metaviiii/kimi-k3wa-claude-fable-5-silceug-suhag-geomjeung-kodeu-wangyeolseong-eungdab-sogdoyi-cai-1feo</guid>
      <description>&lt;h1&gt;
  
  
  Kimi K3와 Claude Fable 5 실측: 수학 검증, 코드 완결성, 응답 속도의 차이
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0cns7fwp6tsgel78129t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0cns7fwp6tsgel78129t.png" alt="Kimi K3와 Claude Fable 5" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;운영 환경에서는 정답처럼 보이는 문장보다 검증 가능한 과정과 완성된 산출물이 중요합니다. 이번 테스트는 중간 계산과 실행 가능한 코드까지 확인했습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이번 테스트의 핵심 차이
&lt;/h2&gt;

&lt;p&gt;Fable 5의 평균 지연은 37.1초, Kimi K3는 108.0초였습니다. 반면 수학 문제의 중간 상태 검증은 Kimi K3가 더 일관적이었습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  결과 요약
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;과제&lt;/th&gt;
&lt;th&gt;Kimi K3&lt;/th&gt;
&lt;th&gt;Claude Fable 5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;HHTH 확률&lt;/td&gt;
&lt;td&gt;통과&lt;/td&gt;
&lt;td&gt;최종값은 통과했지만 중간 산술 오류&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;충돌과 스프링&lt;/td&gt;
&lt;td&gt;통과&lt;/td&gt;
&lt;td&gt;통과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Python 집계&lt;/td&gt;
&lt;td&gt;4k에서 잘림, 7k에서 통과&lt;/td&gt;
&lt;td&gt;4k에서 잘림, 7k에서 통과&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;일정 제약&lt;/td&gt;
&lt;td&gt;통과&lt;/td&gt;
&lt;td&gt;통과&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;평균 지연 — Kimi K3: 108.0 s
평균 지연 — Claude Fable 5: 37.1 s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  reasoning tokens와 운영 비용
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Kimi K3 completion tokens: 13,975
Kimi K3 reasoning tokens: about 12,500
Fable 5 completion tokens: 10,187
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kimi K3는 첫 라운드에서 약 12,500 reasoning tokens를 보고했습니다. 더 많은 검증은 높은 지연과 긴 코드의 가시 출력 부족으로 이어질 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  코드: 첫 실패 원인은 출력 예산
&lt;/h2&gt;

&lt;p&gt;Python 함수는 &lt;code&gt;request_id&lt;/code&gt; 기준 retry 병합, ISO-8601 시간 처리, 반개구간 &lt;code&gt;[start,end)&lt;/code&gt; 필터링, token·지연 집계, 다중 키 정렬을 수행해야 했습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Round 1, max_tokens=4000:
Kimi K3 finish_reason=length
Fable 5 finish_reason=length

Retry, max_tokens=7000:
Kimi K3: 145.2 s, 5199 completion tokens, 8/8 assertions
Fable 5: 46.6 s, 3710 completion tokens, 8/8 assertions
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4,000 tokens에서는 두 응답 모두 length로 종료됐습니다. 7,000으로 늘리자 두 Python 구현 모두 같은 8개 assert를 통과했습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  테스트 조건
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Test date: 2026-07-17
Base URL: https://cn.crazyrouter.com/v1
Endpoint: POST /v1/chat/completions
Models: kimi-k3, claude-fable-5
temperature: 0.2
Round 1 max_tokens: 4000
Coding retry max_tokens: 7000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;두 모델에는 동일한 프롬프트와 검수 기준을 적용했습니다. HTTP 200만으로 성공을 판단하지 않고 최종값, 중간 상태, &lt;code&gt;finish_reason&lt;/code&gt;, 실행 가능한 Python, 동일한 assertion을 확인했습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  수학: 최종 답보다 중간 일관성
&lt;/h2&gt;

&lt;p&gt;편향된 동전 문제는 &lt;code&gt;P(H)=3/5&lt;/code&gt;, 패턴 중첩 허용 조건에서 첫 &lt;code&gt;HHTH&lt;/code&gt;까지의 기대 횟수를 묻습니다. 정답은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;E[T] = 715/54 ≈ 13.2407407407
E1 = 625/54
E2 = 475/54
E3 = 170/27
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Kimi K3는 상태 방정식, 패턴 border, 공정한 동전 특수값을 교차 검증했습니다. Fable 5는 최종값은 맞았지만 두 중간값이 자체 방정식과 일치하지 않았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  물리: 두 모델 모두 단계 분리 성공
&lt;/h2&gt;

&lt;p&gt;물리 문제는 완전 비탄성 충돌, 마찰, 스프링 압축의 두 단계로 구성했습니다. 두 모델의 결과는 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Post-collision speed: 2.4 m/s
Energy lost in collision: 21.6 J
Maximum compression: about 0.2212 m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;두 모델 모두 스프링 압축량 약 0.2212 m와 Eli, Bo, Ada, Cici, Deng의 유일 일정을 찾았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  제약 추론: 동일한 유일 해
&lt;/h2&gt;

&lt;p&gt;두 모델은 동일한 유일한 요일별 일정을 찾았습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;월요일&lt;/th&gt;
&lt;th&gt;화요일&lt;/th&gt;
&lt;th&gt;수요일&lt;/th&gt;
&lt;th&gt;목요일&lt;/th&gt;
&lt;th&gt;금요일&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Eli&lt;/td&gt;
&lt;td&gt;Bo&lt;/td&gt;
&lt;td&gt;Ada&lt;/td&gt;
&lt;td&gt;Cici&lt;/td&gt;
&lt;td&gt;Deng&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;두 모델 모두 스프링 압축량 약 0.2212 m와 Eli, Bo, Ada, Cici, Deng의 유일 일정을 찾았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  업무별 모델 라우팅
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;대량의 테스트 가능한 코드는 Fable 5부터 평가&lt;/li&gt;
&lt;li&gt;정확한 수학 전개에는 Kimi K3 유지&lt;/li&gt;
&lt;li&gt;긴 코드는 finish_reason과 실행 테스트를 필수화&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  테스트의 한계
&lt;/h2&gt;

&lt;p&gt;작은 표본의 실측이지 보편적인 순위표가 아닙니다. 운영 평가에서는 각 범주를 20~50회 반복하고 성공률, 잘림 비율, 첫 token 시간, P50/P95/P99 지연, completion tokens, 승인된 결과당 비용을 측정해야 합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  결론
&lt;/h2&gt;

&lt;p&gt;이번 표본에서 Fable 5는 빠른 전달 경로였고, Kimi K3는 수학 중간 상태를 더 신중하게 검증하는 경로였습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;base_url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://cn.crazyrouter.com/v1&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;completions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;kimi-k3&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;temperature&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mf"&gt;0.2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;4000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;messages&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;role&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;content&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;YOUR_TEST_PROMPT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}],&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;choices&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;finish_reason&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;전체 글:  &lt;a href="https://crazyrouter.com/ko/blog/kimi-k3-vs-claude-fable-5-hard-reasoning-benchmark-2026-ko" rel="noopener noreferrer"&gt;https://crazyrouter.com/ko/blog/kimi-k3-vs-claude-fable-5-hard-reasoning-benchmark-2026-ko&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;API:  &lt;a href="https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=kimi_k3_fable5_multilingual_20260718&amp;amp;utm_content=kimi-k3-vs-claude-fable-5-hard-reasoning-benchmark-2026-ko__body_cta&amp;amp;utm_term=kimi-k3+claude-fable-5+benchmark" rel="noopener noreferrer"&gt;https://crazyrouter.com/register?utm_source=crazyrouter_blog&amp;amp;utm_medium=article&amp;amp;utm_campaign=kimi_k3_fable5_multilingual_20260718&amp;amp;utm_content=kimi-k3-vs-claude-fable-5-hard-reasoning-benchmark-2026-ko__body_cta&amp;amp;utm_term=kimi-k3+claude-fable-5+benchmark&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>llm</category>
      <category>benchmark</category>
    </item>
  </channel>
</rss>
