3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ChatGPTの作図能力を問う-クイックソート可視化に挑戦

Last updated at Posted at 2023-06-03

ChatGPTはテキストしか出力しませんが、出力形式を工夫することで、グラフや図を描画させることが可能です。出力方法をまとめてみます。

お題はクイックソートです。

結論から書くと、出力形式により作図能力が変わりました。クリックソートに関しては次の通りの結果でした。

テキスト > Mermaid > PlantUML > Graphviz > SVG

default - text

特に出力形式を指定しないと、テキストで図を描画してくれます。

クイックソートのアルゴリズムを図にしたいです。作図してください。

何のひねりもなく指示すると、テキスト上に図を出力します。

スクリーンショット 2023-06-03 9.49.58.png

SVGで出力

SVGも出力できます。でも、ちょっと座標がおかしいので苦手なのかな?

クイックソートのアルゴリズムを図にしたいです。
出力形式はSVGで作図してください。

スクリーンショット 2023-06-03 18.30.33.png

それで、SVGをブラウザで表示すると次のようになりました。
自信たっぷりの回答だったので、期待していたのですが。。。

スクリーンショット 2023-06-03 18.31.58.png

・・・結構壊れていますね。続く会話で以下のようなプロンプトを投げてみます。

レイアウトが崩れています。図が重ならないように配置できませんか?

スクリーンショット 2023-06-03 18.34.28.png

ChatGPTの謙遜さには、倣いたいと思います。結果はどうでしょうか?

スクリーンショット 2023-06-03 18.35.55.png

大した変化はありませんでした。残念。

PlantUMLで出力

次に、PlantUMLで出力してみましょう。
ChatGPTはPlanuUMLの作図はそこそこ得意です。
次のようなプロンプトを投げてみました。

クイックソートのアルゴリズムを図にしたいです。
出力形式はPlantUMLで出力してください。

PlantUMLは、Qiitaでもデフォルトでレンダリング可能なので、貼り付けてみたのですが、文法エラーになってしまいました。そこで、改めて再生成すると、次のような図を生成しました。

それっぽいですね。素晴らしいです。
ただし、アルゴリズムを図にしたというよりは、プログラムの構造を図にしたような雰囲気です。

Graphvizで出力

Graphvizの出力精度もPlantUMLくらいありそうです。
次のプロンプトを投げました。

クイックソートのアルゴリズムを図にしたいです。
出力形式はGraphvizで出力してください。

生成されたデータを「qsort.gv」という名前で保存して以下のようなコマンドでPNGファイルを生成しました。

$ dot -Tpng -o qsort.png qsort.gv

すると図は次のようになりました。ただし、あまりアルゴリズムを解説しているという感じはしません。

qsort.png

そこで、ここに来てプロンプトを工夫することにしました。

クイックソートのアルゴリズムを知りたいです。
クイックソートの手順を箇条書きにしてください。
出力形式はGraphvizで出力してください。

なんとなく雰囲気だけは出ているでしょうか。

qsort.png

Mermaidで出力

次に、気軽に図が記述できる、Mermaidで出力してみます。個人的には、かなり期待しています。

クイックソートのアルゴリズムを知りたいです。
出力形式はMermaidで出力してください。

どうでしょうか。すると、次のような図が出力されました。アルゴリズムの説明という点では、これまでで一番優秀でしょうか。

そこで、もう少しプロンプトを工夫しました。

クイックソートのアルゴリズムを知りたいです。
クイックソートの手順を箇条書きにしてください。
出力形式はMermaidで出力してください。

すると、以下のような図を出力します。

ちょっと不正確ですが、それなりの図を出力しています。
ここまでは、モデルGPT-3.5でしたので、GPT-4でも試してみました。

やはり、GPT-3.5よりも、GPT-4の方が結果が良い感じの図を出力しています。

GPT-4 + Show Meプラグイン

餅は餅屋でしょうか。GPT-4と「Show Me」プラグインで描画してみます。

クイックソートのアルゴリズムを知りたいです。
クイックソートの手順を箇条書きにして、図で出力してください。

プロンプトが悪かったのか、意外にもあっさりしています。

スクリーンショット 2023-06-03 19.10.58.png

先ほど結果が良かったプロンプトで改めて試してみます。

クイックソートのアルゴリズムを知りたいです。
クイックソートの手順を箇条書きにしてください。
出力形式はMermaidで出力してください。

スクリーンショット 2023-06-03 19.12.55.png

「Show Me」プラグインもGPT-4で生成したものをグラフで出力するだけなので、それほど変わらないようです。

お題が難しすぎた?

なお、「Wolfram」プラグインも試してみましたが、「申し訳ありませんが、クイックソートの視覚化に問題があります。クイックソートの視覚化は、一般的なプログラミング環境では簡単には実現できないかもしれません。それは、クイックソートが再帰的なアルゴリズムであり、その動作を一度に全体として視覚化するのが難しいからです。」とのことでした。

クイックソートでは、お題が難しすぎたようです。

まとめ

ここまでの結果を比較してみて、単純にクイックソートが分かりやすかったのは、テキスト出力したもの、次にMermaidでした。PlantUMLもプロンプトを工夫すればもっと分かりやすくなりそうでした。

また、プロンプトに与える入力を少し変えるだけでも結果が向上するので、いろいろ試してみたいと思いました。

3
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?