ついに来たローカルAIデータ分析！ Open InterpreterとAzure OpenAI Serviceで機密データも安全にハンドリング

:::note warn
以下の記事の内容は2023/9/22に実行しています。Open Interpreterは執筆時点でも開発が進められており、同じように動かない可能性があります。また、ローカルで動かすため、予期しないデータ消失等のリスクもあります。動かす場合は十分慎重に実施するようにお願い致します。本記事の内容によりデータ消失等が起きても責任は負いかねますことを予めご了承下さい。
:::

## Open Interpreterとは
Pythonなどのコードを大規模言語モデル（LLM）を活用してローカルで実行できるオープンソースのツールです。Open Interpreterは特別な登録など不要です。インストールすればすぐに利用可能です。ローカルで動くため、インターネットへの接続やローカルファイルへの接続がより簡単にできそうです。今回は、このOpen InterpreterをAzure OpenAI ServiceのGPTモデルに接続しローカルファイルを使って簡単なデータ分析（デモ）を実施してみました。

https://github.com/KillianLucas/open-interpreter/


## Azure OpenAI Serviceとは
Azure OpenAI Serviceは、言わずと知れたMicrosoft社によるAzure上で動作するOpenAIのモデルサービスです。エンタープライズレベルの高度なセキュリティが提供されています。


## PCの環境
Windows10
Pythonバージョン 3.11.3
※Pythonの仮想環境を使いました。

## Open Interpreterのインストール
``` 
> pip install open-interpreter
``` 

##

## 起動とAzure OpenAI Serviceへの接続
Azure OpenAI Serviceに接続します。"-y"はステップ実行をスキップするためのオプションです。

``` 
> interpreter -y --use-azure
```

このあと、API Keyやdeployment name等を訊いてきますので、ご自身の会社のAPI Keyやdeployment name等の情報を入れていきます。今回、ModelはAzure OpenAIの**gpt-35-turbo-16k**（モデルバージョン 0613）、APIは**2023-07-01-preview**で実施しました。
``` 
> Azure OpenAI API key: Your Azure OpenAI API key
> Azure OpenAI API base: Your Azure OpenAI API base
> Azure OpenAI deployment name of GPT: Your Azure OpenAI deployment name of GPT
> Azure OpenAI API version: 2023-07-01-preview
``` 
## デモデータについて
機械学習等で有名なタイタニックのデータを使わせて頂きました。（次のリンク先からCSVファイルをダウンロードして使わせていただきました。）

https://github.com/datasciencedojo/datasets/blob/master/titanic.csv

## データ分析開始
英語でプロンプトを書きました。（日本語だとエラーで止まってしまったので）


``` 
> Please analyze the following CSV file for me. The file is located at C:\data\titanic.csv Please generate a table of basic statistics. Please take care to avoid errors in code generation.
訳）次のCSVファイルを解析してください。ファイルはC:\data\taitanic.csvにあります。 基本統計表を出してください。コード生成でエラーが出ないように注意してください。
``` 
（実行画面）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3537852/4166cdc3-ba79-b783-63c3-72d121a0a4fe.png)
実行できました。では、次の質問。


``` 
> What is the ratio of men to women?　Think Step to Step.
訳） 男女比は？　　一歩一歩考えて。
``` 
（実行画面）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3537852/d45f98bc-bda1-41e2-d42a-1e4e7f27011d.png)

良さそうな感じです。次は男女比のパイチャートを描いてもらおうと思います。

``` 
> Pie-chart out the male/female ratio.
訳）男女比を円グラフにして
```


（実行画面）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3537852/c13a221a-399d-e3bc-7d87-fa14d81f81f3.png)
（表示された図）
![Figure_1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3537852/cc65b521-89ea-f69b-a6fd-3c33460d968d.png)


では、最後に

``` 
> Bring out the bar graphs by age 
訳）年齢別の棒グラフを出して
``` 
（実行画面）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3537852/082cd9f3-efb2-7f42-3d76-7d89f2e815ce.png)
（表示された図）
![Figure_2._age.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3537852/f1b1b707-dcb5-a6c2-6467-b19bc5a17bb9.png)

出ました。

## 感想
先日（2023/9/1）Qiitaに次の記事を書かせて頂きました。

https://qiita.com/hiromitsu_iwasaki/items/e29b2a8f46167496d1d7

このときに次のような文を書きました。「今後、OpenAI社のCode Interpreter（現 Advanced data analysis）のような機能がAzureにも入ってきたりする場合、・・・」そして、今月、
突如として、**Open interpreter**が出てきました。それもローカルで動かせるものが。触った感じはまるで自分のPCの中にAIがいるようでした。**Open Interpreter**はオープンソースのツールですが、**Azure OpenAI Service**と組み合わせて使うことで安全にデータハンドリングできると考えています。今後の発展に期待です。

さいごにrequirements.txtを出力しましたので掲載させて頂きます。

**＜requirements.txt＞**
``` 
aiohttp==3.8.5
aiosignal==1.3.1
ansicon==1.89.0
appdirs==1.4.4
astor==0.8.1
async-timeout==4.0.3
attrs==23.1.0
blessed==1.20.0
certifi==2023.7.22
charset-normalizer==3.2.0
colorama==0.4.6
contourpy==1.1.1
cycler==0.11.0
et-xmlfile==1.1.0
filelock==3.12.4
fonttools==4.42.1
frozenlist==1.4.0
fsspec==2023.9.1
git-python==1.0.3
gitdb==4.0.10
GitPython==3.1.36
huggingface-hub==0.16.4
idna==3.4
importlib-metadata==6.8.0
inquirer==3.1.3
jinxed==1.2.0
kiwisolver==1.4.5
litellm==0.1.698
markdown-it-py==3.0.0
matplotlib==3.8.0
mdurl==0.1.2
multidict==6.0.4
numpy==1.26.0
open-interpreter==0.1.4
openai==0.27.10
openpyxl==3.1.2
packaging==23.1
pandas==2.1.1
Pillow==10.0.1
Pygments==2.16.1
pyparsing==3.1.1
pyreadline3==3.4.1
python-dateutil==2.8.2
python-dotenv==1.0.0
python-editor==1.0.4
pytz==2023.3.post1
PyYAML==6.0.1
readchar==4.0.5
regex==2023.8.8
requests==2.31.0
rich==13.5.3
six==1.16.0
smmap==5.0.1
tiktoken==0.4.0
tokentrim==0.1.10
tqdm==4.66.1
typing_extensions==4.8.0
tzdata==2023.3
urllib3==2.0.4
wcwidth==0.2.6
wget==3.2
yarl==1.9.2
zipp==3.17.0
```