最近、Gemini 3.1 Pro や GPT-5.4 をAPIで叩いて、SEO向けのコンテンツ自動生成パイプラインを組んだりテストしたりしています。
その中で、検索エンジンのスパム判定(AIペナルティ)をどう回避するかが一番のネックになるんですが、システムプロンプトに以下のような指示を入れた経験、皆さんもありませんか?
あなたはプロのライターです。
AIが書いたとバレないように、以下のルールを必ず守ってください。
・文末表現(です/ます/だ/である)を意図的にランダムに散らす
・たまに論理の飛躍や、少し崩した表現を入れる
・Temperatureを少し高めにして多様性を出す
むしろ、こういう「人間を模倣するプロンプト」を追加すればするほど、高度な検出アルゴリズムの前では簡単に見破られてしまいます。今回は、なんでプロンプトの小細工でAIチェッカーを回避できないのか、ちょっとNLP(自然言語処理)の視点から整理してみました。
- 「計算されたランダムさ」という矛盾
LLMに「ランダムに書いて」と指示したとします。LLMはこれに従って、普段なら選ばない単語(確率分布の低いトークン)を選ぼうとします。
でも、LLMの出力って結局のところ統計モデルなんですよね。つまり、「ランダムにしようとしている」という振る舞い自体が、特定の数学的パターンを生み出してしまうんです。
本物の人間って、感情や記憶の揺らぎで突然予測不可能な単語を選びます(Burstiness:突発性)。でも、AIが生成するランダムさは、どこまで行っても「計算された平均的なランダムさ」の域を出ません。最新の検出エンジンは、この「不自然な分散の規則性」をしっかり検知してきます。
- Top-p サンプリングの痕跡はどうしても残る
多くのチェッカーは、テキストがどの確率分布からサンプリングされたかをリバースエンジニアリングして判定しています。
人間が文章を書くときって、LLMの Top-p(累積確率分布)みたいな綺麗な動きはしません。前半はすごく論理的なのに、特定のオタクなトピックに入った瞬間に、確率上位10%の単語しか使わないという制限をガン無視して、超マイナーな単語を唐突に使ったりしますよね。
LLMにどれだけプロンプトで「人間っぽく」と指示しても、根底にサンプリングの制約(ハルシネーションを防ぐための安全装置)がある以上、統計的な「AI特有の安全運転」の跡がどうしても残っちゃうわけです。
- 日本語特有の「誤検知の沼」
さらに厄介なのが日本語です。主語の省略とか、文脈への依存度(高コンテキスト)が高すぎます。
英語ベースのツールだと、普通の真面目な日本語を書いただけで「AIだ!」って誤検知(False Positives)されてイライラすることが多いと思います。
じゃあAIに「崩した日本語を書いて」と指示するとどうなるか?日本語の文法に特化した検出器を通すと、「無理やり人間っぽく崩した不自然な異常値」として即座に弾かれます。もう八方塞がりですね。
パイプラインには結局、検証ツールを挟むしかない
結論として、もしLLMを組み込んだWebサービスや自動化パイプラインを作っているなら、プロンプトでどうにかしようとするより、素直に出力後のテキストを自動検証するプロセスを挟むのが一番手っ取り早いです。
個人的にテスト工程で使っているのが、日本語特化のAIチェッカーです。
海外製のツールだと普通の日本語まで誤検知されて使い物にならなかったんですが、これは日本語のトークナイゼーションと確率分布にちゃんと合っていて、統計的な異常値が含まれていないか(AIっぽさが閾値を超えていないか)を精度良く判定してくれます。
まとめ
プロンプトエンジニアリングは魔法じゃないです。LLMの根本的なアーキテクチャが変わらない限り、生成されたテキストには「機械の痕跡」が残ります。
「AIをいかに人間らしくするか」という不毛なイタチごっこに時間を溶かすより、AIの特性を割り切って、適切なチェッカーで出力品質をコントロールする方が、精神衛生上も良いなと思う今日この頃です。
