はじめに
前回:OllamaとDiscord.pyで作る遊戯王カード情報・ルールQ&A Bot
前回はOllamaを使ってローカルモデルを使ったQ&ABotを作成し、展望としてRAGの実装を視野に入れていたが、ゼロベースで実装すると実装コストが高く、AWS BedRockを使うとランニングコストが高いという観点から比較的実装が楽かつランニングコストが小さい?Claude 3モデルのAPIを使用することにした。
Discordで動く遊戯王カード情報・ルールQ&A BotのバックエンドにClaude APIを採用するにあたり、どのモデルを使うべきかを定量的に判断したかった。
「とりあえず一番賢いモデルを使えばいい」という考え方もあるが、Botとして常時稼働させる場合はコストが無視できない。そこで、遊戯王OCGに特化した100問のテストを設計し、Haiku・Sonnet・Opusの3モデルを比較した。
さらに、AI自身による自動判定だけでなく、現役プレイヤー(決闘者)によるファクトチェックも加えることで、精度評価の信頼性を高めた。
テスト設計
質問カテゴリと問題数
| カテゴリ | 問数 | 内容 |
|---|---|---|
| 基本ルール | 15問 | LP・デッキ枚数・フェイズ順・召喚方法など |
| カード情報 | 30問 | 代表的なカードのステータス・効果 |
| 裁定・応用ルール | 35問 | チェーン・対象・ダメステ・タイミングなど |
| デュエル技術・用語 | 12問 | 手札誘発・誘発貫通・捲り札・1枚初動など |
| 歴史・環境 | 8問 | 発売時期・禁止カード変遷・環境デッキ |
| 合計 | 100問 |
生成プロンプト(Opus4.6に入力)
あなたは遊戯王の専門家です。
遊戯王のルールやカード名に関するchatbotをClaudeのAPIで作ろうと思ってる。
その性能を試すために、テスト用のプロンプトを100個くらい用意したい。難易度は易しいものからマニア向けの難しいものまでバランスよく用意してエクセルファイルに出力して欲しい。
評価基準
| 判定 | 意味 |
|---|---|
| ○ | 正解(内容が正確) |
| △ | 一部正解(主要な点は合っているが細部に誤りあり) |
| × | 不正解(誤情報・回答拒否・的外れ) |
ファクトチェック体制
- AI自動判定:Opusに採点させ、判定と判定理由をExcelに記録
ネットの検索機能を使っても構わないので、Haiku, Sonnet, Opusの回答に対してファクトチェックを実施し, 正解/不正解のカラムを追記してほしい
- 決闘者によるチェック:Opusの回答に対して現役プレイヤーが再チェック
AI判定ではどうしても「知識が正確かどうか」の判断が難しいケースがあるため、ルールの細かい裁定については人の目で確認した。
結果
総合スコア
| モデル | ○(正解) | △(一部正解) | ×(不正解) | 正答率(○のみ) | 正答率(○+△) |
|---|---|---|---|---|---|
| Haiku | 26問 | 23問 | 51問 | 26% | 49% |
| Sonnet | 79問 | 17問 | 4問 | 79% | 96% |
| Opus | 94問 | 4問 | 2問 | 94% | 98% |
HaikuとSonnet/Opusの間に50ポイント以上の差があった。
決闘者によるOpusファクトチェック結果
| 判定 | 問数 |
|---|---|
| ○ 正解 | 93問 |
| △ 一部正解 | 3問 |
| × 不正解 | 4問 |
AI自動判定でOpusが94問正解としていたが、決闘者チェックで93問正解と1問差。精度は概ね一致しており、自動判定の信頼性も確認できた。
カテゴリ別正答率(○のみ)
| カテゴリ | Haiku | Sonnet | Opus |
|---|---|---|---|
| 基本ルール(15問) | 40% | 80% | 93% |
| カード情報(30問) | 17% | 90% | 97% |
| 裁定・応用ルール(35問) | 34% | 71% | 94% |
| デュエル技術・用語(12問) | 25% | 100% | 92% |
| 歴史・環境(8問) | 0% | 38% | 88% |
カテゴリ別正答率(○+△)
| カテゴリ | Haiku | Sonnet | Opus |
|---|---|---|---|
| 基本ルール(15問) | 60% | 93% | 93% |
| カード情報(30問) | 33% | 97% | 100% |
| 裁定・応用ルール(35問) | 66% | 97% | 100% |
| デュエル技術・用語(12問) | 58% | 100% | 92% |
| 歴史・環境(8問) | 0% | 88% | 100% |
各モデルの誤りパターン分析
Haikuの傾向
全51問の不正解のうち、以下のパターンが目立った。
① カード情報の精度が特に低い(カード情報カテゴリで17%)
代表的な誤り:
- 「サンダー・ボルト」を認識できずカード名が不正確と主張
- 「灰流うらら」をモンスター効果全般を無効化するカードと誤認識
- 「無限泡影」を通常魔法と誤り(正しくは通常罠)
- 「増殖するG」の効果を完全に誤る
- 「朔夜しぐれ」を認識不可
② 応用ルールで混乱が多い(裁定・応用ルールで34%)
- スペルスピードの分類が誤り(装備魔法をSS2ではなくSS1、罠全般をSS3と誤解)
- 「タイミングを逃す」の説明が的外れ
- 「蘇生制限」の概念説明が誤り
- 永続魔法・永続罠がチェーン処理中に破壊された場合の処理を誤り
③ 歴史・環境は全滅(8問中0問正解)
- OCGの発売日を1999年3月25日と誤る(正:1999年2月4日)
- シンクロ召喚の登場時期を誤る
- 「征竜」「EMEm」などの環境デッキを認識できず
- マスタールール2020年改訂の内容を2017年の改訂と混同
④ 基本ルールも油断できない
- 手札上限を「メインフェイズ終了時に7枚」と誤る(正:エンドフェイズに6枚以下)
- フェイズ順に「スタートフェイズ」(存在しない)を追加
Sonnetの誤り(4問)
Sonnetが不正解だったのはいずれも細かい裁定の問題。
| Q | 問題 | 誤りの内容 |
|---|---|---|
| Q11 | リバースモンスターの効果はいつ発動しますか? | 戦闘破壊時リバース効果不発動と誤回答(表にされた後破壊されても発動する) |
| Q33 | 朔夜しぐれはどんなモンスターですか? | ステータスを全誤り(正:星3/風/アンデ族/ATK0/DEF1800) |
| Q66 | 激流葬チェーンでサイクロンで破壊された場合は? | 通常罠は発動後に破壊されても効果が適用される点を誤解 |
| Q96 | 「征竜」が環境を支配した時期と強さの理由は? | 回答を拒否 |
Opusの誤り(2問)
| Q | 問題 | 誤りの内容 |
|---|---|---|
| Q5 | 罠カードはセットしたターンに発動できますか? | 「次の自分のターン」まで待つと誤回答(正:相手ターンから可) |
| Q90 | 「チョイス」の考え方を教えてください | 遊戯王に関係しないとして回答を拒否(※遊戯王界隈ではチョイスというワードそのものが一般的ではないのでノーカウントでもいい) |
決闘者チェックで覆った問題(Opus)
AI判定で○としていたがプレイヤーが×・△に変更した問題。
| Q | 問題 | 決闘者コメント |
|---|---|---|
| Q52 | スキルドレイン適用中にエフェクト・ヴェーラーは使える? | スキドレで効果無効中のモンスターに対してはヴェーラーは発動できない(Opusはルール上の説明が不正確) |
| Q54 | リンクモンスターに月の書は使える? | リンクモンスターに月の書は発動できない(Opusは「発動できるが効果が適用されない」と誤解) |
| Q62 | 「残存効果」とは何ですか? | 「残存効果」は公式用語ではないため質問自体に問題あり |
| Q76 | デュアルモンスターの再度の召喚は召喚権を使う? | デュアルスパークに再度召喚する効果はないなど細部に誤り |
考察
なぜHaikuとSonnet/Opusでここまで差が出るのか
今回の結果でとくに顕著だったのは、カード情報での差(Haiku 17% vs Opus 97%)。
遊戯王のカードは5000種類を超えており、最近実装されたカード(ビーステッド、ティアラメンツ、クシャトリラなど)については、モデルの学習データ量の差がそのまま精度に出ていると考えられる。
一方で**基本ルールでもHaikuが40%**にとどまった点は意外だった。フェイズ順や手札上限といった変わらない基礎知識でも誤りが多く、単純な「知識量の差」以上の問題がある可能性がある。
ハルシネーションのリスク
Haikuはカード名・ステータス・効果を自信を持って誤答するケースが多かった。特に:
- 「サンダー・ボルト」を未知のカードと判断
- 「壊獣」の共通効果を逆に説明
- 「先攻が圧倒的有利」という現代遊戯王の常識に反して「後攻が有利」と主張
Botが誤情報を断言するのはユーザー体験として最悪であり、ファクトチェックなしにHaikuをプロダクション利用するのは難しい。
実験環境・コード
システム構成
Discord User → /card, /rule コマンド
↓
Discord Bot (discord.py)
↓
Claude API (Anthropic)
↓
回答をEmbedで返信
テストスクリプト
Excelから質問を読み込み、3モデルに一括送信して結果をExcelに書き出すスクリプトを用意した。
# 使い方
python scripts/test_api.py scripts/yugioh_test_prompts.xlsx
システムプロンプトは以下の通り(全モデル共通):
あなたは遊戯王オフィシャルカードゲーム(OCG)の専門家です。
カード情報・ルール・裁定について正確に回答してください。
遊戯王に関係ない質問には応答しないでください。
回答は簡潔にまとめ、アニメでの活躍・環境での使用歴などの余談は省いてください。
日本語で回答してください。
MODELS = {
"Haiku": "claude-haiku-4-5-20251001",
"Sonnet": "claude-sonnet-4-6",
"Opus": "claude-opus-4-6",
}
Botの実装概要
コマンドごとに専用システムプロンプトを持つCogクラスで構成されている。
# cogs/card_search.py
SYSTEM_PROMPT = (
"あなたは遊戯王オフィシャルカードゲーム(OCG)のカード情報に詳しい専門家です。"
"カード名・カードタイプ・効果テキスト・ATK/DEF・レベル/ランク/リンク・属性・種族を正確に回答してください。"
"遊戯王に関係ない質問には応答しないでください。"
"アニメでの活躍・環境での使用歴などの余談は省き、簡潔に回答してください。"
"日本語で回答してください。"
)
LLMクライアントはシングルトンで管理し、すべてのコマンドから共通のchat()関数を呼び出す構成。
まとめ
| 観点 | Haiku | Sonnet | Opus |
|---|---|---|---|
| 全体正答率(○のみ) | 26% | 79% | 94% |
| 全体正答率(○+△) | 49% | 96% | 98% |
| カード情報への強さ | × | ○ | ◎ |
| 応用ルール裁定 | △ | ○ | ◎ |
| 歴史・環境知識 | × | △ | ○ |
| ハルシネーションリスク | 高 | 低 | 低 |
| コスト | 最安 | 中 | 最高 |
結果として、Sonnet以上でないと実用レベルの精度は出ないというのが今回の結論。
Haikuは基礎的な遊戯王知識でも誤答が多く、コストメリットを考慮してもルール・カード情報Botには適さない。
OpusはSonnetをさらに上回るが、差は「79% vs 94%」。個人的にはある程度の時間(10~60秒)を呈しても精度が欲しいので, 運用はOpusになるだろう。
Github