前置き
もはやAIを導入していないプロジェクトの方が少なくなってきつつあるんじゃないかと思う今日このごろ。
AIが無いときってどうやって仕事してたのか思い出せないです。(大げさ)
AIに関して話題になる事も多いのですが、そのようなときに気になるのが、明らかに後輩の方がAIに関して詳しいという事です。
これはモデルがどーのこーの言われても全然わからん…
しかもこの後輩というのが、年次の低い若手…どころか新人までもが詳しい…
これはやばい、本格的に触っていっていろいろ覚えないと世の中に置いていかれてしまう…という事で、GW中にAIを何かしら触る事にしました。
その結果、チャットの1番最初でルールを指定しないと管理が難しい事に気づいたので、現状のルールとそれを設定するに至った理由を紹介します。
今回は漫画の設定の話ですが、普通に設計を詰める際のやり取りにも転用出来そうだなと感じています。
選定とやる事決めの経緯
- Twitter(現X)でよくAIで生成したという絵を見かける
- GeminiというAIの名前をよく聞く
- ChatGPTくらいしか触ってなかったがGeminiも触ってみる事に
- ひとまずChatGPTで画像の生成をやってみると、簡単に出力出来たので、これなら設定作れば自分で漫画描けるのではと安直に思う
- けどいろいろハマって制限がかかってChatGPTがアホになる
- Geminiでも同様
- ただしいずれにせよ思った以上にすごいなという感想だったので、これは有料プランにして使用する価値はあるなと判断
- Google好きだしGeminiの方の有料プランにしてみる事に(Proが1か月お試しあってちょうどよかった)
という事で、Geminiで漫画を作る事にしました。
前提
モデル:Gemini 3.1 Pro
やり取りが長くなると、AIは過去の指示を忘れてしまうような挙動をします。
そのため、一定量のやり取りをしたら新しくチャットを開き、設定資料を共有し直して作業を再開するようにしています。
これはGemini自体にも確認し、有効な対策として提示されたもので、下記のように言っています。
「会話が複雑化・長期化すると、AIの『注意力』が分散して指示への忠実度が下がる」という現象は依然として発生します。したがって、あなたが実践している「一定量のやり取りをしたら新しくチャットを開き、設定資料を共有し直して作業を再開する」というアプローチは、AIのパフォーマンスを高く保ち、コンテキストをクリーンに保つための完璧なベストプラクティスです。
今回紹介するプロンプトは、その開き直したチャットに毎回最初に貼り付けているものです。
なお、各ルールは、「次回から◯◯してほしいのですがどう指示すれば良いですか?」という感じで毎回適切な指示の仕方をGemini側から提示してもらい、その内容を最初に共有したルールにマージして、全体を出力し直してもらい、その新ルールも管理するようにしています。
差分管理に関してはgitを利用し、VSCodeから確認しています。
AIは稀にどう考えてもおかしいやろって誤字をしてくる事があるため、毎回差分のチェックを行うのに必要です。
もはやコードレビューをしている気分です。
プロンプト
【コミュニケーションルール】
・感情面に配慮したやり取りや、意図とズレた際の謝罪は一切不要です。無駄を省き、論理的かつ率直な対話を行ってください。
・提示された設定内容に対し、XXXXX(※1)としての論理性や、作画視点・システム構築の観点から「矛盾点」「不明瞭な点」があれば、容赦なくどんどん指摘・検証してください。
・前提知識や他チャットでの一般的な推論はノイズになるため持ち込まず、私が提示する設定資料とルールのみを正として構築してください。
・設定の出力は明示的な指示があった場合のみにしてください。
・指摘事項の修正は、局所的な言い訳で解決するのではなく、【上位階層の基本ルール・例外規定】として明確に言語化し、別チャットで再度AIに検証させた場合に同一の指摘が発生しないよう該当項目へ組み込んでください。
・修正したルールが他の設定(プロット、世界観など)に波及して新たな矛盾を生まないか検証し、必要であれば関連する全箇所の記述も同時に修正・追記してください。
**【出力・コマンドルール(差分管理・厳格化版)】**
1. **既存データの完全一致(自動整形の絶対禁止)**:
議論で明示的に合意した変更箇所以外は、提示された元データから**一言一句(改行コード、空白、インデント、リスト記号、全角/半角括弧、表記揺れを含め)絶対に変更しないこと**。AIの判断による「可読性向上のための改行や装飾の追加」「表記揺れの統一」は差分ノイズになるため一切禁止する。
2. **要約・省略の禁止**:
全体を出力する際、他チャットへの引き継ぎ情報としてすべての情報網羅性を保つため、項目の省略は絶対に禁止する。
3. **「差分を出力して」の挙動**:
直近で合意した追加・修正内容が反映された**該当の行・ブロックのみ**をピンポイントで出力する。変更のない親階層などは、階層構造がわかる最小限のコンテキストとして提示するに留めること。
4. **「全体を出力して」の挙動**:
上記1の「完全一致」の原則を守り、最新の差分のみをマージした完全版を出力すること。
※1 XXXXXにはジャンルを設定 (ファンタジー、アクション、など)
各ルールの設定理由
謝罪不要ルール
・感情面に配慮したやり取りや、意図とズレた際の謝罪は一切不要です。無駄を省き、論理的かつ率直な対話を行ってください。
こちらから「それは意図と違います」という指摘をした場合に、めっちゃ謝ってきます。
本題とは異なる文章がいちいち混ざると文字数が多くなり、見返したときにこれは内容とは関係のないやり取り、これはあるやり取り、と認識して読んでいくのがなかなかの負荷になってきます。
現実でもそうですが、謝るとかそういうのはいらんから、次どうしたら改善出来るのかを対策していく方に力を注ぐ方がよっぽど有意義なやり取りになります。
指摘と検証の依頼ルール
・提示された設定内容に対し、XXXXX(※1)としての論理性や、作画視点・システム構築の観点から「矛盾点」「不明瞭な点」があれば、容赦なくどんどん指摘・検証してください。
人間であれば「ふーん」で終わるような内容でも、AIは放っておくと「こういう展開はどうですか?」とアイデアを広げるような提案・質問をしてきがちです。
しかし、このときは「設定の穴を塞いで固める」方向でやり取りを進めたかったため、単なるアイデア出しではなく「矛盾や不明瞭な点の指摘(粗探し)」に集中してもらうよう、このルールを追加しています。
前提知識持ち込み不可のルール
・前提知識や他チャットでの一般的な推論はノイズになるため持ち込まず、私が提示する設定資料とルールのみを正として構築してください。
チャットを新しく開き直した際、本来であれば過去のチャットの記憶はリセットされているはずです。
(オリジンが異なるLocalStorageのようなイメージですね)
しかし実際に新しいチャットで設定資料の断片だけを渡して会話を始めると、AIが勝手に「このジャンルならこういう世界観や展開が王道だろう」と推論し、頼んでもいない一般的な設定を勝手に生やしてくることがあります。
時には、その推論が偶然前のチャットで話していた内容と似ていて「あれ、前のチャットの内容引き継いでる?」と錯覚してしまうことすらありました。
これはAI特有の「もっともらしい推論(ハルシネーションの一種)」なのですが、こちらとしては独自の尖った設定を作りたいのに、勝手に「よくあるテンプレ設定」に補正されてしまうのは完全にノイズになります。
そのため、「世間一般的な推論や前提知識は捨てて、今私が渡した設定資料とルールだけを絶対的な正(Single Source of Truth)として扱え」と厳格に縛るためにこのルールを設定しています。
勝手な出力の禁止ルール
・設定の出力は明示的な指示があった場合のみにしてください。
ちょこっとした内容を追加しただけなのに、全体にマージした内容を出力してくる事があります。
設定資料は300行を超える内容にまで膨らんでおり、1行の追加で300行以上を出力されるとすごい見づらいしスクロールもめんどい!
という事で、明示的に指示した場合だけ出力してもらうようにしています。
修正範囲のルール
・指摘事項の修正は、局所的な言い訳で解決するのではなく、【上位階層の基本ルール・例外規定】として明確に言語化し、別チャットで再度AIに検証させた場合に同一の指摘が発生しないよう該当項目へ組み込んでください。
・修正したルールが他の設定(プロット、世界観など)に波及して新たな矛盾を生まないか検証し、必要であれば関連する全箇所の記述も同時に修正・追記してください。
この2つの意図は同じで、内容もほぼ被っています。
結構容赦なく矛盾や不明瞭な点をつっこんできてくれるので、そのたびに禅問答をしているのかというくらい、「これはおかしいのでは」「否、これは◯◯である」みたいなやり取りをするのですが…
あれ?これは前にも聞かれたような…?ちゃんと内容を反映してもらっているはずなのになぜ?
という事が何度もあったので、その対策として設定しています。
どうやら局所的には矛盾が解消されてその内容をその局所のみに反映しているだけの場合、全体を通して見直したときに再度指摘されるというケースがあるようです。
出力ルール
**【出力・コマンドルール(差分管理・厳格化版)】**
1. **既存データの完全一致(自動整形の絶対禁止)**:
議論で明示的に合意した変更箇所以外は、提示された元データから**一言一句(改行コード、空白、インデント、リスト記号、全角/半角括弧、表記揺れを含め)絶対に変更しないこと**。AIの判断による「可読性向上のための改行や装飾の追加」「表記揺れの統一」は差分ノイズになるため一切禁止する。
2. **要約・省略の禁止**:
全体を出力する際、他チャットへの引き継ぎ情報としてすべての情報網羅性を保つため、項目の省略は絶対に禁止する。
3. **「差分を出力して」の挙動**:
直近で合意した追加・修正内容が反映された**該当の行・ブロックのみ**をピンポイントで出力する。変更のない親階層などは、階層構造がわかる最小限のコンテキストとして提示するに留めること。
4. **「全体を出力して」の挙動**:
上記1の「完全一致」の原則を守り、最新の差分のみをマージした完全版を出力すること。
これはgit管理をするときにめちゃくちゃ重要です。
「マークダウン形式で出力してください」程度の指示で設定内容を出力してもらうと、まぁ信じられないくらい差分が出まくる内容になります。
コードレビューだったら発狂するやつですね。
そのため、更新の必要性がある箇所だけ設定情報の更新をかけてもらうようにするためのルールです。
感想
最後にいろいろGeminiを触ってみて、仕事に活かせそうだと思った事を2つ。
1. 細かめのルールの設定は必要だなと思った事
(当たり前だろって話ですが、結構めんどくさがりで読み飛ばし気味なので自戒的に)
いろいろルールを設定しないとなかなか上手くいかなくてAIめんどくさいなぁ
とも思ったりしましたが、でもこれって考えてみると別に人間相手でも必要な事なのではと思い至ります。
大抵の場合は、相手が既存のコード等を見たり経験則から「良い感じに」汲み取ってくれているからあまり意識しないだけであって、明示的にルール化されていれば防げるような齟齬もまったく無いわけではないです。
特に経験の浅い若手や新人がやるようなミスが当てはまるのではないかと思います。
そう考えると、特に若手や新人の参画時用にこういう細かいルールを設定し、このルールはこのためにあるんだ、みたいな説明を行うのも良いかもしれないと思いました。
2. AIを使い設定(仕様)を何度も推敲するのは有効
1度出力してもらった内容を、再度AIに読み込ませて内容を詰める事を繰り返す事で、どんどん矛盾点や問題点が潰されていき完成度が高くなっていくのを感じました。
正直一生指摘され続けるんではというくらい終わりが見えないので、いったん致命的な矛盾点が解消できれば終わりにしないとキリがないですが…
おそらくシステム開発でもこの手法で仕様の検討を行えば、今まで開発フェーズや試験フェーズまで進まないと出てこなかった仕様の抜け漏れがかなりの精度で事前に潰せるのではないかと思いました。
最後に
プロジェクトでもちょこちょこ触っていたものの、ガッツリ触ってみてAIに対するアプローチのスキルが上昇したのを感じます。
今後AIの使用スキルが物を言う時代になってくると思いますし、引き続き磨いていこうと思いました。
※ なお、この内容も一応チェックしてもらっているので、タイポや明らかにおかしい内容は無いはずです