Open Interpreterの実力は?GPT-4との連携で最新ニュース取得&ゲーム制作にチャレンジ!
この記事の内容
- Open Interpreterはローカルで動作するオープンソースのコードインタープリターです
- Code LlamaとGPT-4の2つのバックエンドを試し、セットアップ手順を紹介します
- GPT-4との連携でWebスクレイピングやニュース取得に挑戦した結果をレポートします
- Pythonのpygameを使ったテトリスクローンの自動生成にも挑戦しました
- 現時点での限界と可能性について率直にお伝えします
Open Interpreterとは
Open Interpreterは、OpenAIのChatGPTに搭載されているコードインタープリター機能をローカル環境で再現しようというオープンソースプロジェクトです。ChatGPTのコードインタープリターは、依頼した内容に対してコードを書き、それを実行して処理してくれます。Open Interpreterはその仕組みをローカルマシン上で動かせる点が特徴です。
インストールと起動
インストールはpipコマンド1行で完了します。
pip install open-interpreter
インストール後は以下のコマンドで起動します。
interpreter
起動すると「Welcome to Open Interpreter」と表示され、バックエンドの選択を求められます。
バックエンドの選択:Code LlamaかGPT-4か
Code Llama(無償)を試す
起動時にOpenAIのAPIキーを持っていない場合は、無償で利用できるCode Lamaを選択できます。ただし、Code LlamaはGPUのVRAMをある程度必要とするため、VRAMが少ない環境では動作しない場合があります。
今回の検証環境ではGPUのメモリが7.6GB程度しかなく、13Bモデルは動作しませんでした。Smallモデルを選択してCPU動作を試みましたが、ローカルのLLMインターフェースパッケージのビルドに失敗しました。
Dockerコンテナで試す
ローカル環境での問題を回避するため、GitHubで公開されているDockerイメージを利用する方法も試みました。
git clone <リポジトリURL>
cd open-interpreter-docker
docker build .
docker run ...
しかし、Dockerコンテナ内でもパッケージのビルドに失敗し、Code Lamaでの動作は断念しました。VRAMが十分な環境であれば問題なく動作するものと思われます。
GPT-4(有償)に切り替える
Code Lamaでの動作が難しかったため、OpenAIのAPIキーを使ってGPT-4バックエンドに切り替えました。APIキーはOpenAIのダッシュボードで発行・確認できます。
環境変数への設定は以下のように行います。
export OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
その後、再度 interpreter を起動するとGPT-4が有効になります。
デモ1:Yahoo! JapanのニュースをWebスクレイピング
GPT-4バックエンドで動作するようになったところで、最初のタスクとしてYahoo! Japanのトップページから主要ニュースのタイトルとリンクURLを取得するよう依頼しました。
Open InterpreterはGPT-4の力を借りながら、以下のような流れで自律的に処理を進めました。
- 必要なライブラリ(
requests、beautifulsoup4)が入っているか確認するコードを生成・実行 beautifulsoup4が未インストールであることを検出し、インストールを提案- ユーザーの承認を得てpipでインストール
import subprocess
subprocess.run(["pip", "install", "beautifulsoup4"])
- Yahoo! JapanのページにアクセスしHTMLを取得
- CSSセレクターを使ってニュース一覧を抽出
計画を立てて実行前に確認を求めてくれる点は非常に賢いと感じました。しかし、Yahoo! JapanのページはJavaScriptで動的に生成されるコンテンツが多く、静的なHTMLの解析だけではニュース一覧を正しく取得できませんでした。セレクターを何度か調整しても目的の要素を見つけられず、スクレイピングは完全成功には至りませんでした。
デモ2:GoogleでAI最新ニュースを検索して要約
続いて、「GoogleでAIの最新ニュースを検索し、上位の検索結果ページにアクセスして概要を1000文字程度で要約して表示する」というタスクを依頼しました。
Open Interpreterの対応は非常に論理的でした。
- まずGoogle検索結果はJavaScriptで動的生成されるため、
requestsでは取得できないと判断 - Seleniumなどのブラウザ自動化ツールの利用を検討
- インストール済みのブラウザ(Firefox、Chrome、Chromiumなど)を確認するコードを実行
- 最終的にニュース専用APIとして
newsapiライブラリを使う方針に切り替え newsapiをインストール
pip install newsapi-python
NewsAPIを使うにはAPIキーが別途必要なため、ここで処理が止まってしまいました。しかし、技術的な制約をきちんと把握しながら代替手段を自ら探して提案してくる振る舞いはGPT-4の賢さを感じさせるものでした。
デモ3:テトリスクローンをPythonで自動生成
最後に「Pythonで簡単なテトリスクローンを作成してください」とお願いしました。Open Interpreterは以下のステップを計画・実行しました。
pygameライブラリのインストール確認・インストール- テトリミノ(7種類)の形状を二次元配列で定義
- テトリミノの移動・回転・ライン消去・ゲームオーバー判定などのゲームロジックを実装
- グラフィックス描画・スコア表示・メインループの実装
テトリスの全7種のミノを把握していたり、ゲームループの構造を理解していたりと、知識量は十分でした。コードも一通り生成されて実行されましたが、最終的にはコンソール上に数字の羅列が表示される状態となり、期待したグラフィカルなゲーム画面にはなりませんでした。pygameとOpen Interpreterの実行環境の組み合わせに起因する問題と考えられます。
まとめ
今回の検証を通じて、Open Interpreterのコンセプトと可能性、そして現時点での限界が見えてきました。
良かった点
- 自然言語の指示からタスクを分解し、計画を立ててから実行してくれる
- 実行前に確認を求めるため、意図しない操作が起きにくい
- 不足しているライブラリを自動で検出・インストールしてくれる
- 技術的な制約にぶつかったときに代替手段を自ら考えて提示する
課題と限界
- Code LamaはVRAMに余裕がある環境でないと動作しない
- JavaScriptで動的生成されるWebページのスクレイピングは苦手
- 外部APIキーが必要な処理は途中で止まってしまう
- GUIアプリケーションの実行環境との相性に問題が出ることがある
GPT-4バックエンドを使うと費用がかかりますが、指示を的確に受け取りローカル環境を操作しながら自律的に動いてくれる体験は、チャットGPTに質問しながら自分で操作するよりも一歩進んだアシスタント感があります。指示の出し方を工夫し、より適切なタスクを与えることでさらなる可能性が広がりそうです。完全無償でローカル動作できる環境が整えば、さらに活用の幅が広がるでしょう。