「さっき言ったよね?」AIがルールを守らなくなるのはなぜか
アウン・ピエAIエンジニア結論から書く。AIが最初のルールを守らなくなるのは、忘れたからではなく、会話が長くなってルールが埋もれたからです。直すには、ルールをチャットの中で言うのをやめて、どの会話にも自動で入る場所(プロジェクトの指示やカスタム指示)に置きます。
AIと話しはじめるとき、最初に一つ頼んでおきました。こういう内容です。
この会話は全部ミャンマー語で答えてください
はじめのうちはミャンマー語で返ってきます。しばらくすると日本語の単語が混ざりはじめます。そのうち、段落ごと日本語になります。
「さっき言ったよね?」と言い直します。直ります。少し経つとまた同じことが起きます。
難しいルールではありません。解釈の余地もない。それでも、長くなると消えていきます。
AIには記憶がない
根っこにあるのは一つです。AIには記憶がありません。 会話をしているように見えますが、実際は違います。入力するたびに、それまでのやりとりを全部まとめて送り直しています。
そのとき送られているのは、その一行だけではありません。会話のはじめから全部が、毎回いっしょに渡っています。
AIはそれを読んで、次の一行を返します。返したら、すべて忘れます。次に入力すれば、また全部を送り直すことになります。
毎回、初対面の人に頼んでいる
こう考えてみてください。仕事を一人に頼みます。終わったらその人は帰ります。次は別の人が来ます。前の人とは無関係で、経緯を何も知りません。
だから頼む前に、引き継ぎ資料を全部渡すことになります。最初から起きたことすべて。
次もまた別の人。資料をまた全部渡す。
AIとの会話はこれと同じです。最初に「ミャンマー語で答えて」とその場で伝えました。その言葉は資料の一枚として束に入ります。
会話が長くなると、資料は積み上がっていきます。一枚目は束の底に沈みます。残ってはいる。ただ、上に新しいものが積み重なった状態で。
会話が進むたびに資料の束が厚くなり、最初に伝えたルールの一枚が底に沈んでいく図
束の厚さはトークンで測る
ここで用語が一つ出てきます。AIは文章を文字のまま読みません。細かく区切ってから扱います。この区切られた一つひとつを トークン といいます。目安はこのくらいです。
- 英語:単語1つ ≒ 1トークン
- 日本語:文字1つ ≒ 1トークン(ときどきそれ以上)
正確である必要はありません。文章の量を測る単位だと覚えておけば十分です。会話が長くなるほど、毎回送るトークンが増えていきます。
どこまで厚くできるのか
資料の束は、いくらでも厚くできるわけではありません。一度に読める量には上限があり、これを コンテキストウィンドウ といいます。トークンで測ります。
ただ、上限に届く前から問題は始まっています。資料が何百枚も積まれると、新しく積まれた資料のほうに引っ張られやすくなります。 一枚目は残っているのに、上に積まれた何百枚の流れに負けてしまう。日本語のやりとりが続けば、AIも日本語に寄っていきます。
忘れられたように感じるのは、これが理由です。忘れているのではなく、埋もれています。
上限を本当に超えた場合は、ツールによって違います。古いほうを外して続けるものは、最初に言ったことから順に外していきます。「会話が長すぎます」と表示して止まるものもあります。
「メモリー機能」はどうなのか
ここで疑問が出てくるはずです。ChatGPTやClaudeにはメモリー機能があります。前の会話の内容を覚えているところを見たことがあると思います。それは、いま説明したことと矛盾しないのでしょうか。
矛盾しません。実際にやっているのは、大事なことを別のメモとして保存しておき、次に話すときに資料の束へ入れ直すという動きです。
新しく来た人が覚えていたわけではありません。メモを一枚、追加で渡しただけです。
ルールの置き場所を変えた
あらためて考えると、問題はルールのほうにはありませんでした。ルールを置いた場所のほうです。
チャットの中でその場で伝えたものは、資料の一枚です。あとから積まれるものに埋もれていく一枚。
そこで、チャットの中で言うのをやめて、ファイルにしました。以前使っていたツールでは、こうしていました。ルールをファイルに書いておく。新しい会話を開いて、そのファイルを添付する。これだけで、はっきり良くなりました。
今は添付する必要もありません。どの会話にも自動で入る場所が、多くのツールに用意されています。この記事を書いている時点では、Claudeならプロジェクトの「指示」、ChatGPTならカスタム指示やProjectsの指示がそれにあたります。名前は違っても考え方は同じで、一度入れておけば、新しい会話でも毎回いっしょに渡ります。
違いは単純です。チャットで言うのは、一度きり。指示に入れておくのは、毎回入っている。
引き継ぎの例で言えば、チャットで言うのは束に入る一枚です。指示に入れておくのは、束とは別に、束を渡す前に先に手渡しておく指示書のほうです。束がどれだけ厚くなっても、この一枚は束に入りません。埋もれることもありません。
ルールの置き場所の違い。チャットで言ったルールは束の中で埋もれる。指示に入れたルールは束とは別に、毎回先に手渡される
次に、渡しておいたルールをAIが守らなくなったら、チャットに打ち直すのはやめてください。打ち直すのは、資料の束の上に新しい一枚を載せることです。しばらくすればそれもまた埋もれます。また打ち直すことになります。終わりがありません。
かわりに、そのルールをチャットの外に出します。どの会話にも自動で入る場所——プロジェクトの指示やカスタム指示——に入れてしまう。
一度入れておけば、もう二度と言わずに済みます。



