AIを使うようになってから、よく耳にするようになった言葉がある。
「コンテキスト」。
最初は、何のことだかよく分からなかった。
でも、Claude CodeなどでAIを使って作業していると、「コンテキストが長くなっている」「コンテキストを圧縮した方がいい」「新しいセッションにした方がいい」なんて話を聞くことがある。
これって、どういう意味?
そう考えていたら、以前からAIを使っていて困っていたことが、いろいろ思い浮かんできた。
何度修正しても、画像が思いどおりにならない!
私が特に苦労したのは、AIでの画像生成。
最初にプロンプトを渡して画像を作ってもらう。
できあがった画像を見て、「あ、いい感じ! でも、ここだけちょっと変えてほしいな」と思うことがある。
そこで修正をお願いすると……。
えっ、そこじゃない!
変えてほしい部分はそのままで、変えてほしくなかった別の部分が変わってしまう。
もう一度お願いする。
でも、なかなか直らない。
何度も同じように修正を頼んでも、どうしても意図したものにならないことがあった。
しかも、画像生成には時間がかかる。
しばらく待って、やっとできあがった画像を見たら、また違う!
あのがっかり感といったら!
知り合いにそんな話をすると、同じような経験をしている人が何人もいた。
どうやら、私だけではなかったらしい。
「もう新しいチャットで作り直した方がいいんじゃない?」
何度修正しても思いどおりにならない。
そんなとき、私は「もう新しいチャットで、最初からプロンプトを書いて作り直した方がいいと聞いたよ」と、人に伝えたことがある。
ところが、ある人は新しいチャットに移ることに抵抗があるようだった。
その人は、それまでのチャットで、たくさんの情報や希望をAIに伝えていた。
何度もやり取りして、ようやく自分の希望を反映した画像が出てくるようになった。
それなのに、新しいチャットにしたら、今まで積み重ねた情報が消えてしまうんじゃないか。
だから、今のチャットを続けたい。
そういう気持ちだった。
それを聞いて、確かにその気持ちも分かるなと思った。
せっかく時間をかけて伝えた情報だもんね。
でも、何度修正してもうまくいかないなら、新しく始めた方がいい気もする。
さて、どっちがいいんだろう?
そもそも、コンテキストって何?
コンテキスト(context)は、日本語では「文脈」や「前後関係」といった意味で使われる言葉。
AIの場合は、もう少し広く、AIが今の質問に答えるために参照する情報と考えると分かりやすい。
例えば、こんなもの。
- これまでの会話
- 自分が伝えた指示や条件
- AIに渡した資料やファイルの内容
- 作業の途中で得られた情報
ただし、どの情報が実際に渡されるかは、使っているAIやサービスによって違う。
AIが会話の流れを理解してくれるのは、こうした情報を参照できるから。
例えば、さっきまで画像について相談していたなら、「もう少し明るくして」と言うだけで、どの画像のことか分かってくれる場合がある。
これは便利!
毎回、最初から全部説明する必要がない。
だから、コンテキストは決して邪魔なものではないんだ。
むしろ、AIと一緒に作業を続けるうえで、とても大切なもの。
でも、AIが一度に扱える情報には限りがある
ここで登場するのが、「コンテキストウィンドウ」という言葉。
これは、AIが一度に扱える情報量の枠のこと。
AIは、どんなに長い会話でも無制限に全部を参照できるわけではない。
モデルやサービスごとに、扱える情報量には上限がある。
そして、会話や作業が長くなると、その枠の中にたくさんの情報が入ってくる。
最初の指示。
途中で変更した条件。
何度も試した修正案。
うまくいかなかった結果。
今はもう使わない古い方針。
もちろん、長いコンテキストが必ず悪いわけではない。これまでの経緯を知っているからこそ、AIがうまく対応できることもある。
ただ、情報が増えれば、それだけ整理が難しくなる場合もある。
特に、昔の指示と新しい指示が矛盾していたら、どちらを優先すべきか分かりにくくなることがある。
そう考えると、「AIにたくさん情報を渡せば渡すほどいい」とも言い切れないんだよね。
長いチャットが、ものすごく遅くなることもあった
もう一つ、私が何度も経験したことがある。
それは、チャットやセッションが長くなるにつれて、AIの返答を待つ時間がものすごく長くなってしまうこと。
最近は以前より減ったように感じるけれど、長い間使っているチャットでは、回答が返ってくるまでずいぶん待たされることがあった。
そんなとき、これまでの作業内容をサマリーにまとめてもらい、新しいチャットで再開したことがある。
すると……。
速い!
びっくりするほどスムーズに返事が来る。
「なんでもっと早くこうしなかったんだろう!」
そう思ったことが何度もあった。
長い会話では、AIが処理する情報量が増えるため、返答に時間がかかる場合がある。
ただし、遅くなる原因がすべてコンテキストとは限らない。AIサービスの混雑や、使っているモデル、ツールの処理なども関係する。
それでも、私の場合は、新しいチャットに移ることで快適になった経験が何度もあった。
/compact って何? 新しいチャットとは違うの?
Claude Codeを使うようになってから、/compact というコマンドを聞くようになった。
これは、長くなった会話を要約して、コンテキストの使用量を減らすための機能。
それまでの会話を一言一句そのまま持ち続けるのではなく、重要な内容を要約して残すという考え方なんだ。
新しいチャットを作る方法とは、少し違う。
Claude Codeでは、例えばこんな方法がある。
| 方法 | どんなことをする? |
|---|---|
/compact |
会話を要約して、同じセッションで作業を続ける |
/clear |
会話のコンテキストをクリアして、新しい話題や作業を始める |
| 新しいチャット・セッション | 必要な情報を改めて渡して再スタートする |
/btw |
本筋の履歴を増やさず、ちょっとした質問をする |
/btw というコマンドも聞いたことがある。
英語の by the way、つまり「ところで」という意味だよね。
Claude Codeでは、作業の途中にちょっと確認したいことを、メインの会話履歴に追加せずに質問できる機能なんだ。
こうして見ると、いろいろな機能が、コンテキストをうまく扱うために用意されていることが分かる。
ただし、/compact で要約すると、細かな情報が省略される可能性もある。
大事な条件や決定事項があるなら、別のファイルなどにも残しておく方が安心。
新しいチャットにしたら、今までの情報は全部消える?
ここで、最初の画像生成の話に戻る。
知り合いが心配していた、「新しいチャットにしたら、今まで伝えたことが消えてしまう」という問題。
新しいチャットに、前のチャットの情報が自動ですべて引き継がれるとは限らない。
だから、その心配にはちゃんと理由がある。
でも、今までの情報を全部捨てなければいけないわけでもない。
例えば、元のチャットでこんなふうにお願いすることもできる。
「これまでに決まったキャラクターの特徴、デザインの条件、変更してはいけない部分をまとめて。途中で取り消した指示や、失敗した案は除外して」
そうして作ったサマリーと、基準にしたい画像を、新しいチャットに渡す。
これなら、必要な情報を引き継ぎながら、もう一度挑戦できる。
もちろん、画像を部分的に修正すること自体がAIにとって難しい場合もある。
だから、新しいチャットにしただけで必ず解決するわけではない。
でも、少なくとも「今までの情報を全部残すか、全部捨てるか」という二択ではないんだよね。
画像生成の失敗は、全部コンテキストのせい?
ここは少し注意したい。
例えば、画像の背景だけを変更してほしいのに、キャラクターの顔まで変わってしまう。
こんな問題は、コンテキストが長くなったことだけで起きるわけではない。
画像生成AIが、指定された部分だけを正確に変更し、ほかの部分を維持するのが苦手な場合もある。
これは、最初の修正から起こり得ること。
一方で、長いやり取りの中で、古い指示と新しい指示が混ざってしまう場合には、条件を整理して新しいチャットから始めることが役立つかもしれない。
つまり、同じ「修正してもうまくいかない」という現象でも、原因は一つではないということ。
そこを区別できるようになると、次に何を試せばいいか考えやすくなる。
コンテキストは、長ければいいわけでも、短ければいいわけでもない
今回いろいろ考えてみて、私が面白いと思ったのはここ。
AIに自分のことや希望をたくさん伝えてきたからこそ、その情報を失いたくない。
でも、情報が増えすぎたり、古い指示が残っていたりすると、作業がうまく進まなくなることもある。
どちらの気持ちも分かる。
だから大切なのは、単にコンテキストを短くすることではなく、必要な情報を残して、不要になった情報を整理することなのかもしれない。
最近はAIを使ってアプリを作ったり、いろいろな作業を進めたりする機会が増えた。
その中で、AIに何を伝えるかだけでなく、何を残して、何を整理するかも大切なんだなと感じる。
そして、もう一つ。
新しいチャットを始めることは、今までの努力を捨てることとは限らない。
積み重ねた経験や成果物を残しながら、作業の進め方だけを新しくすることもできる。
「コンテキスト」って、最初は難しそうな言葉に聞こえた。
でも、実はAIを使っている私たちが、日々の作業で何度も向き合っていることなのかもしれないね。