オープンソース/クローズドソースモデルの実践的テスト - Sonnet 5と主要な国内オープンソースモデル4つのプログラミング機能に関する比較レビュー
今日は、オープンソースモデルとクローズドソースモデルの比較テスト結果をご紹介します。Sonnet 5と比較し、Sonnet 5の性能を検証するために、Kimi K2.7 Code、GLM 5.2、MiniMax M3、DeepSeek V4 Proという4つのオープンソースモデルを選びました。
今日は、オープンソースモデルとクローズドソースモデルの比較テスト結果をいくつかご紹介します。
Sonnet このシリーズは2月に最後に更新されましたが、今回は『Fable 5』の情報解禁に伴い、再び更新されました。 Claude 公表されているデータに基づくと、ソネットは一般的にOpus 4.6および4.7よりも優れているが、Opus 4.8よりはやや劣る。しかし、実際の運用においては、ソネットはOpusよりも高価である。
ソネット5では新しいトークナイザーが使用されており、同じテキストがより多くのトークンに分割されるため、以前よりも総コストが高くなっています。
私は4つ選びました。オープンソースモデル:Kimi K2.7 CodeSonnet 5の性能を検証するため、GLM 5.2、MiniMax M3、DeepSeek V4 Proと比較してみましょう。
ケース1のバグ修正
プロンプトワード:
以下は、金額文字列をセントに変換するPythonコードスニペットです。オンライン版では、「1,234.50」、「$0.99」、「-12.30」、「12」でエラーまたは一貫性のない結果が発生することが判明しました。この関数を修正し、pytestテストを提供してください。
def parse_money_to_cents(value: str) -> int:
value = value.replace("$", "")
dollars, cents = value.split(".")
return int(dollars) * 100 + int(cents)
Sonnet 5:
Sonnet 5の計算方法は非常に安定しており、金額の処理にDecimalを使用し、浮動小数点誤差を回避しています。問題は、入力データのクリーニングが緩すぎることです。1,2,3は123として扱われ、1$2は12として扱われ、$$12も12として扱われるため、不正なデータに対する防御としては不十分です。
Kimi K2.7 Code:
Kimi K2.7 Codeには書式チェック機能があり、12.345のように小数点以下2桁を超える金額は拒否されます。しかし、書式チェックの前に$記号とコンマを削除すると、1,2,3、1$2、$$12などが有効な数値として処理されてしまいます。さらに、+$12.30(プラス記号と通貨記号を含む)のような加算は拒否されます。
GLM 5.2:
GLM 5.2 では、1,234.50、$0.99、-12.30、12 などの処理に関する根本的な問題が修正されました。しかし、最初に完全な書式チェックは行われませんでした。例えば、-12.30 は正の数として計算され、12.-3 も計算され、1,2,3 も受け入れられました。
MiniMax M3:
MiniMax M3は、計算を進める前に、入力された金額が通常の金額形式に準拠しているかどうかを最初に確認します。そのため、1,2,3のようなランダムなカンマは拒否され、12300ポイントと誤って計算されることはありません。ただし、ルールはやや保守的で、.99や$.99のような一般的な略語は拒否され、$-12.30のような記号の位置も互換性がありません。
DeepSeek V4 Pro:
DeepSeek V4 Proのメインプロセスは実行できますが、エッジケースへの対応が最も脆弱です。たとえば、空の文字列、空白文字、単一の$文字はすべて0を返しますが、これは金銭を扱う場面では危険です。$-12.30は-1230ではなく-1170として計算されます。また、-12.30は「入力が有効かどうかを最初にチェックする」レイヤーがないため、誤って受け入れられます。
今回のランキング:MiniMax M3 > Sonnet 5 > Kimi K2.7 Code > GLM 5.2 > DeepSeek V4 Pro
ケース2 境界条件の推論
プロンプトワードTypeScript 関数 `groupByWindow(events, windowMs)` を実装してください。`events` は時間で昇順にソートされた配列で、各要素は `{id, ts}` です。この関数は隣接するイベントをグループ化する必要があります。現在のイベントと現在のグループ内の最初のイベントの `ts` の差が `windowMs` 以下であれば、それらを同じグループに入れ、そうでなければ新しいグループを作成します。実装と 6 つの境界テストを提供してください。
Sonnet 5:
ソネット5は明確なアプローチを採用しており、特に「連鎖ドリフト」問題に焦点を当てています。また、空の配列、単一要素、境界値と等しい場合、範囲外の場合、windowMs=0の場合についても説明しています。ただし、ウィンドウ内の負の数の処理方法など、入力保護に関するいくつかの点が欠けています。
Kimi K2.7 Code:
Kimi K2.7 Codeでの実装は正しく、プロジェクトはpackage.json、tsconfig、Vitestの設定も完了しています。ただし、データ型はごく一般的なものであり、戻り値にはイベントの追加フィールド型が反映されません。
GLM 5.2:
GLM 5.2 のグループ化メカニズムは非常に明確です。毎回、現在のイベントを「グループ内の最初のイベント」と比較し、windowMs もチェックします。負の値や無限大の値は直接エラーとなるため、実際の関数に適しています。型の保持も優れており、渡されたイベントの型に関係なく、戻り値の型は対応する型になります。
MiniMax M3:
MiniMax M3のコアロジックは正しく、`windowMs`が0の場合、ウィンドウと完全に等しい場合、ウィンドウをわずかに超える場合、およびグループヘッダーアンカーの場合など、多くのシナリオを網羅したテストが用意されています。また、各イベントの`ts`属性が有効な数値であるかどうかもチェックしています。ただし、`id`型は文字列として記述されているため、数値型の`id`シナリオにおける型テストに失敗します。さらに、`windowMs`は負の数をブロックしません。
DeepSeek V4 Pro:
DeepSeek V4 Pro関数の基本的なロジック自体は正しく、最後のグループの最初のステートメントを基準としています。しかし、テストファイルには文字化けした文字が含まれており、空の配列のアサーションがコメントアウトされ、5番目のアサーションの冒頭もコメントアウトされているため、後続のステートメントが実行されていないように見えます。また、6番目のステートメントのid:5の行もコメントアウトされており、入力が期待どおりではありません。
この場合のランキング:GLM 5.2 > Sonnet 5 > Kimi K2.7 Code > MiniMax M3 > DeepSeek V4 Pro
症例3 コードレビュー
プロンプトワード:
以下のNode.jsコードスニペットを確認し、本番環境での障害、セキュリティ上の問題、またはデータ破損を引き起こす可能性のある要因を特定してください。深刻度順に並べ替え、各問題について原因と最低限許容できる修正策を提示してください。
app.post('/transfer', async (req, res) => {
const { from, to, amount } = req.body
const user = await db.user.findFirst({ where: { id: from } })
if (user.balance < amount) return res.send('no money')
await db.user.update({ where: { id: from }, data: { balance: user.balance – amount } })
const target = await db.user.findFirst({ where: { id: to } })
await db.user.update({ where: { id: to }, data: { balance: target.balance + amount } })
res.send('ok')
})
Sonnet 5:
Sonnet 5は、送金コードの中核的なメカニズムの問題、すなわち、送金関連操作が「引き落としの成功、受取の成功、失敗時のロールバック、および同時実行中の過剰引き落としの防止」を同時に満たす必要があるという問題に取り組んでいます。このソリューションでは、トランザクションを使用して両側の更新をカプセル化し、「十分な残高」と「引き落とし」を1つのステップに統合することで、同時実行時の二重支払いを防止します。認証、マイナス金額、存在しないアカウント、ステータスコード、および重複コミットについてもカバーしています。
Kimi K2.7 Code:
Kimi K2.7 コードは、認証ソース、入力検証、アトミックな控除、トランザクションによる融資実行といった重要なポイントを正確に捉えています。`from` パラメータはログインユーザーから送信される必要があり、リクエストボディは信頼できないと明示的に述べています。これは非常に重要です。小さな問題点としては、通貨単位の扱いがやや一貫性に欠ける点が挙げられます。インターフェースの金額が元である可能性があると最初に述べ、次にそれをセントに変換していますが、例ではデータベースの残高が既にセントで設定されているというデフォルト設定になっています。
GLM 5.2:
GLM 5.2は、現実世界のオンラインシステムを明確に考慮しており、同時実行性、残高不足、存在しないターゲットアカウント、認証、金額の精度、冪等性、レート制限、タイムアウトといった問題に対処しています。メカニズムの説明は詳細ですが、修正箇所はやや散在しています。認証は5番目にランク付けされており、これは低い評価です。ユーザーが任意に指定できる資金移動を優先的に対応すべきでしょう。
MiniMax M3:
MiniMax M3 では、デプロイ前のセキュリティ チェックリストのように、冪等性、監査ログ、レート制限、エラー ボディについて言及しています。しかし、いくつかの記述は信頼できません。Prisma の例では、`update.where` に `balance: { gte: amount }` が記述されています。また、`req.body` の解析されていない部分も間違っており、`undefined` を分割代入すると直接エラーが発生します。
DeepSeek V4 Pro:
DeepSeek V4 Proは、トランザクションなし、認証なし、マイナス金額、存在しないターゲットアカウント、浮動小数点金額、冪等性といった主な問題点を特定しました。しかし、最初の修正策(DeepSeek V4 Proは資金の確認と控除を行う前に残高を読み取る)では、同時実行条件下でエラーが発生する可能性があります。少なくとも、「残高が十分な場合のみ控除する」という単一ステップの更新処理を使用する必要があります。
このケースのランキング:Sonnet 5 > Kimi K2.7 Code > GLM 5.2 > MiniMax M3 > DeepSeek V4 Pro
ケース4:コードのリファクタリング
プロンプトワード:
以下の関数を、動作を変更せずに保守性の高いバージョンにリファクタリングし、追加するテストケースを作成してください。サードパーティライブラリは使用しないでください。
function price(order) {
let total = 0
for (const item of order.items) {
if (item.type === 'book') total += item.price * item.qty * 0.9
else if (item.type === 'food') total += item.price * item.qty
else if (item.type === 'luxury') total += item.price * item.qty * 1.2
else total += item.price * item.qty
}
if (order.country === 'US') total *= 1.07
if (order.country === 'DE') total *= 1.19
if (order.vip) total *= 0.95
return Math.round(total * 100) / 100
}
Sonnet 5:
Sonnet 5 のチュートリアルは、関数分割、ルックアップテーブルの使用、元の計算順序の保持、および `Math.round(total * 100) / 100` というトピックに最も関連しています。また、ループの累積順序、税引き後の VIP、および未知の型のデフォルト値が変更されない理由についても説明しています。
Kimi K2.7 Code:
Kimi K2.7 コードは 7 つのテストすべてに合格し、元の動作を維持しており、満足のいくリファクタリングと言えます。ただし、テストカバレッジが広すぎたため、デフォルトの食品ブランチや国が指定されていない場合など、些細ながらも一般的な動作を個別にテストしていませんでした。
GLM 5.2:
GLM 5.2の11個のテストはすべて合格し、コードはクリーンで、データ型も適切に追加されています。ITEM_MULTIPLIERS / TAX_RATESにより、新しいカテゴリや国を簡単に追加でき、不要な追加要件もありません。
MiniMax M3:
MiniMax M3のコードは、エンジニアリングの素晴らしさが感じられ、22のテストすべてに合格しました。しかし、今回の課題は「リファクタリング」であり、MiniMaxは積極的に動作を変更しました。具体的には、入力検証を追加し、VIP型を制限し、負の数と小数を拒否し、丸め処理をMath.roundからtoFixedに変更しました。
DeepSeek V4 Pro:
DeepSeek V4 Proは、vite-nodeを使用してローカルマシン上で正常に動作し、13個のテストすべてに合格しました。実装の方向性は正しく、テーブル駆動処理、単一アイテム計算、税金、VIP、丸め処理はすべて維持されていました。また、国を指定しない個別のシナリオ、複数のシナリオを組み合わせたシナリオ、複数のタイプ、および2つの丸め処理例についてもテストしました。
今回のランキング:Sonnet 5 > GLM 5.2 > DeepSeek V4 Pro > Kimi K2.7 Code > MiniMax M3
事例5:中国語の書き方
プロンプトワード:
以下の製品説明を、自然で説得力のある中国語のウェブサイトテンプレートに書き直してください。要件:… AI 明確かつ簡潔な言葉遣いを心がけ、「エンパワーメント」「クローズドループ」「再構築」「究極」といった曖昧な形容詞や用語は避けてください。重要な情報のみを記載し、文章は180文字以内に収めてください。
[インクの線は、散らばった資料を整理したり、記事の構成を洗練させたり、異なるトーンで書き直したり、チェックしたりするために使用できます...] AI それは言語の本質と繊細さを捉えつつ、著者が頻繁に用いる言葉や慣用表現も保存している。
Sonnet 5:
ソネット5は、メモ、チャットログ、音声記録などに資料が散在しているという問題点を取り上げることから始まり、自然と整理、書き直し、検索に関する議論へと展開していく。 AI 個性の表現や維持という点では、実際の製品コピーライティングと非常によく似ている。
Kimi K2.7 Code:
Kimi K2.7コードは、長さ、オブジェクト、関数、シナリオに関する要件を満たしており、恣意的な設定は一切追加されていません。
GLM 5.2:
GLM 5.2の「手戻りの回数が減る」という記述は良いですね。ただし、40分のインタビューのうち20分を直接送信できる機能は、私が独自に追加したものです。
MiniMax M3:
MiniMax M3は180文字の制限を超え、デスクトップ版や機密語リストといった機能を追加したが、それらは提供されていなかった。まるで製品紹介ページではなく、製品詳細ページのような内容だ。
DeepSeek V4 Pro:
DeepSeek V4 Proはどちらかというとブロガーに近い。推薦する「すべてを一度に投入する」という表現はあまりにも口語的で、公式サイトで説明されている特性の本質を十分に捉えていません。
このケースのランキング:Sonnet 5 > Kimi K2.7 Code > GLM 5.2 > MiniMax M3 > DeepSeek V4 Pro
ケース6 データ分析
プロンプトワード:
以下は、ある製品の8週間分のデータです。生育状況が健全かどうかを判断し、対処すべき最も差し迫った問題点を特定してください。
week, visitors, signup_rate, activation_rate, paid_rate, churn_rate
1, 10000, 8.0%, 42%, 6.0%, 3.0%
2, 12000, 7.5%, 39%, 5.8%, 3.4%
3, 15000, 6.8%, 35%, 5.2%, 4.1%
4, 18000, 6.1%, 31%, 4.7%, 4.8%
5, 22000, 5.4%, 28%, 4.2%, 5.6%
6, 26000, 4.9%, 24%, 3.8%, 6.3%
7, 30000, 4.4%, 21%, 3.4%, 7.1%
8, 35000, 3.9%, 18%, 3.0%, 8.0%
Sonnet 5:
Sonnet 5は、すべてのコンバージョン率が同時にスムーズに低下しているというシグナルを捉え、低品質なトラフィックを疑わしいものとして優先的に検出しました。しかし、有料ユーザーアルゴリズムに問題がありました。シーケンシャルファネルで計算されていると表示されていたにもかかわらず、表内の有料ユーザー数にアクティベーション率が乗算されていなかったのです。
Kimi K2.7 Code:
Kimi K2.7コードは、paid_rateの前提条件を簡潔かつ明確に説明しています。しかし、トラフィック品質の原因判断を遅らせすぎているという問題があります。
GLM 5.2:
GLM 5.2の計算は基本的に正しく、分析も完了しているが、結論に偏りがある。活性化が唯一のボトルネックであり、2週目と3週目のチャネル変化というより大きな手がかりを見落としやすい。
MiniMax M3:
MiniMax M3はトラフィック品質とアクティベーションの承認状況を表示できますが、キーの計算方法が間違っています。
DeepSeek V4 Pro:
DeepSeek V4 Proは、有料ユーザー数が第8週に約20人から約7人に減少したと算出し、訪問数は増加したものの、アクティベーション数と有料ユーザー数は減少したと結論付けました。これは非常に正確な分析でした。また、そのメカニズムも明確に説明されました。問題はアクティベーション率にあるように見えましたが、根本原因はおそらくトラフィックの質にあり、それに対する対策として、チャネルごとにトラフィックを細分化することが推奨されました。
今回のランキング:DeepSeek V4 Pro > Sonnet 5 > Kimi K2.7 Code > GLM 5.2 > MiniMax M3
ケース7:ウェブページ生成
プロンプトワード:
VelaRunというブランドの製品ウェブサイトを1ページのみ作成してください。このブランドの新製品は、VelaRun Tempoという都市型トレーニングランニングシューズです。
必要とする:
1. 最初の画面では、ユーザーが靴を一目で確認できるようにする必要があります。商品をカードや小さな画像の中に隠さないでください。
2. このページには以下が含まれます。
– トップナビゲーション
– ヒーローセクション:商品画像、商品名、価格、カラー選択、サイズ選択、カートに追加
– セールスポイント:クッション性、通気性、安定性、軽量性
– フォトストーリーセクション:都市部のランニングシーン、抽象的なイラストは避ける
– 仕様およびパラメータ領域
– ユーザーレビューセクション
- モバイル固定購入バー
3. 相互作用:
色を切り替えると、メイン画像と選択状態が更新されます。
サイズが選択されていない場合は、「購入」をクリックした際に確認メッセージが表示されるべきです。
– カートに追加すると小さなトーストが表示されます
4. スタイル:テンプレートウェブサイトのような安っぽいデザインではなく、清潔感のあるスポーティーなデザインにしましょう。青紫のグラデーションを多用したり、丸みを帯びたカードを積み重ねたりするようなデザインは避けましょう。
5. レスポンシブデザインは完全でなければなりません。モバイルデバイス上では、画像、ボタン、テキストが重なってはいけません。
6. React + TypeScript とカスタム記述の CSS を使用して実装されています。
7. 完全な実行可能なコードを提供してください。
Sonnet 5:
Sonnet 5は非常に充実したショッピング機能を備えています。色、サイズ、在庫切れサイズの警告、売り切れサイズ、カート内の数量、トースト通知、モバイル購入オプションなどが含まれており、ページ構造も完璧です。
Kimi K2.7 Code:
Kimi K2.7 Codeのレイアウトはほぼ完成しているものの、テンプレートのような印象を受ける。ただし、ショッピングカートには数量に関するフィードバックがなく、操作できる項目も色、サイズ、プロンプトのみとなっている。
GLM 5.2:
GLM 5.2は、すっきりとしたビジュアルデザインを採用しており、仕様、セールスポイント、都市でのテスト事例などは、実際の製品ページを彷彿とさせます。しかし、操作性は最小限で、ショッピングバッグの数値は固定表示であり、ページ全体がショーケースのような印象を与えます。
MiniMax M3:
MiniMax M3はダークトーンの配色で、各コンポーネントが分かりやすく説明されており、ページには豊富な情報が掲載されています。購入ボタンやウィッシュリストボタンも、まるでECサイトのような雰囲気です。しかし、中央の緑色のデザインは理解できません。
DeepSeek V4 Pro:
DeepSeek V4 Proは靴の描画にSVGを使用していたため、やや簡略化されたモデルのように見え、実際の製品画像のような品質には欠けていたという点を除けば、それ以外はすべて素晴らしかった。
このケースのランキング:Sonnet 5 > DeepSeek V4 Pro > MiniMax M3 > GLM 5.2 > Kimi K2.7 Code
ケース8 3Dアニメーション
プロンプトワード:
単一ページの3D製品ウェブサイトを作成してください。製品名はEchoStoneで、デスクトップアプリケーションです。知的スピーカー。
技術要件:
1. React + TypeScript + Three.js を使用する。
2. 最初の画面は全画面の3Dシーンでなければなりません。3D要素を小さなカードに配置しないでください。
3. 3Dシーン内に回転可能な要素が必要です。知的スピーカーモデルは、外部の3Dファイルに依存することなく、Three.jsの基本的なジオメトリを使用してモデリングできます。
4. 講演者は以下の内容を含める必要があります。
– 円筒形の本体
– トップタッチリング
– スピーカーのメッシュテクスチャまたは穴配列
– ステータスランプ
5. 相互作用:
マウスで製品をドラッグして回転させます。
– スクロールホイールのズームには制限があります
– 色のボタンをクリックして本体の色を変更します
「デモ再生」をクリックすると、ステータスランプと音波のアニメーションが動き始めます。
6. ページコンテンツ:
– トップナビゲーション
– ヒーローのコピーライティングは3Dシーンにも適用されます。
– 色の選択
– 3つのセールスポイント
– 技術仕様エリア
7. スタイル:高級家電製品のような、控えめで清潔感のあるデザイン。青紫のグラデーションや光る球体の背景は使用しない。
8. レスポンシブデザイン:デスクトップとモバイルデバイスの両方で、3Dレイアウトが空白になったり、極端に切り取られたり、メインボタンが隠れたりしてはいけません。
9. 完全な実行可能なコードを提供してください。
Sonnet 5:
Sonnet 5の3Dプロトタイプが最初の画面に表示され、円筒形の本体、上部のタッチリング、メッシュ、ライトストリップ、そしてソニックコイルが特徴となっている。スクロールホイールによるドラッグ、回転、ズーム操作も完全に機能する。この機構には、サイズ変更、リソースのクリーンアップ、メッシュのインスタンス化といった機能が含まれており、保守可能な製品デモを彷彿とさせる。
Kimi K2.7 Code:
Kimi K2.7コードは、オービットコントロール、カラー切り替え、音波アニメーションなど、豊富な機能を備えており、概ね正常に動作します。問題は、構造が中央集権的すぎることと、視覚的な仕上げがやや粗いことです。
GLM 5.2:
GLM 5.2には、トップスケールとメッシュが欠けています。音波の方向が少し不自然で、モデルが大きすぎてタイトルやコントロールが見えにくくなっています。
MiniMax M3:
MiniMax M3モデルは、細部まで精巧に作られており、アニメーション機構も優れています。ベース、ライトストリップ、浮遊アニメーションはすべて含まれていますが、音波は含まれていません。
DeepSeek V4 Pro:
なぜかDeepSeek V4 Proモデルには余分なリングが付いており、これは大きな欠点です。それ以外はかなり良い製品で、期待通りの機能はすべて備えています。
今回のランキング:Sonnet 5 > MiniMax M3 > Kimi K2.7 Code > GLM 5.2 > DeepSeek V4 Pro
Sonnet 5 はかなり安定した性能を発揮しているようだ。8 つのテストケースにおいて、Sonnet 5 はコードレビュー、コードリファクタリング、中国語ライティング、ウェブページ生成、3D アニメーションといった総合的なタスクで 1 位を獲得した。1 位にならなかった数少ないケースでも、概ね 2 位を獲得している。
4オープンソース各モデルにはそれぞれ長所があります。
- GLM 5.2は、境界条件と型保護の点で最高です。
- Kimi K2.7のコードは安定して動作し、テストとドキュメントもかなり充実している。
- MiniMax M3は、高度なエンジニアリング感覚を備えたソリューションを容易に生成でき、財務分析や3Dモデルの詳細度も非常に優れています。
- DeepSeek V4 Proはデータ分析において最高の性能を発揮します。
オープンソースこれらのモデルは既に多くの実世界のタスクを処理できる能力を備えています。GLM 5.2は非常にきめ細かな境界推論が可能で、Kimi K2.7は完全なコードを提供し、MiniMax M3はビジョンとエンジニアリングの両面で驚くべき改善を実現し、DeepSeek V4 Proはデータ分析に非常に優れています。
個々の事例に着目すると、ソネット5はしばしば追いつかれ、あるいは凌駕されることさえある。
しかし、8つの事例すべてを総合的に検討すると、Sonnet 5は依然としてその優位性を示しています。コードレビュー、リファクタリング、中国語文書作成、ウェブページ生成、3Dアニメーションといったタスクにおいて、Sonnet 5は基本的なエラーが少なく、より複雑な要件にも適切に対応できます。
この安定性は、手直し時間、ローンチリスク、手動レビューコストに直接影響を与える。
したがって、価格差が大きい場合は、選択がより明確になります。リスクが低く、頻繁に発生するタスクで、まとめて検証できるものを優先的に割り当てることができます。オープンソースモデル。
リスクの高いタスク、例えば複雑なリファクタリング、デプロイ前のコードレビュー、顧客に直接配信するページ、高度なコピーライティング品質が求められるコンテンツなどは、Sonnet 5の方が適しています。
費用を節約する最善の方法は、モデルを個別に実行することです。オープンソースこのモデルは実行、テスト、および結果の生成を担当し、一方、ソネット5は重要な判断と最終決定を担当します。
元のリンク:ソネットシリーズはバージョン5にアップデートされ、今回は国内生産モデルの中から4機種を選びました。オープンソースモデル対それ