モデルは覚えていません。あなたが覚えているのです。
LLMにはメモリ(記憶)がありません。
以前の私は、すべてのチャットが独自のコンテキストを保持していると思っていました。モデルが私たちの以前の言葉を自動的に覚えているのだと考えていたのです。しかし、それは間違いでした。
Messages APIはステートレスです。モデルは、現在のリクエストで送信された内容しか知りません。会話を成立させたい場合は、毎回必ず会話の履歴全体をモデルに送り返す必要があります。
あなたの「記憶」とは、単なるメッセージの配列に過ぎません。
チャットを構築する際、この配列を管理することになります。その構造は以下の通りです:
• User: こんにちは、Claude • Assistant: こんにちは!何かお手伝いできることはありますか? • User: LLMについて説明してくれますか?
新しい質問をするたびに、そのリストに新しいメッセージを追加し、リスト全体をAPIに送信します。
私はSDKを使わないことで、この仕組みを学びました。ほとんどの開発者はAnthropic SDKのようなツールを使用します。これらのツールは複雑さを隠蔽してくれます。リトライやヘッダーの処理を自動で行ってくれるからです。
私はあえて生のfetchを使用することを選びました。これにより、ヘッダーやリクエストボディを手動で管理せざるを得なくなりました。抽象化が取り払われたことで、データがどのように動いているのかを正確に把握することができました。
この概念は、他のあらゆることの基礎となります。高度なシステムを構築したいのであれば、この配列を理解しなければなりません。RAGやスライディングウィンドウといった戦略は、すべてこのメッセージリストをどのように管理するかから始まります。
履歴の管理をマスターすれば、次はtool useへと進むことができます。これにより、モデルはタスクを実行し、実行すべき適切な関数を選択できるようになります。
コンテキストを制御しましょう。それがモデルを制御することに繋がります。
出典: https://dev.to/marcochavezco/the-model-doesnt-remember-you-do-3mmk
オプションの学習コミュニティ: https://t.me/GyaanSetuAi