👻

Azure OpenAI Service + Open Interpreterやってみたレポート

2023/09/12に公開

こんにちは、Happy Elements 株式会社でエンジニアをしておりますryoooです。

概要

流行りのOpen interpreterをAzure OpenAI Serviceと接続して動かしたので、どんな感じだったのかを良かった点、気になった点、簡単に紹介します。

Open interpreterとは

自然言語によるプログラミングをローカルPC上で実現するオープンソースツールです。
PythonやJavaScript、Bash などの言語に対応しており、データ分析やブラウザ制御、動画/画像/PDFの生成、編集ができる仕組みです。

具体的には、以下のようなことが可能となります。

  • 画像を読ませて、拡縮・白黒化はもちろん、AIに投げてキャプションを生成させる
  • csvファイルを読ませて、csvファイルのデータを分析させる
  • pdfファイルを読ませて、中身について質問したり要約させる

生成されたプログラムを実行するかどうかの判断は人間の手に委ねられているので、若干のITリテラシーも必要にはなるのですが、エンジニアにとってはプログラム化が高速に可能になりますし、非エンジニアにとっては「プログラムでかけるんだろうけど、エンジニアにお願いするのはちょっと...」というケースで活用可能です。

利用イメージ

ターミナルでinterpreterを立ち上げて、やりたいことを書けばPythonのコードを出力して実行可否を聞いてきます。

表示されたPythonコードをみて問題なければyを入力し、yes/no以外の何らかの判断を求められた場合は人間の判断を入力していくことで、問題解決まで導かれます。

以下ではpdfファイルに書かれた内容について質問をしています。



利用方法

以下の手順でOpen interpreterを使うことができます。

Azure OpenAI GPTのAPIキーを取得
Open interpreterをインストール
Open interpreterを利用

(参考)公式の日本語マニュアル
https://github.com/KillianLucas/open-interpreter/blob/main/README_JA.md#azureのサポート

Azure OpenAI GPTのAPIキーを取得

利用するにはAzure OpenAIのアクセストークンが必要となります。

利用にはリソースと紐づくアクセストークンが必要となります。
トークンを使いまわしたくないのですが、Azureのリソースって個人単位で作っているものなのでしょうか...

Open interpreterのインストール@mac

インストールはお手軽簡単

pip install open-interpreter

Open interpreterの利用@mac

ターミナルで以下を実行

# 接続情報を環境変数に設定
export AZURE_API_KEY=(発行したアクセストークン)
export AZURE_API_BASE=https://xxxx.api.cognitive.microsoft.com # ← リソースのエンドポイント
export AZURE_API_VERSION=2023-07-01-preview # ← AzureのAPIマニュアル(後述)からAPIバージョンを選択して指定
export AZURE_DEPLOYMENT_NAME=xxxxx # ← Azure OpenAI Studioのdeploymentsで作成したdeploy名を指定

# 起動
interpreter --use-azure

(参考) 有効なapi versionは以下から確認できます。
https://learn.microsoft.com/ja-jp/azure/ai-services/openai/reference#chat-completions

上記で起動するので、解決したい問題を入力してください。

うまくいかなかった点

InvalidRequestError: 'content' is a required property - 'messages.2'

記事公開時点では、Azureを利用したときのみ上記のエラーが発生します。
function_callレスポンスを得たら、次にLLMへ送信するメッセージ配列に追加するのですが、Azure版のOpenAIから得られるfunction_callレスポンスではcontentフィールドが存在しません。
しかし、LLMのメッセージ配列にはcontentフィールドが必須となっているため、このエラーが発生します。

あと少しで完了というところでこのエラーが出ると辛いです。

OpenAIから得られるfunction_callレスポンスは毎回contentフィールドが存在しないのですが、Open interpreterでは毎回発生するわけではないので、どこかで対応漏れを起こしているんだと思いますが、公式の対応待ちの状態です。
なおissueは以下にあります。

精度

簡単なタスクなら高確率で成功するので、そういった点では使い所があると思います。

一方で、サイトを操作したりKeynoteを操作するような複雑なタスクだとまだ問題解決まで至らないケースが多数あり、複雑なタスクでは継続的に使おうという気にはなりませんでした。
※ 例えば、「Slack絵文字作成サイトで絵文字を作って」とかいうと、Seleniumを入れてChromeを自動で動かしてくれるのですが、バージョン違いでうまく動かず自力解決できずエラーループに陥ったりします。

以下で似たようなことを試したときに個人的に感じたこととして、数種類のシステムプロンプト(エージェント)を使い分けることで異なる視点から問題解決に取り組み、結果解消できる場合があるので、そういったソフトウェアの面で改善はできそうな気はしています。
https://zenn.dev/happy_elements/articles/0b2691b3fc53fd

まだ出たばかりであり、今後どんどん良くなっていくと思うので引き続き期待しています。

おわりに

最後までみていただきありがとうございます。
今年は色々とでてきていて速度が早すぎます...
よろしければ、ハート・フォロー・シェアをいただけますと喜びます :)
失礼いたします。

Happy Elements

Discussion