コンテキスト
AIモデルの仕組みが分かったところで、次は出力品質をどう高められるかを見ていきましょう。
出力を良くするには、より良いプロンプトを書けばいい、と思うかもしれません。確かに有効ですが、本質は別にあります。つまり、AIモデルと協働するうえで最も重要なのは、与えるコンテキストを適切に管理することです。
料理にたとえると分かりやすいでしょう。スープを作るとします。
材料という多くの入力を用意し、レシピに沿って進捗を追いながら調理します。最後に、おいしいスープができ上がります。
シェフは好みに合わせて材料を足したり変えたりしますし、同じレシピでも、仕上がりの味が少し変わることがあります。
これはAIモデルの扱いにも似ています。コーディングの例で考えてみましょう。
- 現在のコードベースやファイルなど多くの入力があり、AIモデルに達成したい内容を伝えるプロンプトがあります
- 計画に従います。計画は人間が作成する場合もあれば、モデル自身が提案する場合もあり、タスク完了ごとにチェックできるToDoリストを作成できます
- 最終的に、プロジェクトに適用できる生成コードが得られます
システムプロンプトとユーザープロンプト
あなたの入力とモデルの出力は、どちらもすべて「コンテキスト」の一部になります。コンテキストは、AIモデルが会話のための作業メモリを保持している長いリストのようなものだと考えてください。
リストの先頭にはシステムプロンプトがあります。これは、ツールの作成者がモデルに従わせたい指示やスタイルを与える方法です。特定の方向に出力を促し、従うべき具体的なルールを定義するのに役立ちます。
次にあるのが、ユーザーメッセージまたはプロンプトです。これは、モデルに与えたいあらゆる指示になりえます。たとえば、ユーザーアカウントを管理するための新しいルートを追加するといったものです。適切なスペルや文法を使う必要はありません。AIモデルはあなたの意図を驚くほどうまく汲み取れますが、きちんと書いて損をすることはありません。
これはテキストだけに限りません。今では多くのAI製品が画像の添付をサポートしており、基盤となるAIモデルが画像の内容を読み取って理解し、そのテキスト表現をコンテキストに含めることができます。
チャット中にモデルのコンテキストに含まれる項目はどれですか?
Select all that applyコンテキストの取り込み
Cursor のようなツールは、コードベースの状態に基づいて、入力コンテキストに関連情報を自動的に含められます。たとえば、開いているファイル、ターミナルの出力、リンターのエラーなどです。
入力をモデルに送信すると、モデルは出力を生成して返します。簡単な質問ならテキストの場合もあります。コーディングのユースケースでは、コードベースに適用できるコードスニペットになることもあります。モデルから返されたものはすべて、出力コンテキストの一部です。
会話は、あなたと AI モデルの間で複数の「ターン」を重ねることがあります。会話内のすべてのメッセージは、入力と出力の両方を含めて、コンテキストの作業メモリとして保存されます。
このリストは時間とともに長くなります。これは重要なポイントです。人間同士の会話と同じで、一度に頭の中で保持できるコンテキストには限りがあります。
会話が長く続くと、3時間前に誰かが言ったことを覚えておくのが難しくなります。だからこそ、コンテキストを理解し、適切に管理することは重要なスキルです。
コンテキストの制限
各AIモデルには異なるコンテキスト上限があり、上限に達すると会話でこれ以上メッセージを受け付けなくなります。多くのAIツールは、上限までの残りを知らせたり、現在の会話を圧縮・要約して上限内に収める手段を提供します。
このコースの後半では、Cursor内でコンテキストを管理する実践例を紹介します。これまでは、テキストや画像など、こちらで制御できるコンテキストをモデルに与える方法だけを扱ってきました。では、モデル自身が動的にコンテキストを取得するには?
そこで役立つのがツール呼び出しです。