AIテキストパズルで「答えがチャットごとに変わる」のを避ける方法:まず作者用解答表を書く
答えがチャットごとに変わるのを避けるには、まずプロンプトを急いで直さないこと。パズルを作者用解答表に分解する:各手がかりの固定テキスト、許容解答、同義表現、誤答ヒント、開示条件をそれぞれ1行にし、生成ナレーションは表の内容だけを参照でき、その場で新しい手がかりや新しい判定を発明してはならない。以下では架空の教材例で全工程をたどる。例の中の三つの星印、観測台番号、対話はすべて創作であり、実在の作品や暗号に対応しない。

はじめに
答えがチャットごとに変わるのを避けるには、まずプロンプトを急いで直さないこと。パズルを作者用解答表に分解する:各手がかりの固定テキスト、許容解答、同義表現、誤答ヒント、開示条件をそれぞれ1行にし、生成ナレーションは表の内容だけを参照でき、その場で新しい手がかりや新しい判定を発明してはならない。以下では架空の教材例で全工程をたどる。例の中の三つの星印、観測台番号、対話はすべて創作であり、実在の作品や暗号に対応しない。
一、まずパズルの骨格を固定する
テキストアドベンチャーを書いているとしよう:プレイヤーは廃棄された観測台に入り、内室を開けるには3桁の番号を入力する必要がある。手がかりは三つの星印で、最初の三つの場面に分布している。
まず不変の三つの事実を書く:
- 星印甲は東側の窓台にあり、「七」と刻まれている。
- 星印乙は当直日誌の挟み込みにあり、「二」と刻まれている。
- 星印丙は望遠鏡の底座にあり、「九」と刻まれている。
観測台番号は「七二九」、すなわち729。この数字はあくまで架空例の内部約束であり、推奨パラメータではなく、実在の暗号規則を表すものでもない。
骨格を定めた後、AIがナレーションを生成する際に記述できるのはこれら三つの星印の位置と刻痕だけであり、「壁にもう一つ第四の星印がある」とか「日誌に5と書かれた紙片が挟まっている」を新たに追加してはならない。もしモデルがその場で第四の星印を補ったら、プレイヤーは互いに矛盾する手がかりを得ることになり、答えは自然とチャットごとに変わる。
二、解答表はどんな形か
解答表は作者が自分のために書く判定チェックリストであり、プレイヤーに見せる画面ではない。少なくとも五列を含む:手がかり番号、固定テキスト、許容解答、同義表現、誤答ヒントと開示条件。以下で観測台の例を完全な表に埋める。
| 手がかり番号 | 固定テキスト | 許容解答 | 同義表現 | 誤答ヒントと開示条件 |
|---|---|---|---|---|
| A | 東側の窓台の星印甲に「七」と刻まれている | 七 | 7、柒 | 三つが揃っていない時は「星印をまだ全部見ていない」と提示 |
| B | 当直日誌の挟み込みの星印乙に「二」と刻まれている | 二 | 2、弐 | 同上 |
| C | 望遠鏡の底座の星印丙に「九」と刻まれている | 九 | 9、玖 | 同上 |
| 組み合わせ | 三つの星印を甲乙丙の順に並べる | 七二九 | 729、七二9、柒弐玖 | 順序が誤っていると「順序が星印の並びと一致しない」と提示 |
| 開示 | 内室の扉が開き、星図が現れる | — | — | 組み合わせが正しく、かつ三つとも発見済みの場合のみ発動 |
表の「同義表現」の欄が非常に重要である。プレイヤーはアラビア数字、繁体字の大字、または混在表記を入力するかもしれない。729、七二九、柒弐玖は受け付けてもよいが、「九二七」は受け付ける必要はない。順序自体がパズルの一部だからである。許容範囲は作者が決め、表に書き込めば、生成ナレーションは今日「729」を受け付けて明日「七二九」を拒否することはできない。
三、生成ナレーションを表の周りで動かす
表があれば、プロンプトは開放式ではなく制約式として書ける。例えば:
あなたは解答表のA、B、Cの三つの手がかりの固定テキストだけを記述できる。プレイヤーが組み合わせを入力したら、まず許容解答と同義表現と照合する。表にない入力は一律に誤答ヒントとして応答する。星印、数字、開示条件を新たに追加してはならない。
モデルは同義表現を見落とすこともあれば、「柒」を新しい手がかりと見なすこともある。表は人手で照合する根拠を提供できるが、モデルが毎回正しいことを保証はしない。作品が厳密に一貫した判定を必要とするなら、生成ナレーションの外に独立した規則を実装して検証し、入力が表内の項目に命中したかを確認し、命中した後にのみ開示を許可する必要がある。これは別途実装すべき制作方案であり、プロンプトに書き込めば既存の生成システムが決定論的パズルエンジンを備えるという意味ではない。規則が未実装のうちは、表に従ってラウンドごとに人手で確認し、誤判定を見つけたら修正すべきであり、モデルの回答をそのまま最終判定と見なしてはならない。
四、答えに近づいた時どう応答するか
プレイヤーは一度で正しい組み合わせを入力しない。答えに近い応答も先に表に書き込み、AIの自由な発揮を避ける。三つの段階を設けられる:
- 星印を一つだけ発見:ナレーションはその星印だけに触れ、総数をほのめかさない。
- 二つ発見:ナレーションは「あと一つ」と言及できるが、欠けているのがどれかを明かさない。
- 三つ揃ったが順序が誤り:「順序が星印の並びと一致しない」と提示し、正しい順序を直接与えない。
対応する対話例(架空):
プレイヤー:「927と入力する。」 ナレーション:「内室の扉は反応しない。扉の隙間から漏れる光が一度閃き、また暗くなる。星印は甲乙丙の順に並んでいたことを思い出すが、順序を覚え間違えていないか自信がない。」 プレイヤー:「では七二九と入力する。」 ナレーション:「扉の内側からかすかな歯車の音が聞こえ、星図が暗闇の中に浮かび上がる。」
ここで「扉の隙間から漏れる光」と「歯車の音」はナレーションの装飾であり、新しい手がかりではない。装飾は変わってよいが、判定は変わってはならない。もしある生成が「歯車の音」を「錠が弾け開く」と書き、組み合わせが実は誤っていたら、プレイヤーは答えが合ったと誤解する。だから答えに近い応答も表内で許されるフィードバック階層に限定する必要がある。
五、人手回帰入力チェックリスト
表を書き終えたら、人手回帰入力のセットを用意し、プロンプトやナレーションを変えるたびに毎回実行する。観測台の例のチェックリストは次のようにできる:
- 「七」を入力、予期:星印甲のみ確認、開かない。
- 「729」を入力、予期:三つ未収集時は「星印をまだ全部見ていない」と提示。
- 「七二九」を入力し三つとも発見済み、予期:開く。
- 「927」を入力、予期:順序誤りヒント、開かない。
- 「柒弐玖」を入力、予期:同義表現として受け付ける。
- 「四」を入力、予期:手がかりを新たに追加せず、未命中として応答。
チェックリストを実行した後、完了検査を行う:表内の各許容解答が対応する結果を発動できるか;表外の入力が誤って開かないか;ナレーションに表外の新しい数字や新しい星印が現れないか。三項目すべて通って初めて、この版のパズルは安定したと言える。
六、よくある逸脱と修正
逸脱一:答えをプロンプトだけに書く。プロンプトは後続の対話で薄まる。表こそが固定参照である。修正:まず表を作り、それからプロンプトを書く。
逸脱二:同義表現を空欄にする。プレイヤーが「柒」を入力して拒否されると、パズルが壊れたと思う。修正:受け付ける表記を一つずつ列挙し、受け付けない範囲も明記する。
逸脱三:AIに「だいたい合っている」を判断させる。答えに近い応答は必ず段階に分けて固定し、モデルの即興に頼ってはならない。修正:三つの段階のフィードバックを表に書き込み、生成時は段階を選ぶだけで、段階を発明しない。
逸脱四:手がかりを変えた後に表を更新しない。もし作者が星印乙を「二」から「三」に変えたら、組み合わせ、同義表現、回帰入力もすべて同期して変える。修正:固定テキストを変えるたびに、まず表を変え、それからナレーションを変える。
この表はすべての問題を解決しない。それは「答えがチャットごとに変わる」を「答えが表ごとに変わる」に変えるだけである。表が変わらなければ、答えは変わるべきではない;表が変われば、すべての関連行が一緒に変わる。次のステップとして、あなたが今書いているパズルで、まず手がかり、許容解答、同義表現の三列を埋め、それから誤答ヒントと開示条件を補うとよい。


