OpenAI Assistants APIとRetrievalを使ってChatGPTとの会話記録を要約する


## はじめに
OpenAI Assistants APIとRetrievalを使ってChatGPTとの会話記録を要約する方法について紹介します。
題材として、「ChatGPT日記」を用います。

**ChatGPT日記とは**

ChatGPT相手に日記を書くという私の習慣のことです^^;

https://twitter.com/AInebosuke/status/1698354309833113891


ChatGPT日記を続けていて、**日記が長くなると後で見返すことが難しい**という課題に直面しました。
そこで、本記事では、OpenAI Assistants APIとRetrievalを使って日記の中身に詳しいChatGPTをつくります。つまり、めっちゃ簡単なRAG(Retrieval Augmented Generation)です。


## ステップ①：ChatGPT日記をテキストに変換

まず、ChatGPT日記をテキストに変換します。ChatGPTとの会話記録をテキストに変換する方法は色々ありますが、下記の記事を参考にしました。

https://hisa334.com/337



<details><summary>ChatGPT日記をテキスト化したもの</summary><div>

```
You:


ChatGPTさんと日記を書きたいです！コーチングしてください！
------------------
You:


もちろん、日記を書くのをお手伝いします！日記を書くことは、自分の思いや経験を整理する素晴らしい方法です。日記を書く際には、以下のステップに従ってみてください。

日付と場所を記入する：
最初に、日記の上部に日付と場所を記入します。これにより、後で日記を読み返した時に、いつどこで書いたのかを思い出すのに役立ちます。

感じたこと、経験したことを自由に書く：
その日にあった出来事や、感じた感情、考えたことなどを自由に書きます。特に形式はありませんので、自分の思いのままに書いてみてください。

具体的な出来事や詳細を振り返る：
特定の出来事や、詳細な記述も大切です。何を見た、聞いた、感じたかを具体的に書くことで、より豊かな記録になります。

感謝や学びを記録する：
その日に感謝したこと、学んだこと、気付いたことがあれば、それも記録してみてください。ポジティブなことだけでなく、困難や挑戦についても書くと良いでしょう。

次の日への意気込みや目標を記す：
次の日に向けての意気込みや目標を書くことで、自己モチベーションを高めることができます。

これらのステップは一つのガイドラインに過ぎません。日記はあなたの個人的なスペースなので、自由に、自分のスタイルで書いてみてください。それでは、どんな日記を書きたいですか？具体的なトピックやご相談があれば、どんなことでもサポートしますよ！
------------------
You:


2023年11月27日
OpenAIのAssistants APIの記事を書きます。
活用アイデア①：データ分析の補助としてCode interpreter機能を用いる。ただし、それだと普通にChatGPTのCode interpreterを使うのとあまり変わらなそう。
活用アイデア②：日記をテキストとして読み込ませ、Retrievalでいつでも参照できるようにする。
------------------
ChatGPT:


2023年11月27日の日記：

今日は、OpenAIのAssistants APIについての記事を書き始めました。このAPIは、様々な用途に応じてカスタマイズされたAIアシスタントを提供するものです。記事を書くにあたって、いくつかの活用アイデアを考えてみました。

活用アイデア①：データ分析の補助

アイデアの概要：
Code interpreter機能を使って、データ分析のプロセスをサポートする。この機能を用いることで、データの処理や解析のためのコードを提案してもらったり、データ分析に関するアドバイスを受けることができます。

懸念点：
ただし、この使用方法は、通常のChatGPTのCode interpreter機能を使用するのと大差ない可能性があります。Assistants APIの特徴をもっと活かせる方法を考える必要があるかもしれません。

活用アイデア②：日記の記録と参照

アイデアの概要：
日記をテキストとして読み込ませ、Retrieval機能を利用して、過去の日記を簡単に参照できるようにする。これにより、日々の記録を効率的に管理し、特定の日付やトピックに関連する記録をすぐに見つけることが可能になります。

利点：
この方法ならば、日々の記録や思考の整理に役立ち、時間の経過に伴う変化や成長を振り返るのにも有効です。また、Assistants APIのカスタマイズ可能な特性を活かして、ユーザー個々のニーズに合わせた日記の参照システムを構築できます。

これらのアイデアをさらに深堀りし、記事にどのように組み込むかを考えていきたいと思います。特に、Assistants APIの独自性を活かした使い方を模索するのが重要だと感じています。また、他にも創造的な活用方法があれば、それを探求してみるのも良いでしょう。
------------------

```

</div></details>


## ステップ②：Assistants APIの準備

**Assistants APIとは**
Assistants APIとは、Code interpreterやRAGなどをAPIで使えるようにした新機能です。
詳細は、下記をご参照ください。

https://www.itmedia.co.jp/news/articles/2311/07/news077.html

https://platform.openai.com/docs/assistants/overview

下記のPlaygroundを用いることで、Assistants APIで簡単に遊ぶことができます。

https://platform.openai.com/playground

ステップ①で保存したtxtをアップロードし、`Retrieval`をオンにします。
※`Name`, `Instructions`, `Model`などの設定はなんでも大丈夫です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627015/438cc19d-6bdb-366b-1f3d-a964d26c36d5.png)




## ステップ③：ChatGPTとの会話記録を要約する

あとは普通のChatGPTのように、チャットでお願いすることができます。

それでは、要約をやってみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627015/d317f511-cf23-8841-a767-fcf2b69eadd8.png)

続いて、ピンポイントで質問してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627015/4d8de474-6727-552b-5709-699d726b6f1f.png)

以上のように要約や質問などに対して、アップロードしたChatGPT日記のテキストデータを元に回答してくれるようになりました。



:::note warn

「OpenAI」「API」という単語の登場回数を質問してみました。正解は、それぞれ2回、6回です。
しかしながら、ChatGPTの解答はそれぞれ2回、3回でした、、、
何らかの計算を用いている訳では無いので、ハルシネーションの可能性は常につきまといます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627015/6202330e-6dc1-d97c-3a20-b1652f1dc842.png)

:::



## 参考にしたもの

https://qiita.com/t_serizawa/items/a2ced4441da714b3076f

https://qiita.com/sh237/items/16bc73dee21a9666ba0a

https://note.com/npaka/n/n7d71310b66de

https://developer.mamezou-tech.com/blogs/2023/11/08/openai-assistants-api-intro/

https://dev.classmethod.jp/articles/4e7a92449ab74724778e8da65fa0006bdabbe660/

https://github.com/admineral/OpenAI-Assistant-API-Chat