0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Posted at

はじめに

問題提起

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

具体的には、

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

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

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

解決方法の概要

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

方法

1. 過去の会話を全部エクスポート

設定>データ コントロール>データをエクスポートするで、全カンバセーションの全会話を得られます。

image.png

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

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

2. Pythonで分解

Pythonでjsonを別々のファイルにする処理を作成。
いうほどのコードじゃないけどいちおう貼っておきます。

# 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以下の話題なの?ロングテールすぎるでしょ
  • ソートする気は回らない(指示しないほうが悪いか)

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

4. 全部学習した結果の利用 → 現実的に×

とにもかくにも、私のチャット履歴を全部覚えたカンバセーションを使ってみます。

会話は成り立たない

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

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

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

分析も断念

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

ということで断念。

結論、おわりに

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

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

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

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

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

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?