10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GPT-4に将棋解説してもらうアプリを作ってみた

Last updated at Posted at 2023-12-19

はじめに

初めて記事投稿します、yamashitaと申します。
私は現在プログラミングスクールRUNTEQでRuby on Railsを中心にプログラミング学習中の初学者です。

今回は、私の趣味である将棋をOpenAIのAPIに解説してもらうアプリを作ったので、開発日誌も兼ねて投稿してみます。更新などあれば追記したいと思います。
アプリは現在公開中で、URLはこちらです:https://shogikaisetukun.com/

経緯

調べてみたところ、ChatGPTと将棋を指す試みをされている方はいましたが、解説させてる方は見受けられなかったので作ってみました。既にいたらごめんなさい。

結果

現行で出てるモデルでは、精度の高い解説は生成できませんでした。
将棋を知らない方からはそれっぽく見え、知っている方からは間違った解説を面白がってもらうジョークアプリみたいになりました。

採用したモデルは「gpt-4-1106-preview」です。現行のChat Completions APIの最新版です。
「gpt-3.5-turbo-1106」ではオリジナルの戦型や囲いの名前を連発しました。
もっと下位のモデルだとそもそも日本語が怪しくボツとしました。
また新しいモデルが出たら随時試してみたいと思います。

画像は「gpt-4-1106-preview」で生成した解説です。それっぽいけど殆ど合ってません。
ちなみに形勢は後手の典型的な大やらかしにより先手勝勢です。

shogi-board-1702924872.png

技術面

フロントエンドはReact、バックエンドはRuby on RailsをAPIで使用しています。
将棋UIの作成については、shogi-player-wc(https://shogi-player.netlify.app/)を使用させていただきました。
詳細はGitHubをご確認ください。:https://github.com/yamashita-takahiro-44/shogi-kaisetukun

機能

シンプルに使ってもらえるようSPAで認証などは何も要らない作りにしました。
KIFあるいはSFEN形式の棋譜を読み込む、あるいは手動で一手ずつ盤面を動かして、解説ボタンを押すことで解説が生成されます。
今後の機能追加は検討中です。

まとめ

やっぱり将棋は専門的な知識なのでトレーニングデータを準備してしっかり学習させないと厳しいのかなと思いました。
現行のGPT-4による解説を可愛がってくれる人が少しでもいれば幸いです。
そもそも将棋用のAIじゃないので、個人的にはそれっぽい解説が出てくるだけで凄い技術だと感動してます。
今後も面白そうと思えるアプリを作っていきたいと思います。
ご意見・ご感想はコメント欄あるいはtwitterまでお願いします。https://twitter.com/yamashita_44

追記

12/21 アップグレード第一弾
将棋を知らない方でもなんとなく遊んでもらえるよう、棋譜プリセット、
GPTのバージョン、プロンプトをいくつか選べるようにしました。

12/26 アップグレード第二弾
・見た目をなんかいい感じに。
・トップページ、画像投稿機能、ランキング機能追加
・画像へのコメント機能追加
・URLベタ打ちやリロードしても動くようになった
本筋と関係ないんですが、最後の機能実装に他の機能の10倍ぐらい時間かかりました。
react-router-domでルーティングしたのですがそのままだとリロードとかURLベタ打ちすると動きませんでした。
そこでNginx導入を検討しましたがうまく動きませんでした(Rails-apiへのPOSTリクエストが弾かれ続けた。)。
結局フロントエンドだけVercelでデプロイし、vercel.jsonでリクエストをindex.htmlにリライトしてもらう手法で思った通りURLベタ打ちやリロードしても問題無い実装ができました。
vercel.jsonはこんな感じです。

{
  "version": 2,
  "builds": [
    {
      "src": "package.json",
      "use": "@vercel/static-build",
      "config": { "distDir": "build" }
    }
  ],
  "rewrites": [
    { "source": "/(.*)", "destination": "/index.html" }
  ]
}

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?