清水理史の「イニシャルB」

ChatGPTの「Code Interpreter」は、Pythonのコード生成だけでなく設計・実行・結果の評価までしてくれる驚異の新機能

筆者「このデータだけ取り出してJSONにしたいんだけど」 ChatGPT「ほらよ!」

Code Interpreterによってコードを生成し、実行できるようになった

 ChatGPTに、新機能となる「Code Interpreter」が追加された。現状は有料プラン「ChatGPT Plus」のユーザーのみが使えるGPT-4のプラグインとして提供されるため、誰もが利用できるわけではないが、その威力は驚異的だ。

 データ分析でも、データ変換でも、Pythonで可能なことはだいたい何でもやってくれるスグレモノで、ユーザーは当然ながらコードを書く必要がなく、「こういうことをしたいんだけど……」と日本語で指示するだけでいい。今回は、データ分析とデータ加工の2つの実例を紹介する。

Code Interpreterとは

 ChatGPTの新機能となるCode Interpreterは、一口で説明すれば、ChatGPT内で実装されたPythonの実行環境だ。

 同社が3月に公開したブログで登場が予告されていたが、7月上旬からGPT-4のプラグインとして実装が開始され、有効化できるようになった。

設定画面の[Beta features]でオンにする

 ChatGPTは、自然言語による指示からPythonなどのコードを簡単に生成できることで知られているが、これまでは、単にコードブロックとしてコードを表示することしかできなかった。

 これに対して、Code Interpreterでは、コードを自動的に生成するだけでなく、それを実行し、その結果を受けてユーザーに対してフィードバックすることができる。そもそも、コードの生成を明確に要求する必要もなく、「〇〇を計算して」や「このファイルを分析して」のように、あいまいな指示をするだけで、コードが必要かどうかを自動的に判断して“よろしく”やってくれる。

 例えるなら、データサイエンティストの友人に「このデータから〇〇を知りたいんだけど……」と言ったり、プログラマーの友だちに「このデータだけ取り出してJSONにしたいんだけど……」とお願いしたところ、「ふむふむ。これならこうやって、こうで、こう」と、ササッと結果のファイルが送られてくるような印象だ。

 同様の機能は、ChatGPTのプラグイン「Noteable」でも実現可能で、過去にこちらの記事で簡単な使い方を紹介したが、ChatGPTだけで、ほぼ同じことができると言っていい。

実例1:教育用標準データセットから「子育てしやすい都道府県」を分析する

 まずは、データ分析からやってみよう。例として、独立行政法人統計センターで公開されている「SSDSE(教育用標準データセット)」のうち、簡易版の基本素材(SSDSE-E 2023)を使って検証してみた。

▼SSDSE-Eのダウンロード
SSDSE(教育用標準データセット)

 このデータには、総務省統計局「統計でみる都道府県のすがた(社会・人口統計体系)2023」から抜粋された都道府県ごとのデータがまとめられている。具体的には、人口、事業者数、医療従事者数、幼稚園数、住宅数など、90項目にもおよぶデータが収録されている。

指示

 指示は簡単で、ダウンロードした「SSDSE-E」のExcelファイルをChatGPTのチャット欄にドラッグしてファイルをアップロードする。この状態で、次のようなプロンプトで指示をする。

「子育てのしやすい都道府県はどこだと考えられますか? 理由とデータも示してください。」

Excelファイルをアップロードし、「子育てのしやすい都道府県はどこだと考えられますか? 理由とデータも示してください。」とプロンプトを入力した

データの読み込みと理解

 ChatGPTは、ファイルとプロンプトを受け取ると、まずデータを読み込んで内容を確認する。具体的には、以下の画面のようなコードが実行される。このように、Code Interpreterでは、必要に応じて、コードの生成と実行が自動的に行われ、その結果が回答となるのが特徴だ。

まずはExcelファイルのデータを読み込むコードが生成・実行され、データが読み込まれる

分析方法の提案

 続いて、分析方法が提案される。この表には90項目のデータが含まれているが、ChatGPTは、「子育てがしやすい」かどうかを判断する指標として「医療施設のアクセス性」「教育機会」「生活費」「保育施設の利用状況」の4項目を挙げている。

 もちろん、こちらから項目を指定したり、追加したりすることも可能だが、今回は全ておまかせにした。

読み込んだデータから、プロンプトに回答するための分析方法(評価する項目)と理由が示され、

データの抽出と計算

 上記の提案をもとに、実際に表からデータが抽出される。それぞれの値をピックアップした理由も述べられるほか、保育所等数などは絶対数ではなく、都道府県の人口を考慮した割合として計算されている。

データを抽出し、評価するためのコードが生成・実行される

ランキングの表示

 最終的な結果としてランキングが表示される。それぞれのパラメーターの順位や理由なども述べられている。

子育てしやすい都道府県がランキング形式で表示された。1位は東京都。以下5位まで、理由とデータとともに示されている

 このように、データとやりたいことを伝えれば、自動的にデータ分析が完了する。正直、ユーザーがもとの表を一度も見ていなかったとしても、それなりの分析ができてしまうことが恐ろしい。

 しかしながら、思考の過程を追いながら、どのような指標をピックアップすべきか、それぞれの値をどのように計算すべきか(コードで確認可能)といったことを、ユーザーも学ぶことができるのは大きい。

実例2:学習用データから必要な項目のみを取り出してJSONで保存する

 続いて、ファイルの加工の例を見てみよう。題材として利用するには、以下の「AI王 公式配布データセット」というクイズデータだ。

▼「AI王 公式配布データセット」のダウンロード
AI王 ~クイズAI日本一決定戦~

 オープンソースの大規模言語モデル(LLM)をクイズ形式の回答に最適化させるファインチューニングのためにこのデータを利用したいが、もとのデータは行単位のJSONL形式となっているほか、学習に必要のないデータも含まれている。

 こうしたデータは、Pythonを使って整形するのが一般的だが、今回は全てChatGPTのCode Interpreterに代行してもらう。

 ただし、ベースとなるデータが数が多いため、ここでは数題のみをピックアップした簡易データを利用する。

「AI王 公式配布データセット」から数題のみピックアップした簡易データを用意した

指示

 先の例と同様にファイルをアップロードしたあと、以下のように箇条書きで2つのプロンプトを入力した。元データには「qid」や「answers」として複数回答の正解例が配列で格納されているが、ここではファインチューニングに必要となるクイズの問題文と答えの2項目のみを取り出すことにする。

・各データから”original_qustion”と”original_answer”だけを取り出してください
・単一のJSON配列に変換してください

ファイルをアップロードし、2つの指示をした。この指示の意味は以降の画面でChatGPTから説明されるが、元の問題文と答えを取り出し、JSON配列に変換してほしい、ということになる

ファイルの読み込みと確認

 実行すると、ファイルが読み込まれ、データの構造が分析されて表示される。取り出したい値は、「original_question」と「original_answer」の2つの値だ。

アップロードしたファイルの内容が分析され、説明される

データの取り出し

 データを取り出すコードが実行され、その結果、1つのJSON配列に格納された。

指示された作業を行うためのコードと、実行結果が表示されていく

ファイルへの保存

 データが出力されたが、ファイルに保存する指示を忘れていた。追加で「ファイルに保存して」と依頼すると、ファイルをダウンロードするためのリンクが表示される。

JSON配列に変換した内容が表示されたところで、「この配列をファイルとして保存する、または何か他の操作を行いたい場合は、お知らせください。」と表示され、ファイルに保存する指示を忘れていたことに気づいた

 これまでは、こうした作業をChatGPTで実行する場合、コードの生成のみを依頼し、実行環境は別途用意する必要があったが、それも必要なくなってしまった。正規表現を使って文字列を置換するなどといったことも簡単にできるので、なかなか便利だ。

活用しながら学べることが素晴らしい

 以上、ChatGPTの新機能「Code Interpreter」を実際に試してみた。今回の例のようにデータやファイルを渡して、やりたいことを指示すれば、Pythonでできることは、大抵実現できる。

 残念ながら、現状はCode Interpreterとウェブ検索を組み合わせることができないので、外部の情報を取り込むことができないが、遠からず、ウェブから情報をスクレイプしたり、API経由でデータを取得したりできるようになることも期待できるだろう。

 こうした機能によって、人間は楽ができるようになるわけだが、個人的には、楽をするというより、どうすればいいのか分からなかったことを、目の前で実際にやって示してくれる(しかも解説付き)点が素晴らしいと感じた。

 単なる「お任せでやってくれる作業者」というよりは「インタラクティブな教科書、身近な先生」というイメージで、遠慮なく、「じゃあ、これは?」「このデータも使ってみて」と質問や指示をして、いろいろ試せるのが楽しかった。そして「なるほど、そうやって分析するのか」と、新しい発見ができるメリットが大きいと感じた。

 賛否両論ありそうな機能だが、個人的には、ぜひ使ってみることをおすすめする。

清水 理史

製品レビューなど幅広く執筆しているが、実際に大手企業でネットワーク管理者をしていたこともあり、Windowsのネットワーク全般が得意ジャンル。最新刊「できるWindows 11」ほか多数の著書がある。