본문

Tech
ChatGPTが知らないことをChatGPTに聞いてみる

작성일 2024.06.25
ChatGPTが知らないことをChatGPTに聞いてみる

 

私たちは日常でChatGPTに問いかけますが、時にChatGPTが知らない情報について質問しなければならない場合があります。こんなとき、OpenAI Embeddingsを活用すると、非公開資料についてもChatGPTに尋ねることができます。

 

特に、参考資料の量が膨大でChatGPTに入力できない場合に役立ちます。この文章は、ローカルディスクに保存されたプロジェクトフォルダのソースファイルを利用したその過程についての説明です。車を運転するのにエンジンの原理を詳しく知る必要がないように、複雑な技術的詳細は省いて、実際に適用する方法に集中したいと思います。

 

準備する

まず、必要なツールを準備しましょう。

  • Python 3バージョンがインストールされている必要があります。
  • 必要なライブラリをインストールします。コマンドプロンプト(またはターミナル)を開いて以下のコマンドを入力してください。

pip install requests numpy nltk

  • OpenAIのウェブサイト(https://openai.com/)でAPIキーを取得してください。

 

ソースコードを準備する

GitHubから必要なコードを持ってきて使用したいと思います。 https://github.com/ryujt/openai-embeddingsでコードをダウンロードしてください。

ダウンロードしたフォルダには、以下のようなPythonファイルが入っています:

  • emb_save.py: このファイルは、ソースコードをChatGPTが理解できる形式に変換します。
  • emb_ask.py: このファイルは、質問を入力すると関連するソースコードを探して、ChatGPTに送って回答を受け取ります。

ソースコードを変換する

まず、emb_save.pyファイルを開いて、幾つか設定を変更する必要があります。

  • API_KEY: ここにOpenAIから取得したAPIキーを入力してください。
  • FOLDER_PATH: 分析したいソースコードがあるフォルダパスを指定してください。
  • EXTENSIONS: 分析するファイルの拡張子を指定してください。例えば、['.py'、'.java'、'.cpp']などに設定できます。

設定を完了したら、コマンドプロンプトで以下のコマンドを実行してください。

python emb_save.py

この過程が終了すると、embeddings.jsonlというファイルが作成されます。

このファイルは、ソースコードがChatGPTが理解できる形式に変換され保存されています。

 

ChatGPTに質問する

次に、emb_ask.pyファイルを開いて

  • API_KEYを設定してください。
  • user_inputの変数に質問を入力します。
    • 例えば、「プロジェクトでデータベース接続はどのように処理されますか?」などについて質問できます。

そして、以下のコマンドを実行します。

 

python emb_ask.py

質問に対する回答は、response.mdファイルに保存されます。

このファイルを開くとChatGPTの回答を確認できます。

 

結果画面

下の画像は、結果内容の一部をキャプチャしたものです。

とても詳細なレポートがマークダウン形式で保存されているのが分かります。

 

注意点

  • APIキーはパスワードのようなものです。絶対に他人と共有したり公開保存スペースにアップロードしないでください。
  • OpenAI APIを使用するにあたって、費用が発生する場合があります。使用量を注意深くモニタリングしてください。
  • 大規模プロジェクトの場合、処理時間が長くなる場合があります。気長にお待ちください。
  • テキストをベクターに変更するモデルとして、text-embedding-3-largeを使用しています。
    • 以前のモデルよりかなり改善されましたが、未だに韓国語より英語をスムーズに認識する傾向があります。参考資料となる入力と質問に英語を使用すると、より上質な結果を得られます。

 

原理説明

このシステムの作動原理を簡単に説明すると、以下のとおりです:

  1. テキストエンベディング:
  • ソースコードや文書をベクタ(数次の配列)に変換します。
  • AIが理解し易い形式に資料を変換する作業だとお考えください。
  • この過程は、'emb_save.py’で実行されます。

  1. 類似性検索:
  • ユーザーが質問を入力すると、その質問も同じようにベクタに変換されます。
  • 'emb_ask.py’は、この質問ベクタと最も類似するソースコードまたは文書部分を検索します。
  • 類似性は、一般的にコサイン類似度を使用して計算されます。

  1. コンテキストの構成:
  • 最も関連性の高いソースコードまたは文書部分を選択してユーザーの質問に貼り付けます。

  1. GPTクエリ:
  • 補強された質問をGPTモデルに送信します。
  • GPTは、受け取ったコンテキストをもとに質問に回答します。

 

0101.png

 

この過程を通じてGPTは、本来学習しない特定の情報に対しても、その脈絡を理解して回答できるようになります。これは、GPTに関連文書を提供して、その内容をもとに質問に答えさせるのと似ています。

 

ダイアグラムの上向き矢印のようにすぐに質問せず、下向き矢印のように参考になる情報が自動的に送信されるものとお考えください。この方式のメリットは、以下のとおりです:

  • 大量の文書またはコードを効率的に処理できます。
  • 必要な情報のみを選択して提供し、GPTのコンテキストの制限を克服できます。
  • ユーザーの質問と最も関連性の高い情報のみを提供するため、正確な回答を得られます。

ただし、この方式は、テキストエンベディングの品質と類似性検索の正確度に大きく依存するため、使用されるエンベディングモデルと類似性測定方法の選択が重要になります。

 

おわりに

この方法を使用すると、ChatGPTが本来知ることのない特定プロジェクトや文書についても質問することができます。これは、チーム内の文書検索、コード分析、プロジェクト理解など幅広い分野で活用できます。

ChatGPTの強力な言語理解能力と特定データを組み合わせることで、私たちはさらに効率的かつ正確な情報を得られるようになります。

WhaTap Monitoringを体験してみましょう。
難しかったモニタリングと分析が容易に実現できます。