見出し画像

DataHubInsight(CodeInterpreterをローカルで自作する)


1.はじめに

1.1 DataHubInsightとは

デモ動画です

DataHubInsight(仮称)は、webブラウザ上で10GBクラスのデータセットを自然言語で探索することを目的として開発したツールです。
通常はデータエンジニアやデータサイエンティストが行うような、データの可視化、分析のうち簡易的な分析を自然言語で指示することができます。
コードを書くスキルの無い方でも、チャットでやり取りすることで簡単に実現できるようなWEBUIが提供できます。

 ・10GBクラスのデータセット
 ・データの可視化、分析
 ・チャットでのやり取り

1.2 ツールの位置づけ
CodeInterpreterをローカルで実現することを意図しています。
OpenInterpreterが同様の方向性ですが、違いとしては必要最小限のコードで書かれており作りが分かりやすくなっております。
また、社内の様々な人に利用してもらえるよう、webブラウザでの操作を前提として書かれています。
そのため、企業内での業務利用など用途に応じてアップデートしやすいよう、骨格となる機能に限定しております。

 ・企業内利用のベースコード
 ・Webブラウザでの利用
 ・用途に応じたアップデートがしやすい

2.技術

2.1 使っている技術について
LLMはAzureOpenAIでコードは書かれています。
※OpenAIのAPIでもAPIキーやLLM呼び出しなど差異をカスタマイズすることで動作する(はずです)

 ・AzureOpenAI
 ・Python
 ・Flask

2.2 掲載、説明するコード
動画を実現するコードの説明をします。
WEBアプリケーション部分は一般的技術のため、Flaskを使って動作する簡易的なwebページとなっており、説明は行いません

5.1 全体の構造
5.2 ReActの実装(systemプロンプト)
5.3 ReActの実装(function calling、コード生成、結果の取得)
5.4 コードの逐次実行制御
5.5 LLM応答のブラウザへのリアルタイム表示
5.6 ソースコード

3.機能拡張の可能性と注意点

3.1 現在できること
現在のコードでできることは、csv、excel、テキストファイルをアップロードし、チャットで読み込みと分析の指示ができます。

3.2 拡張の可能性
複数のファイルを同時に扱う、データベースへの接続もカスタマイズすることで実現できることは確認していますが、まだプロンプトなどの工夫を行わないと、常に上手く行くところまでは試行できていません。
画像にモザイクをかける、pdfをテキスト化する、サーバ側のファイルを消すなど、基本的にはpythonにて書けることはチャットで実現できますが、こちらも試行があまりできておらずどこまでできるのかはあまり検証できていません。

3.3 注意点
複数人での同時利用や安全性に関する実装は行われていません
社内イントラ公開を考えると、コンテナ化、仮想化などで複数人での同時利用、安全性(システムファイルを削除させない、サーバのメモリより大きいデータを一度に読み込まないなど)の担保、制限、チャット履歴、ログイン制御、API利用料の課金情報の取得など、行うことは多いと思います。
利用環境に合わせた実装を追加してください。

4.最後に

「5.コードの説明」を有料とさせていただきました。
完成されたツール提供ではなく、技術情報の共有が主旨となっております。
目的や注意点でも書きましたが、LLM活用を行う技術者が理解しカスタマイズするための基本コードであり、安全性など利用に関する考慮をしないと、サーバ上の重要なファイルが消えてしまった、などトラブルにつながる可能性が高いです。
そのためgithubへの公開ではなく、noteでの有料の形とさせていただきました。
コードにはあらわれないTips的なものもお伝えできればと思います。

LLM自体の研究ではなくそれを実際の業務で活用し、生産性が最低と言われている日本のオフィス業務が少しでも改善されればと取り組んできました。
10か月ほど試行錯誤した結果でもあるので、よろしければご活用ください。

5.コードの説明

コード全体は最後に掲載します。

5.1 全体の構造

Webブラウザに質問を入れ、LLMを呼び出し、生成されたコードを実行する、中心的な構造は次の図のようになっています。

質問からコード実行まで

ここから先は

35,169字

¥ 2,000

この記事が気に入ったらチップで応援してみませんか?