はちみつブログ

趣味や生活の話を好きなタイミングで書いていきたいと思います。

Claude 3.7 Sonetで図を作成してみた

2/24(米国時間で、日本では2/25らしい)に公開されてから、Claude 3.7に関する記事を目にする機会が多かった。特に、図やスライド作成までできるという話も多く目に留まった。

図形の作成AIというと、Napkin AIは聞いたことがありどこかで試そうかなと思っていたものの、それ以外はあまり聞いたことがない。通常のLLMにコードを書かせるのと同様に、SVGのコードを依頼したことはあるのだが、許せる図になったことはまあなかった。もし、Claude 3.7が図を作れるようであれば、かなり嬉しい。

ということで試してみた、というのが今回の記事になる。今回はSVGで描画することに加え、後で編集が可能なようにDraw.ioで出力可能かを簡単に検証してみた。

はじめに

ClaudeはAnthropic社が公開しているLLMという言い方で正しいだろうか…chatGPTよりは後発で聞いたものの、GeminiがBardだった時より早く聞いたような…

これまではClaude 3.5系が最新だったと思うが、2/24(米国時間でなので、日本だと2/25になってかららしい)に3.7 Sonnetが公開された。最初からだったのかよくわかっていないが、自分が触ろうとしたタイミングでは無料版でも3.7を利用可能だった。最新版を無料ユーザーにも使わせてくれるとは優しいな、という印象。

有料ユーザーは extended thinking modeで利用可能なようだ。この辺があまり理解できていないが、難しい問題系のような思考を伴うタイプの回答が強いという意味なのだろうか…?まあ、この辺はまた勉強してみたいと思う。

さて、Claude 3.7で話題に上がるのが、図解ができるであったり、プレゼン資料も自動で作れるなり、だと思う。自分がこの記事作成時に「claude 3.7 図解」で検索した際には、これこれこれ、などがトップに来ていた。

2つ目の 「Claude 3.7 Sonnetの図解作成に驚き、draw.ioやPPTXで編集してみる」の記事でも出てくるが、Draw.ioでも図を出力できるらしい。自分が最初に知ったのは、「全ビジネスマンが使えるClaude3.7 sonnet と draw.ioで始める図の作成。」というnoteの記事だが、そちらでも別のポストで知ったとのことが書いてあるので、結構流行っているのかも、という感じ。もし、Draw.ioで結構満足する図が書けるのであれば、修正や調整しやすいし大変便利、作業の効率化、頭の整理に役立つのではないかと思う。

何か題材は…ということで捻り出して考えたのが、(1)物語の人物相関図、(2)何らかの比較、とかだったので、その具体例として、(1)桃太郎の登場人物の相関図を作成、(2)LLMの比較、とすることとした。

桃太郎の登場人物の相関図

では、やってみたことを素直に書いていこうと思う。失敗例も含めてあまり整理せず書いてみる。

まず初めのプロンプトは

日本の昔話の桃太郎について教えてください。

とした、回答は

桃太郎(ももたろう)は日本の代表的な昔話の一つです。以下にその物語の概要を説明します: 物語の始まりは、… 略 … この物語は、勇気、友情、正義の勝利というテーマを持ち、日本の子どもたちに古くから親しまれています。また、桃太郎の「鬼退治」は困難に立ち向かう勇気の象徴として、日本文化の中で重要な位置を占めています。

という感じで桃太郎の物語をそれなりに正確に説明してくれた。

次に以下のプロンプトで、人物の相関図を作成してもらった。

人物の相関図をsvgで作成してください。

作成されたSVGがこちら。なかなか良い気がする。

では、draw.ioで調整をしてみよう、ということで以下のプロンプトを入れてみたのだが、失敗してしまった。

ありがとうございます。では、同様の図をdraw.io形式で出力してください。

こちらには以下の回答がされた。

draw.io形式でのエクスポートについてご要望いただきありがとうございます。残念ながら、直接draw.io形式(.drawio または .xml)でのファイル出力はできません。しかし、draw.ioで再現できるように、桃太郎の物語の登場人物相関図の作成手順をご案内します。

draw.ioでは以下の手順で作成できます:

  1. draw.ioにアクセスして新規ドキュメントを作成
  2. 以下の要素を配置:

ノード(円)の配置:

  • 中央に桃太郎(ピンク系の円)
  • 左上におじいさん(水色系の円)
  • 右上におばあさん(薄紫系の円)
  • 左側に犬(ベージュ系の円)
  • 中下に猿(茶色系の円)
  • 右側にキジ(オレンジ系の円)
  • 下側に鬼の大将(赤系の円)

テキストの追加:

  • 各円の中に名前(「桃太郎」「おじいさん」など)
  • 役割(「主人公」「養父」「家来」など)

関係線の追加:

  • おじいさんとおばあさん間:実線+「夫婦」テキスト
  • おじいさんから桃太郎へ:実線+「育てる」テキスト
  • おばあさんから桃太郎へ:実線+「育てる」テキスト
  • 桃太郎から各家来(犬、猿、キジ)へ:実線+「きびだんご」テキスト
  • 各家来から鬼の大将へ:点線+「戦う」テキスト
  • 桃太郎から鬼の大将へ:太い赤線+「退治」テキスト

凡例の追加:

  • 右下に白い四角形を作成
  • 「凡例」のタイトルテキスト
  • 実線+「関係」テキスト
  • 点線+「協力」テキスト
  • 赤線+「対立」テキスト

この手順に従って作成したら、「ファイル」→「名前を付けて保存」から".drawio"形式で保存できます。

また、先ほど作成したSVG画像をdraw.ioにインポートする方法もあります:

  1. SVG画像をダウンロード
  2. draw.ioで「ファイル」→「インポート」を選択
  3. ダウンロードしたSVG画像を選択

これで同様の図をdraw.ioで編集することができるようになります。

うん。そうじゃない。という感じ。この後 draw.ioで表現するためのxmlを教えてと聞くことで、一応XMLは出力してくれたのだが、思うように表示できなかった。もしかすると順番は関係あるのかもしれない。

気を取り直してやり直した結果がこちら。

日本の昔話の桃太郎について教えてください

ここの回答は略。

では、桃太郎の人物の相関図をわかりやすいSVG形式の図にまとめてください。

まあ、良いでしょうという感じ。こちらに対して、

ありがとうございます。同じ図について、draw.ioで利用可能なxmlを教えてください。

こちらでXMLが出力された。出力されたXMLについて、Draw.ioでインポートする方法を解説してくれているが、無視して笑、ファイルの拡張子を .drawioへ書き換え。今回の場合、 momotaro-drawio-xml.txtというファイルを出力してくれたので、 momotaro-drawio-xml.drawio へ変更した。

自分の場合はDraw.ioはVSCode拡張機能で利用している。そのまま、VSCodemomotaro-drawio-xml.drawioを開いた結果がこちら。

ファイル名に _2がついているのは、上の方の失敗例の方で同名のファイルが作られてしまったため。微妙にSVGの時より書き加えてくれているのかもしれないな、というポイントもあるが、ほぼ同一と言って良い出来だと思う。めちゃくちゃ感動した。ただ、今回出力したXMLの場合、各要素を個別で選択して動かしたりすることはできなかった。

次の章の方は上手く動かしたりできたので、さっさと共有するが何かプロンプトのコツもあるのかもしれない。

LLMの比較

もう1種類くらい欲しいな、ということでやってみた例。

各種LLMについて比較などを日本語で教えて。クラウドサービスだけでなく、ローカルで動作可能なものについても比較して教えて。

こちらについてはまあ文章でつらつらと説明してくれたが、長いので省略。正直中身は細かくみていない笑

次にSVGを出力するため以下のプロンプトを実行。

ありがとうございます。これらをわかりやすいsvg形式の図にまとめてください

出力されたSVGがこちら。

次に、

ありがとうございます。同じ図について、draw.ioで利用可能なxmlを教えてください。

これにより出力されたXMLの拡張子を .drawioへ変更して、VSCodeで開いた結果がこちら。

見た目は良い。

今回は各要素が個別の図形になっていたため、選択して移動したり編集したりすることが可能だった。

1つ目の例が編集不可で、2つ目の方が編集可能な理由は、正直よく理解できなかったが、、、Claudeに解説させてみるか…と思ったが、XMLをコピペして聞いてみたところ無料版のトークン上限を超えるようだった笑 原因についてはおいおい、別のLLMも含めて聞いてみて調査できればと思う。まあ、編集できなかったら「編集できるようにXMLを修正して」みたいな感じで聞き直すのもありだと思う。

まとめ

今回はClaude 3.7 Sonnetで図形の出力させてみた。特にDraw.ioで利用可能なXML形式で出力させることはインパクトがあった。上手くいかないケースももちろんあるが、いろいろ試行錯誤する中で確実性高くDraw.ioで出力できれば、かなり図形作成が効率化される感触がある。