Spaces:
Sleeping
A newer version of the Gradio SDK is available:
5.6.0
● Open Interpreter
自然言語で指示するだけでコードを書いて実行までしてくれる。
ローカルに実装したOpenAI Code Interpreterのオープンソース版。
デスクトップアプリへの早期アクセス | ドキュメント
Update: ● 0.1.12 アップデートで interpreter --vision
機能が導入されました。(ドキュメント)
pip install open-interpreter
interpreter
Open Interpreterは、言語モデルに指示し、コード(Python、Javascript、Shell など)をローカル環境で実行できるようにします。インストール後、$ interpreter
を実行するとターミナル経由で ChatGPT のようなインターフェースを介し、Open Interpreter とチャットができます。
これにより、自然言語のインターフェースを通して、パソコンの一般的な機能が操作できます。
- 写真、動画、PDF などの作成や編集
- Chrome ブラウザの制御とリサーチ作業
- 大規模なデータセットのプロット、クリーニング、分析
- 等々
⚠️ 注意: 実行する前にコードを承認するよう求められます。
デモ
Google Colab でも対話形式のデモを利用できます:
音声インターフェースの実装例 (Her からインスピレーションを得たもの):
クイックスタート
pip install open-interpreter
ターミナル
インストール後、interpreter
を実行するだけです:
interpreter
Python
from interpreter import interpreter
interpreter.chat("AAPLとMETAの株価グラフを描いてください") # コマンドを実行
interpreter.chat() # 対話形式のチャットを開始
ChatGPT の Code Interpreter との違い
GPT-4 で実装された OpenAI の Code Interpreter は、実世界のタスクを ChatGPT で操作できる素晴らしい機会を提供しています。
しかし、OpenAI のサービスはホスティングされていてるクローズドな環境で、かなり制限がされています:
- インターネットに接続できない。
- プリインストールされているパッケージが限られている。
- 最大アップロードは 100MB で、120 秒という実行時間の制限も。
- 生成されたファイルやリンクとともに状態がリセットされる。
Open Interpreter は、ローカル環境で操作することで、これらの制限を克服しています。インターネットにフルアクセスでき、時間やファイルサイズの制限を受けず、どんなパッケージやライブラリも利用できます。
Open Interpter は、GPT-4 Code Interpreter のパワーとローカル開発環境の柔軟性を組み合わせたものです。
コマンド
更新: アップデート(0.1.5)でストリーミング機能が導入されました:
message = "どのオペレーティングシステムを使用していますか?"
for chunk in interpreter.chat(message, display=False, stream=True):
print(chunk)
対話型チャット
ターミナルで対話形式のチャットを開始するには、コマンドラインから interpreter
を実行します。
interpreter
または、.py ファイルから interpreter.chat()
も利用できます。
interpreter.chat()
ストリーミングすることで chunk 毎に処理することも可能です:
message = "What operating system are we on?"
for chunk in interpreter.chat(message, display=False, stream=True):
print(chunk)
プログラム的なチャット
より精確な制御のために、メッセージを直接.chat(message)
に渡すことができます。
interpreter.chat("/videos フォルダにあるすべての動画に字幕を追加する。")
# ... ターミナルに出力をストリームし、タスクを完了 ...
interpreter.chat("ついでに、字幕を大きくできますか?")
# ...
新しいチャットを開始
プログラム的チャットで Open Interpreter は、会話の履歴を記憶しています。新しくやり直したい場合は、リセットすることができます:
interpreter.messages = []
チャットの保存と復元
interpreter.chat()
はメッセージのリストを返し, interpreter.messages = messages
のように使用することで会話を再開することが可能です:
messages = interpreter.chat("私の名前は田中です。") # 'messages'にメッセージを保存
interpreter.messages = [] # インタープリタをリセット("田中"は忘れられる)
interpreter.messages = messages # 'messages'からチャットを再開("田中"は記憶される)
システムメッセージのカスタマイズ
Open Interpreter のシステムメッセージを確認し、設定することで、機能を拡張したり、権限を変更したり、またはより多くのコンテキストを与えたりすることができます。
interpreter.system_message += """
シェルコマンドを '-y' フラグ付きで実行し、ユーザーが確認する必要がないようにする。
"""
print(interpreter.system_message)
モデルの変更
Open Interpreter は、ホストされた言語モデルへの接続に LiteLLM を使用しています。
model パラメータを設定することで、モデルを変更することが可能です:
interpreter --model gpt-3.5-turbo
interpreter --model claude-2
interpreter --model command-nightly
Python では、オブジェクト上でモデルを設定します:
interpreter.llm.model = "gpt-3.5-turbo"
ローカルのモデルを実行する
Open Interpreter は、OpenAI 互換サーバーを使用してモデルをローカルで実行できます。 (LM Studio、jan.ai、ollam など)
推論サーバーの api_base URL を指定して「interpreter」を実行するだけです (LM Studio の場合、デフォルトでは「http://localhost:1234/v1」です)。
interpreter --api_base "http://localhost:1234/v1" --api_key "fake_key"
あるいは、サードパーティのソフトウェアをインストールせずに、単に実行するだけで Llamafile を使用することもできます。
interpreter --local
より詳細なガイドについては、Mike Bird によるこのビデオ をご覧ください。
LM Studioをバックグラウンドで使用する方法
- https://lmstudio.ai/からダウンロードして起動します。
- モデルを選択し、↓ ダウンロード をクリックします。
- 左側の ↔️ ボタン(💬 の下)をクリックします。
- 上部でモデルを選択し、サーバーを起動 をクリックします。
サーバーが稼働を開始したら、Open Interpreter との会話を開始できます。
注意: ローカルモードでは、
context_window
を 3000 に、max_tokens
を 1000 に設定します。モデルによって異なる要件がある場合、これらのパラメータを手動で設定してください(下記参照)。
コンテキストウィンドウ、最大トークン数
ローカルで実行しているモデルの max_tokens
と context_window
(トークン単位)を変更することができます。
ローカルモードでは、小さいコンテキストウィンドウは RAM を少なく使用するので、失敗する場合や遅い場合は、より短いウィンドウ(〜1000)を試すことをお勧めします。max_tokens
が context_window
より小さいことを確認してください。
interpreter --local --max_tokens 1000 --context_window 3000
デバッグモード
コントリビューターが Open Interpreter を調査するのを助けるために、--verbose
モードは非常に便利です。
デバッグモードは、フラグ(interpreter --verbose
)を使用するか、またはチャットの中から有効にできます:
$ interpreter
...
> %verbose true # <- デバッグモードを有効にする
> %verbose false # <- デバッグモードを無効にする
対話モードのコマンド
対話モードでは、以下のコマンドを使用して操作を便利にすることができます。利用可能なコマンドのリストは以下の通りです:
利用可能なコマンド:
%verbose [true/false]
: デバッグモードを切り替えます。引数なしまたはtrue
でデバッグモードに入ります。false
でデバッグモードを終了します。%reset
: 現在のセッションの会話をリセットします。%undo
: メッセージ履歴から前のユーザーメッセージと AI の応答を削除します。%save_message [path]
: メッセージを指定した JSON パスに保存します。パスが指定されていない場合、デフォルトはmessages.json
になります。%load_message [path]
: 指定した JSON パスからメッセージを読み込みます。パスが指定されていない場合、デフォルトはmessages.json
になります。%tokens [prompt]
: (実験的) 次のプロンプトのコンテキストとして送信されるトークンを計算し、そのコストを見積もります。オプションで、prompt
が提供された場合のトークンと見積もりコストを計算します。見積もりコストは LiteLLM のcost_per_token()
メソッドに依存します。%help
: ヘルプメッセージを表示します。
設定
Open Interpreter では、config.yaml
ファイルを使用してデフォルトの動作を設定することができます。
これにより、毎回コマンドライン引数を変更することなく柔軟に設定することができます。
以下のコマンドを実行して設定ファイルを開きます:
interpreter --config
設定ファイルの複数利用
Open Interpreter は複数の config.yaml
ファイルをサポートしており、--config_file
引数を通じて簡単に設定を切り替えることができます。
注意: --config_file
はファイル名またはファイルパスを受け入れます。ファイル名はデフォルトの設定ディレクトリを使用し、ファイルパスは指定されたパスを使用します。
新しい設定を作成または編集するには、次のコマンドを実行します:
interpreter --config --config_file $config_path
特定の設定ファイルをロードして Open Interpreter を実行するには、次のコマンドを実行します:
interpreter --config_file $config_path
注意: $config_path
をあなたの設定ファイルの名前またはパスに置き換えてください。
対話モードでの使用例
- 新しい
config.turbo.yaml
ファイルを作成しますinterpreter --config --config_file config.turbo.yaml
config.turbo.yaml
ファイルを編集して、model
をgpt-3.5-turbo
に設定しますconfig.turbo.yaml
設定で、Open Interpreter を実行しますinterpreter --config_file config.turbo.yaml
Python での使用例
Python のスクリプトから Open Interpreter を呼び出すときにも設定ファイルをロードできます:
import os
from interpreter import interpreter
currentPath = os.path.dirname(os.path.abspath(__file__))
config_path=os.path.join(currentPath, './config.test.yaml')
interpreter.extend_config(config_path=config_path)
message = "What operating system are we on?"
for chunk in interpreter.chat(message, display=False, stream=True):
print(chunk)
FastAPI サーバーのサンプル
アップデートにより Open Interpreter は、HTTP REST エンドポイントを介して制御できるようになりました:
# server.py
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from interpreter import interpreter
app = FastAPI()
@app.get("/chat")
def chat_endpoint(message: str):
def event_stream():
for result in interpreter.chat(message, stream=True):
yield f"data: {result}\n\n"
return StreamingResponse(event_stream(), media_type="text/event-stream")
@app.get("/history")
def history_endpoint():
return interpreter.messages
pip install fastapi uvicorn
uvicorn server:app --reload
安全に関する注意
生成されたコードはローカル環境で実行されるため、ファイルやシステム設定と相互作用する可能性があり、データ損失やセキュリティリスクなど予期せぬ結果につながる可能性があります。
⚠️ Open Interpreter はコードを実行する前にユーザーの確認を求めます。
この確認を回避するには、interpreter -y
を実行するか、interpreter.auto_run = True
を設定します。その場合:
- ファイルやシステム設定を変更するコマンドを要求するときは注意してください。
- Open Interpreter を自動運転車のように監視し、ターミナルを閉じてプロセスを終了できるように準備しておいてください。
- Google Colab や Replit のような制限された環境で Open Interpreter を実行することを検討してください。これらの環境はより隔離されており、任意のコードの実行に関連するリスクを軽減します。
一部のリスクを軽減するためのセーフモードと呼ばれる 実験的な サポートがあります。
Open Interpreter はどのように機能するのか?
Open Interpreter は、関数が呼び出せる言語モデルに exec()
関数を装備し、実行する言語("python"や"javascript"など)とコードが渡せるようになっています。
そして、モデルからのメッセージ、コード、システムの出力を Markdown としてターミナルにストリーミングします。
貢献
貢献に興味を持っていただき、ありがとうございます!コミュニティからの参加を歓迎しています。
詳しくは、貢献ガイドラインを参照してください。
ロードマップ
Open Interpreter の未来を一足先に見るために、私たちのロードマップをご覧ください。
注意: このソフトウェアは OpenAI とは関連していません。
あなたの指先のスピードで作業するジュニアプログラマーにアクセスすることで、… 新しいワークフローを楽で効率的なものにし、プログラミングの利点を新しいオーディエンスに開放することができます。
— OpenAI Code Interpreter リリース