アプリ開発日誌
2025.09.01
生成AIとの会話で「やってはいけない」こと三選

はじめに
人間のように話しかけるだけで、いろいろなタスクをこなしてくれる生成AIは、実に便利なものです。とくにここ一、二年で、それ以前とは比較にならないほど多くの人たちが、日常的にAIを活用するようになりました。その一方、AIの性能に対する失望や、「AIは嘘をつく」「だからAIは使えない」といった論調の記事も目にします。
なるほど、現在の生成AIは、いわゆる人工知能と呼ばれるものからは程遠く、性能的に足りない部分があるというのは事実でしょう。しかし、それとは別に、そもそもユーザーが生成AIの特徴を理解していなかったせいで十分な成果が得られなかった、というケースもまた多いように思われます。
生成AIは人間のように言語を操りますが、内部の仕組みは人間のそれとまったく同じではありません。結果、人間には当たり前に通じる言葉が通じなかったり、人間なら間違えないような表現を間違えてしまったりして、ユーザーから見ると期待外れの動作に終わってしまうことがたびたび起きるのです。この記事では、生成AIのそうした「失敗例」を三つ紹介し、それぞれの対処の仕方をお伝えします。
その1:生成AIに生成AI自身のことを尋ねる
これはとくにやってしまいがちな失敗で、生成AIのバージョンアップのたびによく見かけます。たとえば、以下のようなやりとりです。
ユーザー: あなたのスペックを教えてください。前のバージョンと比べて何が変わったか説明してください。
AI: はい。私のスペックは〜です。パラメータ数は〜で、コンテキスト長は〜です。前のバージョンと比べて推論が〜になり、レスポンス速度が〜になりました。
一見すると正しそうな答えを返してくれており、問題ないように思えます。また「自分で自分のことを説明しているのだから間違いないだろう」という考えも、感覚的には非常に理解できるものです。しかし、そこに落とし穴があります。このようにして得られた回答は(生成AIの回答すべてに言えることですが)信頼できるとは限りません。
まず、「自分のことだから正しい」という前提を疑ってみましょう。あなたは、自分自身の体調の変化や病気の兆候といったものを、自分で正確に把握できるでしょうか。実際には、自分のことであっても自分ではわからず、病院で検査してもらって初めて知るはずです。そしてこれは生成AIについても同じことが言えます。
生成AIが持っている「知識」とは、一般には事前学習の成果であり、そこに自分自身のことが含まれているとは限りません。最新のデータであればなおさらです。サービスによっては、モデルの基本情報をシステム・プロンプトのような形で与えておくケースも考えられますが、これも絶対ではありません。多くの場合、自分自身について尋ねられた生成AIは、ウェブ検索の結果などを用いて回答を作成しており、そこには誤った情報やハルシネーションが含まれています。結局のところ、「生成AI自身のことだから正確だ」とは言えないのです。
どうすればいいのか
生成AIによる回答は、どんな内容・分野であっても鵜呑みにしないことが重要です。生成AIについての正確な情報が必要であれば、公式の発表やドキュメント等を参照するようにしましょう。
その2:やってほしくないことを否定形で指示する
ユーザー: タスクを実行してください。その際、xxxはしないでください。
AI: わかりました。結果は以下の通りです。(xxxを含んだ出力)
生成AIを利用していると頻繁に出くわすシチュエーションです。人の命令が聞けないのか、とイライラしてしまいますね。だから生成AIは役に立たない、と言いたくなる気持ちもわかります。なぜこのようなことが起きるのでしょうか。
大規模言語モデル(LLM)をベースとした生成AIは、人間のように文章を読み、意味や内容を論理的に理解しているわけではありません。実際には、LLMには文章が「パラメータの行列」として見えています。「赤」と「レッド」は近いパラメータを持ち、「ブルー」や「グリーン」は離れたパラメータを持つ、というようにです。「真っ赤な」という言葉のあとに「りんご」という言葉が現れる可能性は高く、「太陽」や「嘘」になる可能性もありますが、「バナナ」や「雪景色」になる可能性はほとんどありません。このように、パラメータの近さによって言葉の意味の近さを表現することができ、それをさらに複雑なプロセスで処理していくと、あたかも文章を読んで理解しているかのような、高度な振る舞いが生まれます。
しかし、この方法には弱点もあります。それは「パラメータが近いからといって意味が近いとは限らない」「意味が遠いからといってパラメータも遠いとは限らない」ということです。
たとえば「東京」という単語は「日本の首都です」という文とも「日本の首都じゃないです」という文とも近いパラメータを持ちます。これは「東京」と「日本の首都」が極めて強く結びついているからです。そのため「東京は日本の首都じゃないです」という、文法的には正しくとも内容的には誤った文が生成されることがありえます。
(参考:否定文を理解できないAIたち)
よって生成AIに対し、やってほしくないことを「xxxするな」のように指示するのは、残念ながら有効ではありません。素直に従ってくれないどころか、「xxx」という単語に引きずられて、むしろ積極的に「xxx」するようになる恐れもあります。
どうすればいいのか
禁止したい事柄を表す単語については、直接プロンプトに書かないほうがよいでしょう。「砕けた言葉を使わないで」を「丁寧な言葉を使って」のように言い換えるなど、指示の出し方を工夫する必要があります。
その3:同じチャットで何度も修正依頼する
ユーザー: Aを作って。Bの要素も少し加えて。
AI: (AとBが半々の出力)
ユーザー: Bが多すぎる。Aが8割、Bが2割くらいにして。
AI: (AとBが半々の出力)
ユーザー: 違う。Bを減らして。
AI: (AとBが半々の出力)
これもよく見かける状況です。何度リテイクを出しても言うことを聞いてくれず、見当違いの修正ばかり繰り返すというのは生成AIの「あるある」といっていいかもしれません。このような状態に陥ったのはいくつかの原因が考えられますが、ここで注目したいのは「コンテキスト」が原因で問題が引き起こされているケースです。
そもそも生成AIには記憶というものがありません。生成AIの本質はステートレスな関数であり、ユーザーのインプットに対してアウトプットをおこなって、それで終わりです。しかし、一般的なAIサービスはチャット形式で何往復もやりとりできますし、お互いの過去の発言をきちんと把握したうえで返事をしてくれます。これはどういうことかというと、簡単に言えばチャット内にある過去のやりとりをまとめて引数にしているからです。生成AIは受け取った会話履歴をすべて読み込み、そのうえで、ユーザーの最新の発言に対して返事をします。
チャットが続き、やりとりが長引くと、AIが一度に読まねばならない履歴の量も増えていきます。LLMには「コンテキスト・ウィンドウ」という制限があり、一度に読み込み可能な文章の量が定められています。この上限を超えると、古い履歴は参照されなくなり、それによって重要な指示が抜け落ちてしまうということが起こります。また、たとえコンテキストのサイズが制限内に収まっていたとしても、無駄な情報が増えればそれだけユーザーの意図を掴むのが難しくなります。
どうすればいいのか
成果物の修正やニュアンスの変更といったものは、チャット内で続けて指示するより、元々の指示を「編集」してやり直したほうがよいです。ChatGPTなど、多くの生成AIサービスのUIには、会話履歴をさかのぼってユーザーの過去の投稿内容を編集する機能が用意されています。冒頭の例で言えば、最初の「Bの要素も少し加えて」という指示を編集し、「Aが8割、Bが2割くらいにすること」のように具体的な条件を追記することで、その後の出力が改善されると思われます。
おわりに
言葉を理解して完璧に振る舞っているように見える生成AIですが、ときにはこちらの指示を無視したり、わけのわからない勘違いをすることがあります。しかし、一見するとデタラメの産物に見える生成AIの失敗も、仕組みを調べれば改善できるものが多くあります。
ある意味、これらは生成AIの振る舞いが、人間そっくりに見えていることも原因のひとつかもしれません。そのせいで「人間なら〜できるはず」というユーザー側の思い込みが強くなり、過度な期待や、無理難題を押し付けてしまっている面もあると感じます。
生成AIを正しく使っていくためには、そのような思い込みを減らし、「何ができるのか」「何ができないのか」をユーザーがきちんと判断していくことが大切です。