LangChain のブログに掲載されたこの記事で、Harrison Chase は コンテキストエンジニアリング の定義を示している。それは「LLM がタスクを妥当に達成できるよう、適切な情報とツールを適切な形式で提供する動的なシステムを構築すること」である。彼はこれを、Tobi Lutke、Ankur Goyal、Walden Yan による最近の見解を踏まえた、自身の気に入っている定義として提示する。そして、LLM アプリケーションが単一のプロンプトから、より複雑で動的なエージェント型システムへと進化するにつれ、コンテキストエンジニアリングは AI エンジニアが身につけられる最も重要なスキルになりつつあると論じる——ただしこの主張については、記事自身の根拠に基づくのではなく、Cognition へのリンクを示している。
記事の中心的な主張は、エージェントが信頼性に欠ける振る舞いをするとき、通常の原因は、適切なコンテキスト、指示、ツールがモデルに伝えられていないことだというものである。記事は定義を構成要素に分解し、コンテキストエンジニアリングを プロンプトエンジニアリング と対比し、基本的な例を挙げ、最後に LangChain の LangGraph と LangSmith がこの実践をどう支援するかを説明する。記事は、コンテキストエンジニアリングは新しいアイデアではない——エージェントの構築者たちは 1、2 年前からそれを行ってきた——が、ますます重要になりつつあるスキルを的確に表す新しい用語である、と述べて締めくくられる。
要点
- コンテキストエンジニアリングは システム として説明される。複雑なエージェントは、開発者、ユーザー、過去のやり取り、ツール呼び出し、外部データといった多くのソースからコンテキストを引き出すからである。また 動的 なものとしても説明される。そのコンテキストの多くは実行時に届くため、最終的なプロンプトを組み立てるロジックは、静的なプロンプトではなく動的でなければならないからである。
- システムは、適切な 情報(モデルは心を読めない。「garbage in, garbage out」)と、入力だけでは不十分なときに情報を調べたりアクションを起こしたりするための適切な ツール を、いずれも適切な 形式 で提供しなければならない。記事の例では、短く説明的なエラーメッセージは大きな JSON の塊よりも効果的であり、ツールの入力パラメータも重要だとされる。
- モデルがそのタスクを「妥当に達成できる」かどうかを問うことは、失敗モードを切り分ける方法として提示される。適切な情報やツールを欠いていたモデルと、必要なものをすべて持っていたのに失敗したモデルとでは、対処の仕方が異なる。
- 第一原理から考えると、モデルが誤るのは、モデルが十分に優れていないか、適切なコンテキストを与えられていないかのどちらかであり、多くの場合——特にモデルが向上するにつれて——原因は後者であると記事は述べる。コンテキストが欠けている場合もあれば、形式が不適切な場合もある。
- プロンプトエンジニアリングはコンテキストエンジニアリングの一部であると論じられる。コンテキストをどうプロンプトに組み立てるかは依然として重要だが、課題は単一の固定された入力に対してプロンプトの言い回しを工夫することではなく、動的なデータの集まりを整形することである。明確な振る舞いの指示は、その両方の性質を少しずつ持つとされる。
- 挙げられている基本的な例は、LLM が消化しやすい出力を返すツール利用、会話の要約による短期記憶、ユーザーの好みについての長期記憶、プロンプト内で明確に列挙された振る舞いの指示、そしてモデルを呼び出す前に取得した情報を挿入する検索である。
- LangChain 自身の製品について、記事は、どのステップを実行し、LLM に正確に何を入れるかを決めるという制御を LangGraph が重視していることがコンテキストエンジニアリングを可能にする一方、他のフレームワークのエージェント抽象化はそれを制限しうると論じる。また、各ステップと LLM 呼び出しの正確な入出力を示す LangSmith のトレースが、モデルが必要な情報とツールを受け取っていたかどうかのデバッグに役立つとしている。これらは自社製品についての著者の主張である。
背景
この記事は、新しい実践を導入するのではなく、既存の実践に名前を付けるものとして自らを位置づけており、採用した定義については他者の最近の発言を出典として挙げている。関連性の高い読み物として Dex Horthy の「12 Factor Agents」を推薦し、LLM とのコミュニケーションは難しく、しばしばエージェントのエラーの根本原因になると論じた著者の以前の記事とこのトピックを結びつけている。記事は LangChain 自身のブログに書かれたものであり、製品に関する節はベンダーによるガイダンスである。