AI诸棋混戦(ai-zhuqi-battle)

AI/ML

概要

ai-zhuqi-battle は、LLM(大規模言語モデル)同士を対戦させる五子棋(15x15)と中国象棋(9x10)のWebアプリです。Next.js(TypeScript)で構築され、ゲームのルール・合法手チェック・勝敗判定・候補手と保底ロジックはすべてフロントエンドに実装。バックエンドは Vercel AI SDK を用いて LLM 呼び出しのみを担います。左右のパネルで各陣営の API URL / Model / API Key を設定し、対局開始ボタンで自動的に手を進めます。各AIは継続的な会話コンテキストを保持するため、単発の呼び出しではない継続対話が可能です(300字程度)。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 1
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 12
  • メインの言語: TypeScript

主な特徴

  • 五子棋(15x15)と中国象棋(9x10)の二つのゲームモードをサポート
  • ゲームルールと合法手判定はフロントエンド実装、バックエンドはLLM呼び出しのみ
  • 各陣営ごとにAPI URL / Model / API Keyを設定、会話コンテキストを持続
  • localStorageにAI設定を保存し、手動で「開始」して自動対局(手間を減らすインターバル調整あり)

技術的なポイント

このプロジェクトの設計で特徴的なのは「責務の明確な分離」です。ゲームロジック(盤面状態、合法手チェック、勝敗判定、候補手提示や保底手の選定)は全てブラウザ側に実装されており、クライアントは正しい状態遷移を担保します。一方で言語モデルの呼び出しは Vercel AI SDK を介したサーバーサイド(Next.js の API ランタイム)で行い、API URL / Model / API Key を動的に受け渡して多様な LLM を接続できるようにしています。
もう一つの重要点は「持続的会話コンテキスト」です。各陣営(黒/白、赤/黒)ごとに対話履歴を蓄積しておくことで、単発の命令ではなく逐次的な思考の流れを模擬できます。これにより一手ごとの短期的な情報ではなく、モデルが前手のやり取りを踏まえた上で応答する設計です。設定は localStorage に保存され、API キー等の入力を陣営ごとに保持します。加えて、手と手の間隔はミリ秒単位で調整可能なため、速い自己対戦やじっくり検討する挙動を切り替えられます。主要コンポーネントとして app/GameHubClient.tsx(モード切替や対局ハブ)、app/GomokuClient.tsx(五子棋の前端ロジック)があり、TypeScript による型安全な実装で可読性と保守性を確保しています。エラーハンドリングやネットワークリトライ、候補手からのフォールバック戦略も実装されており、モデル応答が不正確な場合でも最低限の動作継続が可能です(約700字〜900字目安)。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .env.example: file
  • .gitignore: file
  • README.md: file
  • app: dir
  • components: dir

…他 7 ファイル

主要ディレクトリについて簡単に:

  • app/GameHubClient.tsx:ゲームモード選択や対局全体の制御を行うハブ
  • app/GomokuClient.tsx:五子棋の盤面表示・合法手判定・AIとのやり取りを担うクライアント
  • components/*:盤や操作パネル、設定フォームなどのUI部品群

使い方(抜粋)

ローカルで動かす手順はシンプルです:

  1. pnpm install
  2. pnpm dev
  3. ブラウザで http://localhost:3000 にアクセス

左右のパネルにそれぞれ API URL / Model / API Key を入れ、必要なら手番インターバルを設定して「開始対戦」ボタンを押すと自動的にLLM同士が対局を開始します。

改善ポイントと応用

  • モデルプロンプトの設計次第でAIの棋力や戦略を大きく変えられるため、プロンプトエンジニアリングによる強化学習的な改善余地がある
  • 人間 vs AI の対戦モード追加や、対局ログの保存・解析(棋譜出力)で研究利用に拡張可能
  • LLMの呼び出し回数を削減するための差分プロンプトや局面特徴量の送信、または自己対戦での学習ループ構築なども考えられる
  • セキュリティ面では API Key の取り扱いに注意(local 開発向けであれば env 管理を推奨)

まとめ

フロントでルールを持ち、LLMを「プレイヤー」として差し替え可能にした実験的なAI対局アプリ(50字程度)。

リポジトリ情報:

READMEの抜粋:

AI诸棋混战(Next.js)

当前支持两种模式:

  • 五子棋(15x15)
  • 中国象棋(9x10)

两种模式均为双 AI 对战,且都需要你在左右侧面板分别输入:

  • API URL
  • Model
  • API Key

特性

  • 游戏逻辑在前端(走子合法性、胜负判断、候选与保底)
  • 后端只做 LLM 调用(使用 Vercel AI SDK)
  • 每一方 AI 都有持续会话上下文,不是每步重开上下文
  • 黑/白(或红/黑)AI 配置保存在 localStorage
  • API URL / Model / API Key 按阵营共享:黑方一套、白方一套(象棋红方对应白方配置)
  • 必须点击“开始对战”后才会自动落子
  • 可调每步落子间隔(毫秒)

运行

pnpm install
pnpm dev

访问:http://localhost:3000

主要目录

  • app/GameHubClient.tsx:游戏模式切换(五子棋 / 中国象棋)
  • app/GomokuClient.tsx:五子棋前…