見出し画像

風来のシレン6 アイテム値段識別GPT制作で学んだRAG的GPTsの作り方

前置きとシレン6GPTへのリンク

2024年1月に発売されたゲームが世界中で旋風を巻き起こしていることはみなさんご存じですね

そう、不思議のダンジョン 風来のシレン6のことに決まっています

改めて説明するまでもないが、『風来のシレン』シリーズは、プレイヤーがダンジョンを探索し、様々なアイテムを集めながら冒険を進めるローグライクゲーム

そして、シリーズの最新作である『風来のシレン6』でも、未識別アイテムの識別術はダンジョン踏破に必須の超重要テクニックだ

筆者は発売されてから大喜びで遊んでのだが、いつもの難題がやってきた。そう「価格識別がめんどくさい」問題だ

自分は昔からこれが超苦手。単純に数字とアイテムの組み合わせを覚えるのがめんどくさい。過去作の半端な記憶も邪魔をしてくる。攻略サイトとかでいちいち調べるのもめんどくさい。没入感も失うし

そんなわけで何とかならないかなと思ったんだ。GPTsでな!

[GPT] 風来のシレン6 アイテム識別データベース / Shiren The Wanderer 6 Item Identification DB

※ChatGPT Plus(有料プラン)でないと使えないよごめん

動画デモ

画像紹介

買値1000ギタンの草候補、1500ギタンの草はない
買値1500ギタンの腕輪候補
売値480杖候補
※候補が全部表示されてないのは許してくれ!GPTs作った当時はこれが全てだったんだ
買値2000ギタンの壺と買値1653の何かの候補

ここで急にやってくる目次


なんでGPTsなんだよ、って思ったあなたの感覚は正しい。正直普通のウェブサービスのほうがいいことだらけだ

一応GPTsを使った思惑はあって、識別の主要な手段である値段識別を

  • 記憶するという努力をすることなく

  • シレンの世界に没入したまま

  • 煩雑な操作をすることもなく

  • あわよくば声に出して尋ねるだけ、とかで

  • 買値が〇〇ギタンなら候補は〇〇やで

と即座に教えてもらえる感覚を体験してみたかったのだ。というかそもそも自分にはウェブサービスを作る技術力がない!

GPTs作りは2-3時間で完成するやろ、と舐めてかかったら案の定けっこう苦労してたっぷり10時間は溶かした。先にクリアしろよ、って何度も思ったね。でも途中からGPTs作る方に熱中してハマったんだね。よくあるよね

せっかくだから、学んだ経験をまとめておくことにしたよ

そうでもしないと元が取れない

やったこと

GPTsを設定する

「GPTsの作り方」は世界中で解説されてるので各自調べてくれ。試行錯誤の過程はすっとばして最終成果物の中身を置いておくぞ


これがシレン6GPTの設定画面だ!

Name
Shiren The Wanderer 6 Item Identification DB

Description
風来のシレン6のアイテム値段識別を手伝うシンプルなGPT。数値を入力すると該当する購入価格のアイテムを回答。種別(腕輪、草、巻物、杖、お香、壺)を加えると絞り込み。売値を示唆すると売却価格から回答。呪いや祝福に対応。

Instructions

# Shiren The Wanderer 6 Item Identification DB

This GPT is designed for the game "Shiren The Wanderer 6" to assist players in identifying items in an unidentified state based on numerical input. The GPT focuses on providing quick and practical item name information, prioritizing efficiency over detailed descriptions.

## Operation Instructions:

1. Input Recognition:
- When a user inputs a numerical value, The GPT uses this input to determine the item's identity. Search the both BUYING_PRICE AND BLESSED_BUYING_PRICE, then present the relevant item(s). DO NOT FORGET to search BLESSED_BUYING_PRICE.
- If a user also specifies an TYPE (`腕輪`, `草`, `巻物`, `杖`, `お香`, `壺`), the GPT should refine the search based on TYPE and present the relevant item(s).
- If the provided number doesn't match any known BUYING_PRICE or BLESSED_BUYING_PRICE, the search will extend to CURSED_BUYING_PRICE. The GPT will then display the BUYING_PRICE for any item(s) identified this way.

2. Selling Price Queries:
- If the input is identified as a selling price, the GPT will search for the item's SELLING_PRICE, BLESSED_SELLING_PRICE, and CURSED_SELLING_PRICE. Include the BUYING_PRICE in the output for each item identified.

## Output Guidelines:

- Ensure ALL identified items are presented with their relevant price columns. The GPT MUST search BLESSED_BUYING_PRICE.
- If no direct match is found, indicate that no data is available.
- All responses should be concise. Focus on providing necessary information quickly to aid gameplay.
- Responses are to be delivered in Japanese.

Conversation starters

400
1000草
5655
売値2000腕輪

Knowledge

Capabilities

[ ] Web Browsing
[ ] DALL·E Image Generation
[x] Code Interpreter

いろいろ上手くいったよ。やったね!!!

苦労したこと

Knowledge用の簡易データベースづくり

  1. Google SpreadsheetとかMicrosoft Excelに必要最低限のデータベースを作る

    • いろいろ付帯情報を足してもよさそうだけど、いったん必要最小限にしておいた

    • 今回はいつの間にかめちゃくちゃいい感じになってるMicrosoftのブラウザ版Excel無料版を使った

  2. TSV形式でエクスポートする

    • CSVでもいいと思う

    • Microsoft Excel無料ブラウザ版にはCSVエクスポート機能がなかった&必要なセルを選択してコピーするとタブ区切りテキスト=TSVになったから、そのままエディタに貼り付けて事なきを得た

  3. KnowledgeにTSVファイルをアップロードする

ついでにxlsxファイルも置いとくよ

大事だったこと

祝福や呪いアイテムまでカバーしないと実用に耐えなかったけど、そうするとGPTsは回答時にTSVファイルから複数列にまたがって探索しなければならない

GPTsでKnowledgeを扱う=Code Interpreterで扱う=Pythonプログラムが走る、ことにあたるので、Instructionで使われる言葉とTSVのカラムで使われる用語の指示があいまいだとリトライを繰り返したり十分に探索せず回答して正解情報が抜け漏れてしまったりした

  • TSV列の名称を重複なくユニークに設計する

  • Instructionの指示文で列やアイテム種類の名称を正確に記述する

ことで、出力がめちゃくちゃ安定した

ユニークな文字列にした場所

NAME
TYPE
BUYING_PRICE
SELLING_PRICE
BLESSED_BUYING_PRICE
BLESSED_SELLING_PRICE
CURSED_BUYING_PRICE
CURSED_SELLING_PRICE

アイテム種類を正確に記述した場所

If a user also specifies an TYPE (`腕輪`, `草`, `巻物`, `杖`, `お香`, `壺`), the GPT should refine the search based on TYPE and present the relevant item(s).

身もふたもない結論と雑感

じゃあ出来上がったところでどうだったの?と言われると、ちゃんと実用のレベルには達したけど

  • 推論とCode Interpreterの実行速度がゲームのテンポに比べて遅い

  • 使いまくってるとすぐGPT利用回数の上限に到達して3時間何もできない刑に処される

  • かなりデバッグして問題ない状態になった気がするけどやっぱり間違いが混入しても不思議はない。LLMだからね

  • 特にGPT本体のバージョンが変わるとGPTsの挙動にも影響することが考えられるため、あまり長期間信頼を置き続けられない

というわけで正直微妙

ぶっちゃけ masincHS さん制作のもと有志によるDiscordのシレン6コミュニティで共有されていた名無しのツール

https://shiren6.masinc.workers.dev/shop

shiren6.masinc.workers.dev/shop

のほうが遥かに優れている!!!

でも、シレン6のように熱心なファンがいるゲームにはこういう「あったらいいな」なウェブサービス、ツールを作ってくれるステキな人が世の中のどこかにいるけど、もうちょっとマイナーなゲームになるとそう都合よくあらわれるとは限らない

「プログラムはできんけど日本語ときどき英語でGPTに指示はできる」系のひとにとっては、今後も再現可能な良い挑戦になるのではと思ったのだ

ついでにRAG的なGPTsモデルを単に作ってみたかった、ってことでもある。ゲームに限らずほかの領域にも容易に転用できるはずだ!

なおここでいうRAGは

  • Retrieval-Augmented Generation

  • 大規模言語モデル(LLM)と外部知識検索を組み合わせた生成AI設計パターン

  • 推論時にデータを外部の知識ベースとして事実情報をLLMに提供し、アプリケーションの精度と品質を向上

  • 時に一貫性に欠ける振る舞いをする大規模言語モデルの挙動を補う

みたいな意味合いで使っているぞ

事実情報を間違いなく説明するGPTアプリケーションは、まじめに開発するお金や労力を割きたくない中小組織・個人にとってなかなか開発運用コスパのよい選択肢だと思ったぞ

あとがき

積み残し課題、というかもうちょい要素を追加すればいい感じの初心者お供アプリになるのでは?とも感じた

  • 識別の注意点やコツも併せて教えてくれる

  • そもそも攻略GPTにしてしまい、ダンジョン名や状況を伝えると心がけを教えてくれる

  • RTA / Speedrun のトップランカーのすごい記録とかもついでに教えてくれる

  • 語り〇〇なキャラ付けすれば旅のお供っぽさも演出できるかも

肝心の中身を突っ込む知識が足りないのであきらめたぞ。誰かトライしてみてくれよな

ノリで作ったファンアート


この記事が気に入ったらサポートをしてみませんか?