動画はこちら。
1. Open Interpreterとは
これを説明する前に、まずCode Interprerterの説明をさせていただきます。
Code Interpreterとは
(現在はAdvanced Data Analysis)
ChatGPTの有償サービス「ChatGPT Plus」の機能です。自然言語で指示を出すと、プログラムに変換して実行してくれるツールです。
実際にCode Interpreterの実行画面を説明します。
例えば、以下のようにスプレッドシートと一緒に「どんなデータか読み取って説明して」と言うと、
以下のように概要を説明してくれます。
そして、Code Interpreterは、Pythonを実行することもできます。この機能を使ってローカルでも動かせるようにするOpen Interpreterについても説明していきます!
Open Interpreterとは
Open Interpreterとは先ほど説明したCode Interpreterを、Chat-GPTの画面上でなくてもローカルで動かすことができるツールになります。
使い方は、
- Open Interpreterをインストール
- Pythonまたは、コマンドで起動
- 自然言語で指示
の流れになります。この流れを後半では実践を交えて説明していきます。
ここまでのまとめ
以下の図が全体像になります。ローカル環境でもAPIキーを取得しておけばPythonをつかってChat-GPTを扱うことができます。
たまにではありますが、Chat-GPTも間違ったコードを生成し、エラーになる場合もございます。その場合もまた、コードの生成と実行の命令を繰り返して行ってい区必要があります。
Code InterpreterとOpen Interpreterを以下のようにまとめたのが次の図です。
2. Open Interpreterを使うステップ
まずはOpen interpreterをインストールします。さらに自分のAPIキーを入力します。
!pip install open-interpreter
export OPENAI_API_KEY=your_api_key
あとは以下のコマンドを実行してやりとりしていくことになります。
interpreter.chat()
3. 【実践】Open Interpreterを使ったデータ解析
私がデータ解析の会社を運営、さらに広告代理店で勤務していた経験があるせいか、データ解析において、最も活用できると感じています。実際には以下のことに役立てています。
- 必要なPythonパッケージのインストール
- データのカラム名を解釈
- データの集計
- データの可視化
- 簡易レポート
実際にどう役立てているから、実例を使って説明させていただきます!
前準備
今回データ解析をするにあたり、以下3つの準備が必要になります。
- 扱うデータ
- どのような背景、手順をまとめたプロンプト
- アシスタント動作を設定するsystem message
①扱うデータ
今回は「Twitterの表示回数・いいね数」のデータを扱ってOpen Interpreterを動かしていこうと思います。
②データ分析を依頼するプロンプト
以下のようにハッシュタグやアスタリスクを用いてまとめます。
③system message
こちらは、回答の精度をあげる重要な役割があります。
我々「ユーザー」がChatGPTの「アシスタント」に質問して回答を得る際に、そのアシスタントの性格や会話中の振る舞いについて指示することができます。
実際にこれが書かれている「config.yaml」が以下の通りです。
最初の方には「あなたはどんな目標も達成できる世界一流のプログラマー」などと書かれています。
実践
それでは実践していきます。「interpreter.chat()」を実行し、プロンプトを入力します。
入力が終わり、再び実行すると以下のように返ってきます。
以下の画像は「インプレッションの数」を集計してくれました。Chat-GPTも「インプレッション」というのが「表示回数」だということがわかっていますね。
17番目のツイートがもっとも多く見られたということがわかります。(画像にはありませんが、いいねの数もしっかり集計してくれています。)
他にも時間帯についてにまとめてくれていたり、グラフにもしてくれています。
そして、最後に簡易レポートを作成するよう命令しているので、それが出力されました。
また、17,2,19のツイートがなぜ多かったのかなど、追加で質問がある場合も入力すれば続けて分析をおこなっていくことが可能です!
以上のようにデータの集計、解析、可視化を難なく行うことができました!
その他Open Interpreterでできること
その他、できること(できないことや微妙なもの)を紹介していきます。
ローカルPCの操作(評価△)
簡単な操作(例:ライトモードからダークモードに変えて!)なら文章でPCを操ることは十分できます。ただし、インターネットから画像を拾ってきて、壁紙を変えるなど、複雑な操作になると、失敗することが多いです。(※ウェブ上からデータをダウンロードするとき、JavaScriptで制御されているような動的な画像を選んでしまうと、失敗することを報告してきたりします。)
スクレイピング(評価×)
実際、スクレイピングに必要な諸々のパッケージはインストールしてくれます。しかし、URLを指定しただけの指示だけでは、Chat-GPTは何を取ってきたら良いか理解させるために一度、こちらでclassを見てきてあげる必要があります。(☆しかし、それさえ見つけてあげれば問題なく、実行してもらえます。)
その後のデータ整理は、正規化コードをゴリゴリ書いていくのは苦手そうです。今の時代ならデータの正規化をGPT4にやらせてしまうとかはアリだと思います。
資料作成(評価×)
必要なパッケージをインストールして進めてくれるので、普段プログラムを書かない人も安心です。プロンプトをしっかり書いても指示通り動いてくれないことがあります。そのため、何度もやりとりすることで、指示通りに動かすことができる可能性は上げていく。
また、長い指示だとトークン数の上限に達しているのか、ずっと実行中で止まってしまう。
python-pptxのパッケージでアウトラインをスライドにしてくれることはメリット☆
SEOの一部業務(評価△)
自分の書いた記事が検索順位で何番にあるかのチェックは問題なくできます。
通常だとシークレットウィンドウを立ち上げて、キーワードを入れて、検索順位を見る必要があるが、大量のサイトだと非常に面倒だと思います。
Open Interpreterでキーワードを入れて指示を出すことで難なく順位を取得することができます。
このように、シンプルな業務についてはで自動化が十分可能です。
Open Interpreterでコードの解釈
コードの解釈を行うためにはこちらのCodeBaseBuddy(https://github.com/Raghavan1988/CodeBaseBuddy/)というプロジェクトを利用していきます。
こちらを使うとコードを検索可能な状態に変換して、こちらの指示(どのファイルを更新すべきか等)通りにOpen Interpreterに解釈をしてもらうことができます。
まずは、このCodeBaseBuddyの紹介をさせていただきます!
Code Base Buddy
CodeBaseBuddyで行われていること
プロジェクトの構造とファイルを分析する(要はコードを解釈する)ために、それらをEmbeddingして、ベクトルインデックスへ変換します。
テキストや画像などの複雑なデータを、コンピュータが理解しやすい形式(通常は数値のベクター)に変換するプロセスです。
この変換により、データの重要な特徴や関係性が数値ベクターにエンコードされます。
この状態になることで、ユーザーが質問すれば、具体的な回答を出力してくれます!
(ex.どのファイルを修正すべきか、どのように変更すべきか)
CodeBaseBuddy:build_embeddings.pyの処理について
プロジェクトにあるbuild_embeddings.pyが実際にEmbeding処理を行っております。
下の画像をご覧ください
この中央にあるAdaというものがembeddingを行なっており、このベクトル化したものをAnnoyというベクターストアに入れていきます。
Pythonで使用されるライブラリの一つで、近似最近傍探索(Approximate Nearest Neighbor Search)を高速に行うことができます。
CodeBaseBuddy:search.pyの処理
ユーザーの質問があった場合、その質問から最も類似度の高いファイルをベクターストアから出力してきます。(下の画像をご覧ください。)
build_embeddings.pyの画像中央にある「Ada」というもののおかげで、テキストだったりコードの意味的な特徴をとらえることができるので、ユーザーからの質問(どこを修正するか)に答えることができています。
CodeBaseBuddyを使うまでのステップ
①githubからクローンします。↓
!git clone [email protected]:Raghavan1988/CodeBaseBuddy.git
②モジュールをインストールします。
!pip install -r requirements.txt
③Open AiのAPIキーを入力します。(YOUR_API_KEYの箇所に自分のOpenAIのAPIキーを入力してください。)
export OPENAI_API_KEY=YOUR_API_KEY
④自分の見たいプロジェクトを選択して、build_embeddings.pyでベクトル化します。
※下記では「open-iterpreterの中にあるinterpreterの中身」を選択しています。
!python build_embeddings.py open-interpreter/interpreter
⑤下のものは「どのファイルを変更し、どのように新機能のサポートを追加すべきか」というのをChat-GPTに聞いています。
!python search.py "which files should i change and how should i add support to new features" 5 open-interpreter
実際に実行してみると以下のような出力が得られました。
字が小さくて見づらいかもしれませんが、5つ(命令時に5個と言ったので)の提案策をもらうことができました!
出力で翻訳したものをまとめたのが以下になります。
このように全く知らないプロジェクトに対してもOpenInterpreterを介することで、ここを機能したら良いのではと提案してくれるものです!
ChatGPT・Open Interpreterが作る未来
今までの自然言語解析は、下の画像のように形態素解析をして、重要品詞に絞った後に、単語の数を数えてベクトル化していた。
今までは単語だけで検索をかけ調べていたものが、Chat-GPTにより、単語の位置関係から意味を見出せるようになり、文章で操れるようになりました。
最近では「ai pin」という自然言語で操るプロダクトも出来ています!
元Appleの人がこれを服につけ、スマホがわりになっております。自分の発言で通話や情報提供kレンダーの予定管理等行なっております。
残念なことにメディアからはあまり指示されていないようです。
しかし、今まではコードで実行したりGUIで操作するというUI自体が変わるのでは!?と感じさせてくれるプロジェクトだと思い、紹介させていただきました。
勉強会を開催しています!
上記の画像は先日(11/25)に開催した勉強会になります!このような勉強会を頻繁に開催しております!ぜひ、ご参加ください!(こちらの記事も勉強会で発表した内容を元にまとめております。)
最後までお読みいただき、ありがとうございました。