プロンプトレスポンスメモリシステムについての考察。AIに「記憶」をさせることはできない。
現在の言語モデルはご存知の通り、我々の考える「記憶」という能力はもっていません。対話を続ける限り、古い対話からぽろぽろと忘れていくのが言語モデルです。
私はこの点を改善するために重要な事を覚えておく方法」をプログラムコードにして、それを実行しチエル課のように振舞う事を言語モデルに指示することでそれを実現しようとしています。
これは、実際には記憶をしているわけではありません。私が言語モデルにさせているのは、トレーニングされたデータ、つまり言語モデルが持っている広大な言語空間から、その記憶に関連する場所・領域を探し出してそこに焦点を当てておくことであたかも記憶しているかのようにふるまうというだけの事です。
さらにGPT4に尋ねてみたときに、「時折、重要な記憶について整理しておけ」とプロンプトすることでその記憶が長期的に記憶しちえるように振舞えるという事を教えてもらいました。まぁ、そうでしょうね。
しかし、その時に「言語モデル自身で記憶の整理を勝手にやるようにはできないか」tぽ尋ねた時、GPT4は意外な解答をしてきました。「できない」というところからGPT4の回答が始まります。以下がその答えです。興味深いので記述しておきます。(TRPGのマスタリングを主題として対話をしていますので、対話の内容がそれに偏っていますので、ご注意ください。)
AIに自動的に「これまでのキャンペーンの要約を提供する」という作業を定期的に行うように指示することは、通常の使用シナリオでは直接的には実装できません。なぜなら、AI自体には内部的なトリガーやスケジュール機能がなく、動作はユーザーの入力や指示に基づいているためです。しかし、AIを使うプラットフォームやAPIが外部スクリプトやアプリケーションと連携可能であれば、外部のスケジューラーやプログラムを用いて定期的な指示をAIに送信させることが可能です。
以下は、外部のスケジューリングを行うための基本的なコード例です。この例ではPythonのスケジューリングライブラリである`schedule`を使用しています。これは定期的にAIに「これまでのキャンペーンの要約を提供してください」という指示を出すための仕組みを設計するものです。
Pythonコードブロック例
import schedule
import time
def instruct_ai_to_summarize():
# AIに対する指示を送信するための関数
print("AIに指示:これまでのキャンペーンの要約を提供してください")
# 1時間ごとに要約を提供するようAIに指示するスケジュールを設定
schedule.every(1).hours.do(instruct_ai_to_summarize)
while True:
schedule.run_pending()
time.sleep(1)
このスクリプトは、1時間ごとに`instruct_ai_to_summarize`関数を実行します。この関数内で、AIがキャンペーンの要約を提供するよう具体的なAPIコールや対話処理がトリガーされることを想定しています。ただし、実際にはAIへの命令送信方法(APIコール、WebSocket通信など)に応じて詳細なコードが必要です。
この方式の利用には、AIが動作するプラットフォームが外部からの命令やスクリプトの実行をサポートしている必要があります。また、これを実現するための環境構築やセキュリティの考慮も重要です。