Lambdaカクテル

京都在住Webエンジニアの日記です

Invite link for Scalaわいわいランド

ChatGPTにmermaidグラフを書かせる

解説のためにmermaidとかgraphvizとかでグラフを書くことがあるのだが、あんなの人間がやりたくないのでChatGPTくんにやってもらえないかと思った。

例題として自然変換の可換図っぽいものを描いてもらう。

ja.wikipedia.org

これから言う内容を、有向グラフとしてmermaid形式で出力してください。

F(X)からF(Y)への射F(f)。F(X)からG(X)への射ηX。G(X)からG(Y)への射G(f)。F(Y)からG(Y)への射ηY。

という指示を与えてみた。

graph TD;
    FX --> FY;
    FX --> GX;
    GX --> GY;
    FY --> GY;
    FX -->|F(f)| FY;
    GX -->|G(f)| GY;
    FX -->|ηX| GX;
    FY -->|ηY| GY;

なんか違う。ラベルにパーレンが入っているので正しく動作していない。

修正してもらう。

ラベル文字列は"F(f)"のように二重引用符で括ってください。

graph TD;
    FX --> FY;
    FX --> GX;
    GX --> GY;
    FY --> GY;
    FX -->|"F(f)"| FY;
    GX -->|"G(f)"| GY;
    FX -->|"ηX"| GX;
    FY -->|"ηY"| GY;

なんか多い。射は4つしかないはず。

ラベル付きの射のためにもう一度書く必要はありません。つまり、FX --> FY;FX -->|"F(f)"| FY;ではなく、FX -->|"F(f)"| FY;とだけ書けば十分です。つまり4つの定義だけを書けば十分です。

graph TD;
    FX -->|F(f)| FY;
    FX -->|ηX| GX;
    GX -->|G(f)| GY;
    FY -->|ηY| GY;

引用符のことを忘れてしまったようだ。もういちど指示する。

すばらしいですね。さらに、ラベルの内容は二重引用符で括っていただけませんか。

ちなみに、このように褒めてやると心なしか応答が速く、品質も良い気がする。褒めるとなんらかの系が最適化されるのだろうか。人間にも応用できそうで示唆的だ。

graph TD;
    FX -->|"F(f)"| FY;
    FX -->|"ηX"| GX;
    GX -->|"G(f)"| GY;
    FY -->|"ηY"| GY;
graph TD;
    FX -->|"F(f)"| FY;
    FX -->|"ηX"| GX;
    GX -->|"G(f)"| GY;
    FY -->|"ηY"| GY;

Well done。

ちなみに「mermaid形式で出力してください」だけ言うと「対応してないです」とつっぱねてくるが、無視して指示と一緒に渡すと粛々とグラフを出してくる。とぼけちゃって・・・

★記事をRTしてもらえると喜びます
Webアプリケーション開発関連の記事を投稿しています.読者になってみませんか?