Code Interpreter APIで自然言語グラフを生成してみた

Code Interpreter APIで自然言語グラフを生成してみた

Ranola Joshuel

Ranola Joshuel

Technology部のJoshです。

当記事では、「Code Interpreter API」の使い方を紹介します。このAPIは、LangChainのプラットフォーム上で動作するコードを解釈し、実行するためのものです。

サンプルとして、グラフを生成してみました。

Code Interpreter APIとは

このAPIを使用すると、LangChain上で自分のコードを簡単にテストし、実行することができます。また、このAPIはLangChainの他のAPIと組み合わせて使用することで、さまざまなタスクを自動化することができます。

グラフ生成機能を構築

ChatGPTとCode Interpreter APIを使用して、与えられたデータセットを分析し、自然言語グラフを生成します。

アプリケーション仕様

今回開発するアプリケーション仕様は以下のとおりです。

Host ローカルホスト(MacOS Ventura 13.4.1)
プログラミング言語 Python(ver3.10)
仕様 Code Interpreter APIでグラフを生成するコードを構築

ライブラリ

このライブラリは、codeinterpreterapi関数を使用するために必要です。

Terminal
!pip install "codeinterpreterapi[all]"

コード実装

実装したコードは私のColabにも掲載していますが、ここでは一つひとつのコードについて解説します。

※解説するコードの詳細はこちら

1.ライブラリのインポート

これらのインポート文を使用すると、データ分析やプロットの生成をおこなうために必要なクラスやメソッドを利用することができます。

Python
# coding: shift_jis
import os
from codeinterpreterapi import CodeInterpreterSession, File

 
インポートするパッケージの詳細は以下のとおりです。

# coding: shift_jis:Pythonのソースコードファイルでエンコーディングを宣言するために使用される特別なコメントです。これはファイルがShift JISエンコーディングでエンコードされていることを示します。Shift JISエンコーディングは、日本語のテキストを表すために使用される文字コードです。

os:オペレーティングシステムと対話する方法を提供します。ファイルやディレクトリにアクセスしたり、パスを操作したり、システムコマンドを実行したりといったタスクを実行できます。

CodeInterpreterSession:Code Interpreter APIのセッションを作成するためのクラスです。このセッションを使用することで、コードの実行や結果の生成が可能になります。

File:Code Interpreter APIに渡すためのファイルを表すクラスです。このクラスを使用して、データセットやその他のファイルをコードに渡すことができます。

2.API キーとサービスのセットアップ

このコードはOpenAI APIキーを設定し、VERBOSEをTrueに設定するためのものです。具体的には、os.environを使用して、環境変数OPENAI_API_KEYとVERBOSEを設定しています。OPENAI_API_KEYには、OpenAI APIのキーを入力する必要があります。

Python
os.environ["OPENAI_API_KEY"] = "xxxxxx"
os.environ["VERBOSE"] = "True"

3.セッションの開始

この行では、非同期的にCode Interpreter Sessionを開始しています。これはユーザーのリクエストを解釈し、適切なレスポンスを生成するためのものです。

Python
async with CodeInterpreterSession() as session:

4.ユーザーリクエストの定義

この行では、ユーザーからのリクエストを定義します。データセットを分析し、その結果をプロットするようにAIに指示しています。

Python
user_request = "このデータセットを分析し、それについて面白いことをプロットして下さい。 "

5.ファイルの指定

Python
files = [ File.from_path("movie_data.csv"), ]

 
続いて、分析するデータセットのファイルを指定しましょう。この例では movie_data.csv という名前のファイルを使用しています。

movie_data.csv
"Rank","Movie Title","Score"
"1","The Last Duel","98%"
"2","The French Dispatch","90%"
"3","Dune","87%"
"4","No Time to Die","85%"
"5","The Green Knight","84%"
"6","The Power of the Dog","79%"
"7","The Tragedy of Macbeth","65%"
"8","West Side Story","62%"
"9","Licorice Pizza","60%"
"10","The Matrix Resurrections","59%"

6.レスポンスの生成

先ほど定義したユーザーリクエストとファイルを使用して、レスポンスを非同期的に生成します。

Python
response = await session.generate_response(user_request, files=files)

7.レスポンスの表示

ファイル含め、生成されたレスポンスの内容を表示します。

Python
print("AI: ", response.content)
for file in response.files:
    file.show_image()

8.テスト

動的にグラフを生成し、データセット間の差分スコアを直感的に比較できるようにしました。このプロットは、CodeInterpreterによって自動的にレンダリングされます。

まとめ

Code Interpreter APIは、ChatGPT Code Interpreterのオープンソース実装を提供するプロジェクトであり、LangChain Agentsを使用して実装されます。しかしこのAPIは、インターネットから情報を取得する機能を持っておらず、最新のデータを取得してユーザーに表示することはできません。

一方、与えられた指示やデータをPythonコードに解釈して実行できるため、データ分析や可視化といった多くのタスクが可能です。Pythonコードの生成と実行にはユーザーのハードウェアを使用できるため、専用のGPUを持っている場合、高速に処理できます。

このAPIの開発は進行中であり、将来的にはさらに多くの機能が追加される予定です。ぜひお試しください。

 

また、LIGでは生成AIコンサルティング事業をおこなっています。ぜひ気軽にご相談ください。

生成AIコンサルティング事業の詳細へ

最新情報をメルマガでお届けします!

LIGブログではAIやアプリ・システム開発など、テクノロジーに関するお役立ち記事をお届けするメルマガを配信しています。

<お届けするテーマ>
  • 開発プロジェクトを円滑に進めるためのTIPS
  • エンジニアの生産性が上がった取り組み事例
  • 現場メンバーが生成AIを使ってみた
  • 開発ツールの使い方や開発事例の解説
  • AIをテーマにしたセミナーの案内
  • 最新のAI関連ニュースまとめ など

「AIに関する最新情報を集めたい!」「開発ツールの解説や現場の取り組みを知りたい!」とお考えの方は、ぜひお気軽に無料のメルマガをご購読くださいませ。

購読する(無料)

この記事のシェア数

Ranola Joshuel
Ranola Joshuel DX / Application Development / Technical Director / ラノーラ ジョシュエル

ITプロフェッショナル/テクニカルディレクターとしてOpenAIを使用したサービスの実装に関する研究や実験に従事。JS、PHP、Python、Vue、Next、Reactの言語やフレームワークに関して深い知識を所有する。また、海外のエンジニアとのコミュニケーションをブリッジエンジニアとしても、通訳を含む各種を対応しています。プログラミングへの情熱は高校時代からあり、大学でコンピュータサイエンスの学位を取得後、エンジニアとして日本のIT系企業に就職。4年間フルスタックエンジニアに従事し、2023年LIGにジョイン。

このメンバーの記事をもっと読む
10年以上の開発実績があるLIGが、最適な開発体制や見積もりをご提案します
相談する サービス概要を見る