概要
最近話題のTypeSafe JevとOpenAI、Claudeをリバーシで対戦させてみました。
各AIに同じ盤面と合法手を渡し、選んだ位置へ石を置きます
比較用のRandomも加え、4種類によるリーグ戦を12試合行いました
使用したモデル
今回使用したモデルは下記の3種類です
| AI | モデル |
|---|---|
| Jev | jev-latest |
| OpenAI | gpt-5.6-luna |
| Claude | claude-sonnet-5 |
Claudeは当初Haikuを使う想定でしたが、Haikuがしばらく更新されていないため、コストと速度のバランスを考えてclaude-sonnet-5へ変更しました
そのため、以降に記載するClaudeの勝敗と応答時間はHaikuではなくSonnet 5の結果です
Jevは複数の候補から1つを選ぶChoiceを使用しました
OpenAIとClaudeにも同じ盤面と合法手を渡し、候補の中から着手位置を返すようにしています
この3種類に加えて、比較基準としてRandomを用意しました
RandomはAIモデルではなく、その時点の合法手から暗号学的乱数で1手を選ぶローカル処理です
作ったもの
人間対AIとAI対AIの両方で遊べるリバーシを作りました
AI対AIでは黒と白に別のモデルを設定できます
リーグ戦では参加するAIと巡数を選択し、各組み合わせについて先手と後手を入れ替えて対戦します
画面には下記の情報を表示しています
- 現在の盤面
- 黒と白の石数
- 選択した手
- APIの応答時間
- 黒と白それぞれの合計思考時間
- モデルごとの勝敗、石差、平均応答時間
- APIから返った生のレスポンス
対局結果はブラウザに保存されるため、リーグ戦が終わったあとに成績を比較できます
AIに渡したプロンプト
各AIには現在の盤面と、ルール上置くことのできる位置を渡しています
AIが盤面を画像として見ているわけではありません
ゲーム側が盤面を8行の文字列へ変換し、候補となる合法手を作っています
Jev、OpenAI、Claudeへ渡した共通部分は下記です
You are playing Reversi/Othello. Choose the strongest legal move for the current player.
Current player: Black (B).
Rows are 1-8 and columns are A-H. Consider corners, mobility, stability, and avoid dangerous squares.
..WWWW..
..WWWWWW
...BBWW.
...WWWW.
..WBBBW.
...WBW..
....B...
....B...
Legal moves: A3 (flips 1), B3 (flips 2), C3 (flips 1), H3 (flips 3), ...
手番が白の場合はCurrent playerをWhite (W)に変更します
単に盤面と座標を渡すだけでなく、角、相手の合法手の数、石の安定性、危険なマスを考慮するように指示しました
また各合法手について、その手で何個の石が返るかも渡しています
3モデルで共通部分は揃えましたが、APIごとに構造化出力の仕組みが異なるため、追加指示は下記のようにしています
| AI | 追加した指示・出力方法 |
|---|---|
| Jev | ChoiceのinstructionsにChoose the strongest legal Reversi moveを指定。合法手ごとにPlay D3; flips 2 disc(s)のようなcriteriaを作成 |
| OpenAI |
The move must be one of the legal moves.と指示。合法手だけを列挙したplay_move関数を必ず呼び出させ、reasoning effortはlowに設定 |
| Claude | 共通プロンプトをユーザーメッセージとして送信。合法手だけを列挙したplay_moveツールを必ず呼び出すように設定 |
OpenAIとClaudeでは、返せる座標を合法手のenumに限定しています
JevでもChoiceの候補を合法手だけにしているため、3モデルとも候補外の位置は選べません
モデルごとに専用の攻略プロンプトを作ることはせず、同じ情報から1手を選ぶ条件に揃えました
一方で、JevはChoice、OpenAIとClaudeはツール呼び出しを使っているため、入力と出力の形式が完全に同一というわけではありません
この違いも含めた実装上の比較として結果を見る必要があります
RandomだけはAPIを使わず、その時点の合法手から一様ランダムに選びます
AIにルール違反の位置を自由に生成させるのではなく、ゲーム側で候補を限定する構成です
そのため今回測っているのは、盤面を見て合法手の中から良い位置を選べるかどうかです
4種類でリーグ戦を行う
Jev、OpenAI、Claude Sonnet 5、Randomの4種類で総当たり戦を行いました
全6組み合わせについて先手と後手を1試合ずつ、合計12試合です
| 順位 | AI | 試合 | 勝 | 分 | 敗 | 石差 | 平均応答時間 |
|---|---|---|---|---|---|---|---|
| 1 | OpenAI | 6 | 6 | 0 | 0 | +150 | 2,169 ms |
| 2 | Jev | 6 | 4 | 0 | 2 | -22 | 287 ms |
| 3 | Claude Sonnet 5 | 6 | 1 | 0 | 5 | -2 | 2,866 ms |
| 4 | Random | 6 | 1 | 0 | 5 | -126 | 0 ms |
OpenAIは6戦全勝でした
Jev、Claude、Randomのすべてに対して、先手と後手の両方で勝っています
今回の条件ではOpenAIが最も強い結果になりました
JevはOpenAIに2敗しましたが、ClaudeとRandomには先手・後手ともに勝ちました
ClaudeとRandomはどちらも1勝5敗です
ただし石差はClaudeが-2、Randomが-126でした
勝敗だけを見ると同じですが、対局内容まで同じとは言えません
ClaudeはJevとの2試合がどちらも2石差で、Randomより接戦が多い結果でした
Jevの応答は速かった
4種類のリーグ戦で、盤面を送ってから合法手を受け取るまでの平均時間を比較しました
Jevは平均287msでした
OpenAIは2,169ms、Claude Sonnet 5は2,866msです
JevはOpenAIの約7.6倍、Claudeの約10倍高速でした
リバーシは相手の手を待ってから考えるゲームなので、2〜3秒でもプレイ自体は成立します
ただ、AI対AIを大量に実行すると、この差がそのままリーグ戦の所要時間に効いてきます
Jevは最も強いモデルではありませんでしたが、対局性能と速度のバランスは良いと感じました
1試合あたりのAPI費用
1試合にかかるAPI費用も概算しました
今回の実装では1手ごとにAPIを呼び出します
リバーシは初期配置の4個を除くと最大60手なので、1試合で各AIが約30回ずつ判断する前提です
初期盤面で1回ずつ呼び出したときのトークン使用量は下記でした
| AI | 入力token | 出力token | 1手の概算費用 | 1試合・片側約30手 |
|---|---|---|---|---|
| Jev | 540 | 50 | $0.000023 | $0.0007 |
| OpenAI | 254 | 46 | $0.000106 | $0.0032 |
| Claude | 823 | 98 | $0.002626 | $0.0788 |
単価は2026年9月21日時点で、Jevが入力100万tokenあたり$0.042で出力無料、OpenAIのGPT-5.6 Lunaが入力$0.20・出力$1.20、Claude Sonnet 5が入力$2・出力$10です
公式情報はTypeSafe AI、OpenAI API、Claude Sonnet 5を参照しました
リーグ戦のように異なるAIを対戦させる場合は、黒と白の費用を足します
| 組み合わせ | 1試合の概算費用 |
|---|---|
| Jev vs OpenAI | $0.0039 |
| Jev vs Claude | $0.0795 |
| OpenAI vs Claude | $0.0820 |
同じAI同士で1試合60手を打つと仮定した場合は、Jevが約$0.0014、OpenAIが約$0.0064、Claudeが約$0.158です
Jevは出力が課金対象にならず、今回の短い盤面入力では1試合あたりの費用がかなり小さくなりました
ただし、これは初期盤面の1手を基準にした概算です
中盤は合法手の数が増える場合があり、ツール定義に含める候補数やモデルごとのtokenizerも異なるため、実際の請求額とは差が出ます
付加試験としてRandomと比較する
4種類のリーグ戦では、JevはRandomに2勝しました
ただし2試合だけでは、たまたま勝った可能性を否定できません
そこで付加試験としてJevとRandomだけで100試合行ったところ、Jevは69勝29敗2分、合計石差+1,079でした
少なくとも、Jevが合法手を単純にランダム選択しているわけではないことを確認する材料にはなりました
この試験の詳しい集計と統計評価は別の検証記録にまとめています
Jevを使ってよかったところ
一番よかったのは、合法手を候補としてそのまま渡せることです
JevのChoiceは返り値が候補の中に収まるため、文章から座標を抽出したり、存在しない位置を弾いたりする処理を増やさずに済みました
応答が速い点も今回の用途に合っていました
1試合では数十回APIを呼び出します
平均287msで返ってくるため、複数試合を連続実行する用途にも向いていました
また、Randomを追加して直接比較したことで、画面上はそれらしく動いているだけなのか、盤面に応じた選択ができているのかを数字で確認できました
まとめ
Jev、OpenAI、Claude、Randomが対戦するリバーシを作りました
4種類のリーグ戦ではOpenAIが6戦全勝で、今回の条件では最も強い結果でした
Jevは4勝2敗で2位となり、平均応答時間は287msでした
OpenAIより約7.6倍、Claude Sonnet 5より約10倍高速です
1試合で片側を担当する費用は、Jevが約$0.0007、OpenAIが約$0.0032、Claudeが約$0.0788と見積もりました
一方でOpenAIとの直接対戦には負けているため、今回分かったのはJevが最強ということではありません
低い待ち時間で一定の対局性能を出せることが今回の収穫でした


