今回はChatGPTの2023年7月のアップデートで追加されたAdvanced Data Analysisのファイルアクセス機能を使って、長期記憶を実現するための方法を解説します。
ChatGPTは扱えるトークン数に制約があり、そのトークン数の上限を超えた情報を記憶できません。そこで、Advanced Data Analysisを使って、会話毎に履歴を外部ファイルに書き出し、必要に応じてファイルから情報を取得して回答をさせることで、記憶領域の拡張を試みました。
プロンプトテンプレートをそのまま流用するだけで、簡単に実行できますので、ぜひ活用してみてください。
また、当ブログ内のChatGPTについての記事を以下のページでまとめていますので、あわせてご覧ください。

ChatGPTとは
ChatGPTは、OpenAIが提供する自然言語生成モデルです。GPT(Generative Pre-training Transformer)と呼ばれるモデルのアーキテクチャを採用しています。
GPTは、Transformerと呼ばれるニューラルネットワークを使用して、文書や言語処理タスクでのテキスト生成を行うモデルです。GPTは、大量のテキストデータを学習し、そのデータをもとに新しい文章を生成することができます。
ChatGPTは、GPTをもとにしたモデルであり、対話型システムやチャットボットなどで使われることを想定して開発されています。対話を続けることができるようになっており、ユーザーが入力するテキストに対して、自然で返答ができるようになっています。
プログラミング不要のOpenAIのサービスとしてChatGPTを利用する方法については、以下の記事で解説しています。

Advanced Data Analysisとは
Advanced Data Analysisとは、ChatGPTの2023年7月のアップデートで追加された機能です。
ChatGPTとのチャット上でPythonコードを実行したり、ファイルアクセス機能が追加されました。
詳細は以下の記事で解説していますので、あわせてご覧ください。

Advanced Data Analysisで会話を保存するためのプロンプト

今回は、Advanced Data Analysisを使って、会話毎に履歴を外部ファイルに書き出し、必要に応じてファイルから情報を取得して回答をさせることで記憶領域の拡張を行います。
ChatGPTに会話毎に内容を外部ファイルに保存するよう指示するためのテンプレートを作成しました。
プロンプトテンプレート
チャット開始時に以下のテンプレートを入力してください。
「chat-summary.txt」というファイルを作成し、これから行う会話の全てのファクトデータ、ソースコード、会話の要約をこのテキストファイルに保存してください。
その後ユーザーがファイルを直接ダウンロードできるよう毎回ダウンロードリンクを作成してください。
1回の回答を行うごとに「chat-summary.txt」の内容を更新してください。
また回答をする際は、「chat-summary.txt」の内容を踏まえて回答を作成してください。
このテンプレートを実行すると、チャット開始時にchat-summary.txt
というファイルが作成され、会話の記録がファイル内に保存されます。

Advanced Data Analysisを長期記憶に使う
ここからは実際に外部ファイルchat-summary.txt
を使って会話を行います。
記録ファイルを作成する
まず、ChatGPTのチャット画面で、先ほどのテンプレートを入力します。
入力すると以下のようにChatGPTが会話を保存するためのファイルを作成します。

これで準備は完了です。
会話の履歴を保存する
その後は通常通り質問を入力していきます。

質問を送信すると回答の最後でその内容をChatGPTが毎回ファイルに追加していきます。
ダウンロードリンクをクリックすると

ファイルをダウンロードして開くと、以下のように会話の内容が保存されています。
英語で保存されていますが、日本語に対して英語の場合3分の1程度のトークン数でカウントされるため、あえて日本語での保存という指示は出していません。

会話の履歴をファイルから読み込んで回答を作成する
先ほどのチャットを数十ターン繰り返した後、一番最初に提示してもらったコードを再度ChatGPTに要求します。以下のようなプロンプトを作成し、送信します。

先ほどの要求に対し、ChatGPTが回答前にchat-summary.txt
のファイルにアクセスし、過去のチャットの会話履歴から情報を取得していることが確認できます。
そして初回のソースコードと全く同じ回答が生成されました。


まとめ
今回はChatGPTの新機能であるAdvanced Data Analysisのファイルアクセス機能を使って、長期記憶を実現するための方法を解説しました。
これまで、ChatGPTと長い会話を行う際は、ターン数が増えたら定期的に会話内容をまとめる等の手段をとる必要がありましたが、履歴をファイルに保存していくとで効率的に過去の会話履歴を活用できるようになります。
簡単なプロンプトで実現できますので、ぜひ試してみてください。
また、以下の記事で効率的にPythonのプログラミングスキルを学べるプログラミングスクールの選び方について解説しています。最近ではほとんどのスクールがオンラインで授業を受けられるようになり、仕事をしながらでも自宅で自分のペースで学習できるようになりました。
スキルアップや副業にぜひ活用してみてください。

スクールではなく、自分でPythonを習得したい方には、いつでもどこでも学べる動画学習プラットフォームのUdemyがおすすめです。
講座単位で購入できるため、スクールに比べ非常に安価(セール時1200円程度~)に学ぶことができます。私も受講しているおすすめの講座を以下の記事でまとめていますので、ぜひ参考にしてみてください。

それでは、また次の記事でお会いしましょう。


コメント