チャートを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アプリ/UIstreamlit
可視化(インタラクティブ)plotly
データ処理pandas, numpy
気象データ(EPW読み込み・処理)pvlib
LLM(OpenAI API連携・デフォルト)openai
LLM(ローカルGGUF実行・オプション)llama-cpp-python
数値計算(補助・一部処理で使用)scipy
データ入出力/高速化(補助・環境により使用)pyarrow
Pocket

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です