2024年2月9日金曜日

Open Interpreter 超入門

Open Interpreter 超入門

概要

Open Interpreter は ChatGPT に問い合わせた結果をローカルのマシンで実行することができるツールです
今回は ChatGPT ではなく llama2 をローカルで動かして ChatGPT の代わりとして動かしそこに対して Open Interpreter を実行してみます

環境

  • macOS 14.2.1
  • Python 3.11.6
    • open-interpreter 0.2.0
    • openai 1.11.1

インストール

  • pipenv install open-interpreter

llama2 の起動

ollama というローカルで LLM を動作させるツールを使います
また今回は軽めの LLM (llama2 [3.8GB]) を使いますがサイズの大きい LLM モデル (dolphin-mixtral:8x7b-v2.6 など) を使う場合は /tmp などの領域が十分に空いている状態で実行してください

  • brew install ollama
  • brew services run ollama
  • ollama run llma2

モデルのダウンロードが始まるので待ちましょう

open-interpreter の実行

まずはコマンドで実行してみます

  • pipenv run interpreter --model ollama/llama2

インタラクティブモードになるので質問してみます
とりあえず今回は特定のサイトをスクレイプする Python スクリプトを作成してもらいます
すると生成したスクリプトをそのままローカルマシンで実行するか確認するダイアログが表示されるので Yes を選択しましょう
もしライブラリなどの準備が整っていればそのまま実行することができます

▌ Model set to ollama/llama2

Open Interpreter will require approval before running code.

Use interpreter -y to bypass this.

Press CTRL-C to exit.

> Create a script to scrape https://hawksnowlog.blogspot.com/ in Python.

We were unable to determine the context window of this model. Defaulting to 3000.

If your model can handle more, run interpreter --context_window {token limit} --max_tokens {max tokens per response}.

Continuing...


  Plan:

   1 Write a script to scrape the website https://hawksnowlog.blogspot.com/ using Python.
   2 Use therequests library to make HTTP requests to the website and retrieve the desired data.
   3 Use theBeautifulSoup library to parse the HTML content of the website and extract the desired information.
   4 Store the extracted data in a dictionary or other data structure for further use.

  Code:



  import requests
  from bs4 import BeautifulSoup

  # Send an HTTP request to the website
  response = requests.get('https://hawksnowlog.blogspot.com/')

  # Parse the HTML content of the website using BeautifulSoup
  soup = BeautifulSoup(response.content, 'html.parser')

  # Extract the desired information from the website
  title = soup.find('title').text
  author = soup.find(' author').text
  date = soup.find('date').text

  # Store the extracted data in a dictionary
  data = {'title': title, 'author': author, 'date': date}

  # Print the extracted data
  print(data)


  Would you like to run this code? (y/n)

ここで y を入力するとそのまま実行されます
ライブラリなどがまだインストールされていない場合は以下のようにエラーになります

  ModuleNotFoundError                       Traceback (most recent call last)
  Cell In[2], line 4
        2 import requests
        3 print('##active_line2##')
  ----> 4 from bs4 import BeautifulSoup
        5 print('##active_line3##')
        6 pass

  ModuleNotFoundError: No module named 'bs4'


  The output means that thebs4 module is not available in your Python environment. This is likely because you have not installed thebeautifulsoup4 package.

  To install the package, you can use the following command in your terminal:



  pip install beautifulsoup4


  Would you like to run this code? (y/n)

インタラクティブモードを抜ける場合は Ctrl+c を入力します

Python から実行

コマンドではなく Python スクリプトから実行してみます
実行後はコマンド同様インタラクティブモードに入り結果をそのまま実行するか確認されます

  • vim app.py
  • pipenv run python app.py
from interpreter import interpreter

interpreter.llm.model = "ollama/llama2"

ret = interpreter.chat("Create a script to scrape https://hawksnowlog.blogspot.com/ in Python")
print(ret)

注意事項

  • CPU のみの環境だと動作はするが LLM からの応答がかなり遅くなるので GPU もしくはハイスペックマシン上で動かすことをオススメします
  • 今回は LLM をローカルで動作させましたが有料版の ChatGPT の API が使える場合はそちらを使うことをおすすめします
    • モデルのサイズは大きくローカルのディスクを消費するためです
  • open-interpreter から抜ける場合は Ctrl-c で ollama から抜ける場合は /bye を入力しましょう

最後に

Open Interpreter を試してみました
LangChain では LLM に入力する情報を工夫していましたが Open Interpreter は取得後の情報を使って何かしらのアクションを実行することができます

ローカルに実行するのでスクリプトを実行するマシン上に open-interpreter のインストールが必要になりますが LLM 自体はローカルではなく ChatGPT (OpenAI) や Azure OpenAI などの API を使えるのでそこまでスペックを要求しないのも良いかなと思います

また今回は試していませんが -y というオプションを使えば自動で実行したりエラーになった場合はトライアンドエラーを繰り返してくれるので勝手にすべてやってくれる機能もあります
さすがにプロダクション環境などでは -y は怖い感じもしますが開発のサポートやローカル環境などでは便利なのかもしれません

参考サイト

0 件のコメント:

コメントを投稿