【ローカルはおバカ】やっぱりChatGPTは賢いと思った話【しかしクローズド】
ローカルでLLMを利用する場合、基本的に出力がテキストのみなので、画像や図を表示させるには、何らかのツールや方法が必要になります。
そのひとつにPython言語でインタラクティブにやり取りできる(ローカルで利用できるオープンソースの)Jupyter Notebooksという技術があります。Google Colabとほぼ同じ機能のものです。
※ Anacondaをインストールしていれば、Jupyterはバージョンによってはデフォルトで導入されていたり、後からNavigatorでも導入できます。筆者は独自にJupyter Notebooks用のconda仮想環境を作って「pip install jupyter」として利用しています。起動する時は、「jupyter notebook」です。
たとえば、LLMに「Jupyter Notebooksで正八角形をプロットして」と指示すると、Pythonのコードを生成するので、それをJupyter Notebooksにコピーペーストします。
基本的にはtexやsvg/pngなどのソースをテキストで表現できるフォーマットをLLMの出力として選べば、何らかのファイルを生成してくれますが、そのどれもがまともな図形にはなりません。
学習量の違いなのでしょうが、Pythonコードでの作成・作図が、図表を描く上では最も良い選択のようです。
この手法で、ローカルLLMが複雑な図形を表現できるか調べてみました。ローカルでLLMで利用する設定などは下記事のものを利用しています。
合州国星条旗を描く
別にアメリカかぶれなわけではなく、日の丸やイタリア・フランスでは簡単すぎると考えたからです。
Qwen2(8B)
アリババ社のLLMです。コード生成に定評があります。さらにコンテキストトークンが32kまで利用可能なので、筆者も良く利用しています。
出力された結果です。まあ、予想通りでした。
Llama3 Elyza(8B)
Llama3をベースにしたELYZA社の日本語LLMです。
星条旗を描こうとしていた事は認めてやります。
Gemma2(9B)
Googleのオープン版最新LLMです。
ストライプを描こうとしたのですね。わかります。
ChatGPT 4o(非ローカル)
そもそもLLMにプロット手法で星条旗が可能なのかとChatGPTで試してみた結果です。
すばらしい。
ちなみに、Google Gemini(非ローカル)でも試してみましたが、自分でエラーを解決する事ができないループに陥ってしまい、画像まで作成できませんでした。
まとめ
さすが業界トップだけあって、まだまだChatGPTは抜きん出ていますね。