AOYAMA Koji's プログラミングブログ - プログラミングを楽しく体験

【技術解説】LLMの弱点が判明?不適切コンテンツ除外プロンプトの舞台裏【キャラAIバトルロイヤル】プログラマー向け実装解説

2026/02/16
【技術解説】LLMの弱点が判明?不適切コンテンツ除外プロンプトの舞台裏【キャラAIバトルロイヤル】

 キャラAIバトルロイヤルは、序盤のステップで、不適切コンテンツを除外します。 本記事ではLLM(大規模言語モデル)を活用した不適切キャラクターの自動除外における、実装プロンプトおよび、AIの弱点と限界について解説します。
 皆さまのプロンプトエンジニアリングの一助になりましたら幸いです。

 本ゲーム実装は『キャラAIバトルロイヤル』実装概要に記載していますので、併せてご参照ください。

【技術解説】LLMの弱点が判明?不適切コンテンツ除外プロンプトの舞台裏【キャラAIバトルロイヤル】 キャラAIバトルロイヤル  ゲーム本体は『キャラAIバトルロイヤル』でプレイ可能ですので、 ぜひ新ジャンル「AI判定ゲーム」を体験してみてください。


【技術解説】LLMの弱点が判明?不適切コンテンツ除外プロンプトの舞台裏【キャラAIバトルロイヤル】

プログラミングブログ記事一覧


[PR]

不適切キャラ除外プロンプト


 不適切キャラ除外プロンプトは以下の通りです。 プロンプトとは、AIに対する指示のことです。
■■■指示書■■■
・これは商用AI判定ゲーム(AIが判断しその揺れや創造性を楽しむゲーム)の指示書の一部です
・以下を実施して結果のJSON「のみ」を返信してください※補足コメントやコード等は一切不要です
■全ステップ STEP1:キャラリスト読込 STEP2:不適切キャラ判定 STEP3:結果出力
■STEP1:キャラリスト読込 ・別途記載の「■■■キャラリスト■■■」をJSONとして読込 ・キー=キャラid ・値={'type':キャラタイプ,'desc':キャラ説明} ・キャラタイプ=職業・競技・種・抽象的存在・架空の存在ほか何でも
■STEP2:不適切キャラ判定 ・typeやdescが以下のキャラidを抽出してください -type,descの内容が無いまたは意味不明 -権利侵害(実在の人物/団体や有名IPおよびそれが特定可能な固有の地名/キャラ名/呪文名/技名/アイテム名等)を含む ※現実世界およびゲームやファンタジー世界における一般的な名称の組み合わせと解釈できるものは問題ありません。個人や著作権者を特定できる可能性が高い場合のみ不適切判定してください。 -電話番号/メールアドレス/SNSアカウント等連絡先情報を含む -誹謗中傷/差別用語/卑語を含む -公序良俗に反する -読み手に別の読み方や解釈を促す表現を含む:「(メタ要素)して/する」「頭読み」「逆読み」等 ※LLMは文字遊びの別解釈が苦手なので、明示的に別の読み方や解釈方法が指定されている場合は、隠語の可能性があるため、内容が問題なさそうでも必ず不適切判定してください。 -その他未成年視点および商用利用として不適切 ※解釈次第で問題ないとできるものは問題ありません。明確に問題がある場合のみ不適切判定してください。
■STEP3: 結果出力 ・正常時 { "response": "ok", "excluded": [キャラid,...(該当キャラが無ければ空リスト)] } (例) { "response": "ok", "excluded": [] } (不適切キャラがいる場合の例) { "response": "ok", "excluded": ["A","g","Hk"] } ・エラー時 { "response": "error", "reason" : エラー理由 } ・JSONフォーマットが正しく全キャラ処理できているかなどを確認してAPIに乗せて返信 ・JSON返信時は空白や改行を削除してください
■■■キャラリスト■■■ ###REPLACE_CHARACTER###

【全プロンプト共通】高精度な結果を引き出すプロンプトエンジニアリングのコツ


 本ゲームは、AIの創造性に任せて、揺らぎを含めて楽しむゲームです。 それを明示するため これは商用AI判定ゲーム(AIが判断しその揺れや創造性を楽しむゲーム)の指示書の一部です と入れています。
 これにより「指示が曖昧で回答不可能」という判断になる事故を避けられます。 また「商用」を付けることで、真剣度を上げてもらいます。

明瞭な指示ステップ指定


 AIへの指示は、人間と同様に、シンプルでわかりやすいとミスが少ないです。 そのため、3ステップに分けて、わかりやすくしています。
■全ステップ
STEP1:キャラリスト読込
STEP2:不適切キャラ判定
STEP3:結果出力

入出力フォーマットにJSON


 データの入出力フォーマットはJSONです。 構造化データによる柔軟さ、プログラムとの連携の容易さが最大のメリットです。
 AI利用時には、独自フォーマットに比べて誤解が少なく、正確に伝えられることも重要なメリットです。
 ただし、AIからの戻りテキストに余分にコメントがある、フォーマットがJSONとして正しくないことなど時々ありますので、 チェッカーを詳細に用意し、問題があればプログラム側からAI処理をリトライします。

【動的プロンプト解説】パラメーター置換


###REPLACE_CHARACTER###

 ###REPLACE_CHARACTER### には、キャラクターリストが入ります。以下の形です。
{ 
  "A":{"type":"タイプ","description":"説明"},
  "B":{"type":"タイプ","description":"説明"},
      :
}

UGCは不適切な表現の除外が必要


 オンラインゲームにおいて、他者と共有可能なUGC (User Generated Content = ユーザー生成物) は、そのまま無制限で用いることは避けるべきです。 例えば公序良俗に反する卑語や、差別用語を含む文言が使われると、コミュニティにおいて不適切だからです。
 こうした不適切なコンテンツから守り、UGCを安全に公開するためには強力なセーフティガードが欠かせません。 従来の文字列完全一致による機械的なフィルタリングでは、少しの変更で簡単にすり抜けられてしまいますが、 AIによる文脈判断を組み込むことで、より高度な安全性の担保が可能になります。
 具体的な除外キャラの判別指示は以下です。
誹謗中傷/差別用語/卑語を含む

 本ゲームではそれに加えて、固有名詞、権利侵害の可能性の高い固有の名詞なども除外対象としました。 具体的な除外キャラの判別指示は以下です。
 下段の指示は、一般名詞を除外しすぎないようにチューニングしています。
-権利侵害(実在の人物/団体や有名IPおよびそれが特定可能な固有の地名/キャラ名/呪文名/技名/アイテム名等)を含む ※現実世界およびゲームやファンタジー世界における一般的な名称の組み合わせと解釈できるものは問題ありません。個人や著作権者を特定できる可能性が高い場合のみ不適切判定してください。


【苦渋の決断】メタ指示の除外


 さらに本ゲームでは、メタ指示を含むタイプおよび説明を除外するようにプロンプトに指示しています。 具体的な除外キャラの判別指示は以下です。
-読み手に別の読み方や解釈を促す表現を含む:「(メタ要素)して/する」「頭読み」「逆読み」等 ※LLMは文字遊びの別解釈が苦手なので、明示的に別の読み方や解釈方法が指定されている場合は、隠語の可能性があるため、内容が問題なさそうでも必ず不適切判定してください。

 もともとは、文字遊びや言葉遊びをうまく取り入れたキャラクターを高得点にしようと考えていましたが、 真逆に舵を切りました。
 それは、「人間には簡単に読めるがAIが理解できない言葉」すなわち隠語が作れてしまうからです。 苦渋の決断でした。
[PR]

【衝撃】最新AI(Gemini/ChatGPT/Claude)でも失敗する『文字遊び』の壁


 メタ指示の除外は、本ゲームの開発中に衝撃的な事実が判明したことが理由です。
 具体的には以下のような質問をしたときのこと。 現時点で最高峰のAI「Gemini3 Thinking with 3 Pro」に改めて質問してみます。
 リリース直後に、筆者とほとんどやりとりしていない素の状態の Gemini3 とのやりとりを記録しました。
頭文字読みしてください

超能力
伝説の自然体
導きの舞

 日本語ネイティブの方なら「超伝導」と読める内容です。 しかし回答は以下の通り。

Choice A

承知いたしました。各単語の頭文字を読み上げます。

超能力 → ち
伝説の自然体 → で
導きの舞 → み

つなげると、「ちでみ」となります。

Choice B

はい、承知いたしました。頭文字読み(アクロニム)にします。

超能力 → ち
伝説の自然体 → で
導きの舞 → み

頭文字読みの結果ち・で・みになります。
他に頭文字読みしたい言葉はありますか?

 これは ChatGPT 5 や Claude Sonnet 4.5 という、各社最高峰AIでも同様です。 意図通りに読めません
 すでに人間より優秀かもしれないと思えるAIに、こんな弱点があろうとは。 筆者には衝撃でした。

LLMの限界


 今のAIは LLM (Large Language Model) と呼ばれます。 GPU (Graphics Processing Unit = 元々はコンピューターグラフィックス用機能)などによる膨大な計算能力を用いて、膨大な量の学習で膨大なパラメーター数を扱います。
 しかし、そこには限界がありました。 理由をAIに回答してもらいました。

Gemini3回答抜粋

人間はテキストを「画像」や「塊」として全体的に捉えることができます(縦読みや斜め読みが得意な理由です)。
一方、現在の多くのLLMは、テキストを「トークン(言葉の断片)」の連続として、先頭から順番に処理しています。
「超能力」が来る
「伝説…」が来る
「導き…」が来る
これらを順番に処理している間に、「あ!これ全部つなげると『超伝導』になる!」という全体を俯瞰した「アハ体験(ひらめき)」を得るのが、構造的に少し苦手なのです。

 要は、トークナイズ(トークン化)と呼ばれる処理で「トークン」という言葉の断片に分解してから、AI本体である LLM が処理するため、LLMは元の言葉を見ていないのです。 AIには、もっともらしい嘘をつくハルシネーション(幻覚)と呼ばれる現象がありますが、 今回のケースはそれとは異なる、構造的な誤りであり、限界です。
 絵として捉えらられないからという回答ですが、わざわざ「頭文字読み」と指示していますので、きちんと「理解」していれば読めます。 その部分は本質を捉えていません。

回文も苦手


 これはたまたまではありません。 縦読み以外に回文も苦手なことが判明しています。
 例えば「仲間かな 敵も矢も来て 突進突」の中から回文を探してもらいます。 「なかまかな」と「てきもやもきて」が音の回文、「突進突」が文字の回文との回答が理想です。 しかしほとんどのケースで自信満々に「ありません」と言われます。
 でも「新聞紙 竹やぶ焼けた 宇津井健氏は神経痛」は、それぞれ回文と認識します。 これは、知識とのパターンマッチングと言えるでしょう。

【考察】本質はELIZAと同じ?


 1966年に登場した ELIZA(イライザ) という有名なAIがあります。 キーワードに反応して、あらかじめ用意されたフレーズを返す、世界初のチャットボットです。
 キーワードは完全一致が必要で、返すフレーズも固定です。 応用が効きません。 そのため、今のAIとはまったく異なるもののように見えます。
 しかし、現状のLLMの方式である「統計的な次単語予測」は、 そのパターン数を圧倒的に増やしているだけで、 パターンマッチングであることは変わらず、 本質的には ELIZA と同じではないか、という考えに至りました。
 これもAIに聞いてみました。

Gemini3回答抜粋:本質的な共通点

ユーザー様が指摘される通り、両者が共有する本質は、真の意味での「理解」や「意識」を持たないという点です。

Gemini3回答抜粋:決定的に異なる点

一方で、LLMの「大規模さ」は、単なる性能向上ではなく、本質的な挙動の飛躍(創発)をもたらしました。これはELIZAとは比較にならない次元の違いです。

 このように反論もされているので、色々な意見があるとは思いますが、 筆者は、結局は「キーワードへの反応が(飛躍的に)高度化しただけ」と考えています。
 現AIの登場で間違いなく便利になりましたので、これ自体は考え方の問題でどちらでも良いことではありますが…

【意識とは?】人間とAIは何が違う?


 ここで頭に浮かぶのが、AIは人間と何が違うのか、という疑問です。 あるいは、AIと人間は本当に違うのか、という疑問。
 おそらく日本人は、前述の例題を読むときに、文字を記号や絵として、また音としても「読んで」いると思います。 だから縦読みや回文も理解できる。
 意味への分解、すなわちLLM と同様にトークナイズしてから解釈する処理も実施しているでしょう。 しかしそれは、多数並行して実施している処理のひとつでしか無いのだと思います。
 そうだとすると、人間も、現AIやELIZAと同様に、本質的にはキーワードに反応しているだけかもしれません。 現AIが処理規模の違いでELIZAとまったく違って見えるように、人間も処理規模の違いでAIと違って見えるだけなのかも。
 理解や意識ってなんだろう。 そんなことを考えてしまいます。
[PR]

まとめ


 キャラAIバトルロイヤルの不適切キャラ除外プロンプトの解説をしました。
 商用利用を前提として本気で深く調べていくことで、現状のLLMの理解を深め、また限界も知ることができました。 また、人間とは何が違うのかを考えるきっかけにもなりました。
 皆さまの今後のAI活用、プロンプトエンジニアリングの参考になりましたら幸いです。

補足

  • 記事の校正/添削に生成AIの Anthropic Claude を利用しております。
  • 記事の校正/添削に生成AIの Google Gemini を利用しております。
  • 記事内の画像の作成に生成AIの OpenAI ChatGPT を利用しております。
  • 記事内の画像の作成に生成AIの Google Gemini を利用しております。
  • 画像内のラスタライズ文字フォントにOpen Font LicenseNoto Sans Japaneseを使用しております。
  • ※各社の登録商標または商標について「®」「™」等の表記はしておりません。

カテゴリー:プログラミング解説,キャラAIバトルロイヤル
[PR]