チャートをAIで操作してみた話

仕事柄、チャートを描く機会がとにかく多いです。
昨年を振り返ると、「年がら年中チャートを作っていた」と言っても、あながち大げさではない気がします。
気温、湿度、負荷、エネルギー量…。
シミュレーション結果を確認するにも、説明資料を作るにも、まずはチャート。
ただ、
「線をもう少し太くしたい」
「この期間だけ見たい」
「色を変えたい」
こういう微調整って、地味に面倒なんですよね。
LLM(AI)でチャートを操作
そこで試しに、LLM(Large language model / OpenAIのAPI)を使ってチャートをチャットで指示できるようにしてみました。
やっていること自体はシンプルで、APIを使って、
- チャットで指示
- その内容をOpenAIのAPIで処理して
- チャート設定に反映
という流れです。
試してみたら、これが意外と快適でした。
線幅・透明度・色をチャットで指定
例えばこんな感じです。
- 気温の線幅を太くする
- 湿度は少し薄めにする
- 色を赤・青系に変更する
といった指定を、
「気温は線幅3、赤色」
「湿度は緑で線幅4、透明度50%」
みたいにチャットで書くだけ。
いちいち設定画面を開かなくていい、というだけで、作業のテンポがかなり良くなります。
日本語で指示する例を紹介していますが、たぶん英語とか他の言語でもOK。
表示期間もチャットで指定
期間指定も、同じくチャットで操作できます。
- 7月のデータを表示
- 8月の1週目を表示
- 全期間を表示
といったことが、そのまま文章で指定できます。
「この期間だけ確認したい」という場面は本当に多いので、ここもかなり便利に感じました。
操作動画
実際にチャットで操作している様子を、動画にしてみました。文字で説明するより、見てもらった方が早いと思います。
ローカルLLMも試してみた
せっかくなので、ローカルLLMも試してみました。小型のLLMモデルなら普通のPCでも動作します。OpenAIのAPIと比べると機能はそれなりですが、今回のようなチャットの処理なら十分いけそうです。
デスクトップPC
CPUにRyzen 9 9900X(12Core / 24Thread)を使ったデスクトップPCで試すと、まあまあ実用的なレスポンスです。ちょっとした指示なら、待たされる感じはあまりありません。
ノートPC
CPUにIntel Core Ultra 7 258V(8Core / 8Thread)を搭載したノートPCで試すと、返答まで1分くらい待つことがありました。
これは正直、「毎回これだと、ちょっとツライ」印象です。
※グラボの性能が影響するかと思っていましたが、まったく使っていませんでした。(たぶんモデルによる)
デスクトップPCとノートPCの違いというより、単純にCPUの性能とコア数の違いが出ているようです。
だれでも快適に使うならAPIが無難か?
現時点で、だれでも快適に使える形を考えると、やはりAPI利用が無難かな、という印象です。
- レスポンスが安定している
- マシンスペックに依存しにくい
費用(使用料)を考えなければ、このあたりは大きなメリットです。
ローカルLLMには期待したい
とはいえ、ローカルLLMも今後さらに性能が上がる可能性は高いですよね。
- モデルの軽量化
- 推論の高速化
- ハードウェアの進化
このあたりが進めば、「ローカルで快適」が当たり前になるかもしれません。
個人的に期待しています。
まとめ
こういうチャットUIはどうでしょうか?
今回作ってみたのは、「チャートを言葉で操作するチャットUI」です。
- 設定画面を触らなくていい
- 思ったことをそのまま書ける
- 試行錯誤がしやすい
という点では、悪くない感触でした。
ただ、
「本当に使いやすいか?」
「実務で使いたいと思えるか?」
このあたりは、まだまだ改善の余地がありそうです。
もしよろしければ、
「こうだったら使いやすい」
「これは微妙」
など、コメントいただけると嬉しいです。
もう少し試しながら、ブラッシュアップしていこうと思います。
実装方法などテクニカルな話は別のブログで書くかも。。。
動作環境
以下の環境で試しています。
Windows11 Pro(64bit, 25H2)
Python 3.14
技術スタック
| 用途 | パッケージ |
|---|---|
| Webアプリ/UI | streamlit |
| 可視化(インタラクティブ) | plotly |
| データ処理 | pandas, numpy |
| 気象データ(EPW読み込み・処理) | pvlib |
| LLM(OpenAI API連携・デフォルト) | openai |
| LLM(ローカルGGUF実行・オプション) | llama-cpp-python |
| 数値計算(補助・一部処理で使用) | scipy |
| データ入出力/高速化(補助・環境により使用) | pyarrow |