自分のChatGPTの過去のチャットを、ChatGPTに分析させようとしてみたが、断念した話

# はじめに
## 問題提起
ChatGPTは「新しいチャット」で始めたら、過去の会話は一切忘れた、**新しくて純粋無垢なChatGPTさんと会話することになり、それが困る**という話。
少しだけ、`設定＞パーソナライズ`に、過去からの引継ぎ事項がありますが、少しだけでは物足りない。
（「新しいチャット」の単位の呼び名は、たぶん「カンバセーション」なので、以下ではそれで書きます）

具体的には、

- １か月くらい前に話したアレなんだけど、状況が変わったからまた再開したい
- 自分の大きな目標について以前そのスケジュールを立ててもらった。今日はそのうちのコレコレを相談しながら進めたい
- 以前相談して、最終的にこうなった結論は覚えてるんだけど、どういう流れだったか忘れたから要約して
- 以前からのテーマだが、昨日の話は忘れて、今日は仮説としてこういう前提で話をしたい

とか難しい。カンバセーションを探し出して、開けばいけることもありますが。これは、ChatGPTに限らず、ClaudeにしてもGeminiにしても。

そうか、つまりカンバセーションについて、**過去のことを簡単に検索**できて、**`git branch` とか `merge` みたいなことをやりたい**んだ。


## 解決方法の概要
そこで、過去の内容を全部覚えて（思い出して）もらって、そのうえで会話する担当のChatGPTさんを作れないかなぁと思い、試行しようと思いました。

# 方法
## 1. 過去の会話を全部エクスポート
`設定＞データ コントロール＞データをエクスポートする`で、全カンバセーションの全会話を得られます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/722610/2af82f73-deaf-4874-bc4f-dce6a7014f61.png)

入手したファイルのうちの、`conversations.json`を使います。私は、約50MBありました。

それをChatGPTにポイっと読み込ませると、大きすぎるので読み込めないとのこと。そこで次。

## 2. Pythonで分解
Pythonでjsonを別々のファイルにする処理を作成。
いうほどのコードじゃないけどいちおう貼っておきます。
```Python
# conversationファイルをchunk_sizeで分割する
def split_data_json_file(input_file, output_dir, chunk_size=20):
    # 出力フォルダ
    current_dt = datetime.now().strftime('%Y%m%d_%H%M%S')
    output_dir = f"{output_dir}/result_{current_dt}"
    os.makedirs(output_dir, exist_ok=True)

    # JSONをパース
    with open(input_file, 'r', encoding='utf-8') as f:
        data = json.load(f)
    
    # データを分割して保存
    for i in range(0, len(data), chunk_size):
        chunk = data[i: i+chunk_size]
        output_file = os.path.join(output_dir, f'conversations_{i // chunk_size + 1}.json')
        with open(output_file, 'w', encoding='utf-8') as out_f:
            json.dump(chunk, out_f, ensure_ascii=False, indent=2)
```
処理の結果、私の場合は、jsonファイルが72ファイルに分割されました。20x72=1,440。それだけ「新しいチャット」を押したということですね。思った以上に使っていた。

そしてそれをChatGPTにもう一度読み込ませる。

## 3. ChatGPTに読み込ませる
72ファイルもあって一気に放り込むのもナンなので、こんなプロンプトで、何度かに分けて登録しました。

> 私が使ったChatGPTの過去の会話を分析してほしい。
> 
> これから、ChatGPTからエクスポートした conversations.json を分割したデータを読みこませるので、私が「以上です」というまで、連続して読み込み、理解してください。分析はしないでください。
> 「以上です」といったら、分析を開始してください。


全部アップロードが終わったら、これ。
> 以上です。
> 
> 添付した"conversations_*.json"のすべてのファイルを解析し、10個のテーマにグルーピングし、タイトルを決めてください。
> そして10個のテーマそれぞれについて、テーマのタイトル、会話数、全体のうちの割合を出してください。

その結果がこちら

| Theme | Conversation Count | Percentage |
| :-: | :-: | :-: |
| プログラミングのエラーメッセージの解決 | 261 | 18.264521 |
| React・フロントエンドの開発 | 67 | 4.688593 |
| Bubbleやノーコードツールの利用 | 6 | 0.419874 |
| Pythonでのデータ処理と解析 | 155 | 10.846746 |
| SQL・データベースの使用 | 44 | 3.079076 |
| システムの設計・構築 | 127 | 8.891643 |
| APIの利用と連携 | 35 | 2.450738 |
| バーコード・QRコード関連 | 12 | 0.840297 |
| 学習・資格取得 | 25 | 1.750621 |
| その他の技術的な質問 | 720 | 50.768891 |

- 100%エンジニアリング？
- エラーメッセージの解決の割合、確かによく使うけど
- その他は全部6以下の話題なの？ロングテールすぎるでしょ
- ソートする気は回らない（指示しないほうが悪いか）

全体的には、外れてもいないけど、そんな馬鹿な、が多い感じですｗ 分析下手か。
これは、他のChatエージェントと比べたら、結構差が出るかもしれない。けどお金払っているChatGPT以外は、上限に抵触してしまうため、やってないです。

## 4. 全部学習した結果の利用 → 現実的に×
とにもかくにも、私のチャット履歴を全部覚えたカンバセーションを使ってみます。

### 会話は成り立たない
質問のたびにすごく時間がかかります。質問のたびに、Pythonのスクリプトを生成して、jsonを全部読み込みなおしている模様。そして結構的外れ。個人の意見ですが、ChatGPTのコーディングは、現時点ではあまり信用できない。

そうじゃなくて、それを学習して、普通の会話でやりとりしてほしかったのですが、どうやらそれは今は難しい模様でした。

「～～について初めて会話したのはいつ？」とかなら、ギリいける感じ。でもそれすら結構あやしい。

### 分析も断念
分析というと、分類したテーマを、時系列的に見た時、盛り上がりがどうなのかとか見ると、自分のブームというか、そういうのがわかるかなーと思ったのですが、逐一Pythonを生成してグルーピングし、そこから分析し始めるので、到底そこまでたどり着ける気がしません。

ということで断念。


# 結論、おわりに
最終的には、**今のChatGPTでは、私のやり方ではできない模様**、ということになりました。安易に、エクスポートして得たjsonを投げて、覚えさせる方法では無理。

Q&Aをチャットで行うシステムがすでにあるようなので、なんかうまくやればできるんだと思います。ファインチューニングですね。しっかりコーディングしないといけないのかな。
または、単純にエクスポートした情報ではなく、これをChatGPTでもわかるように咀嚼したドキュメントを生成して、それを読み込ませるといいかも。

なんにしても、今回はうまくできなかったものの、そのうちサービスとして出てくると思う。（設定＞パーソナライズ以上に）自分用にカスタマイズされた第二の脳として、ほしい。
将来的には、過去の傾向を覚えた上でパソコンの画面を監視して、人間がやりたいこととかやろうとしていることを先読みして調べ、聞かれたらさっと答えるような感じでしょうかね。未来感があります。

というわけで今のところは、:moyai:純粋無垢なChatGPTさんとよきおつきあいを！

（いい方法あったら是非教えてもらいたい:pray:）