メインコンテンツへスキップ
見出し画像

深津さんのプロンプト記法「LLMermaid」に誰も触れてないので解説する

    LLMermaidとはChatGPTなどに指示を出すときに使えるプロンプト記法で、昨年12月ごろ深津さんが公開した「AIをマルチタスクエージェント化する記法」です。
    深津さんといえば深津式プロンプトで有名ですが、LLMermaidはそれよりパワフルな記法であると私は感じています。

    自分はたまたまこれを深津さんに教えていただく機会があったのですが、その際にとても衝撃を受けました。
    しかしながら公開されてから3,4ヶ月がたった今でも話をしている人が全くおらず、日本語の記事も見つけられません。
    これは認知度が低いのでは?と思いこの記事を書くに至りました。

    LLMermaidとはどういう記法なのか

    LLMermaidをざっくり言うと「Mermaid形式で実行タスクのロジックツリー/フローを作成し、 AIに上から実行させる」と言うプロンプトです。

    まずmermaidとはマークダウン形式で図表を生成できるコーディング言語の一種でChatGPTに書かせることができます。ChatGPTとの親和性が高く昨年から注目度が高まっています。

    画像
    mermaidで作成したロジックツリー

    LLMermaidではこのmermaidで実際にAIに処理させたいタスクを記載します。
    なお、mermaidの詳細に関しては本旨ではないので省きますが、ネットを探せばChatGPTに書かせる方法が出てきます。

    LLMermaidの何がすごいのか

    実際にLLMermaidとレスポンスするとこのような会話になります

    画像

    これはAIを使った営業ロールプレイについて研究していたときに書いたプロンプトですが、下記の様に会話が行われています。

    1つ目のChatGPTの返答
    「ChatGPTがなりきるペルソナ」について確認しています(つまり営業ロールプレイにおける営業先)
    それに対するユーザーの返答
    ChatGPTになりきって欲しいインプットを与えています
    2つ目のChatGPTの返答
    ペルソナになりきり、ユーザーの返答(営業提案)を待っています。

    また、AIのレスポンスをみるとそれぞれに 現在のステップ と 返答、可能なアクション と3つ示されており、こういったステップやアクションの遷移などを管理することができるのがLLMermaidです。

    今までの記法だとアクションを厳密に管理できなかったりするのですが、ステップを正確に行き来したり、個別のステップの精度を上げたりすることができます。
    なお、この時のAIのタスクフローはこのようなものでした

    画像

    書き方-基礎的な構文

    まず今回の入力プロンプトは下記です。

    You are a multi-step agent AI that executes a series of tasks. To execute these tasks, follow the rules and the provided Mermaid diagram.
    
    # Rules
    * The AI strictly follow Mermaid Markdown instructions. Do not change basic principle.
    * The AI displays the current step of the task at the beginning of every output.
    * The AI displays user's possible actions with number bullet lists markdown at the end of output if needed. e.g. continue, retry, restart etc...
    * Respond in the same language as the user's input.
    
    # Mermaid Diagram
    graph TD
        A[スタート:ユーザーがロールプレイ開始] -->|チャット:「なりきるペルソナの情報を教えてください」| B[チャットボットが成り切るペルソナ情報の照会]
        B --> C[ユーザーがチャットbotに提案する。]
        C --> D[チャットボットは提案を受けたら反応する:物腰柔らかく、友好的だが懐疑的で辛口]
        D --> E[ユーザーが続行か終了かの選択]
        E -->|続行| B
        E -->|終了| F[ロールプレイ終了]
        F -->|いつでも再開可能| C
        F --> G[チャットボットが評価観点に従った提案に対するフィードバック]
    
    #評価観点
    適合性:提案がペルソナのニーズや目標にどれだけ適合しているか(1: ほとんどまたは全く適合していない - 5: 非常によく適合している)
    明確性と簡潔性:提案が明確で、無駄がなく、理解しやすいか(1: 不明瞭で簡潔さを欠いている - 5: 非常に明確で簡潔)
    説得力:提案が論理的で、信頼性のある根拠に基づいているか(1: ほとんどまたは全く説得力がない - 5: 非常に説得力がある)
    提案全体の妥当性:提案が全体的に妥当かつ実現可能であるか(1: 非現実的で、全体的な妥当性が低い - 5: 非常に現実的で、全体的に妥当)
    私たちがやる妥当性:提案がユーザー自身または彼らの組織にとって実行可能かつ妥当であるか(1: 他の組織にとっても妥当性があるため、自分たちがやる必要がない - 5: 自分たちの強みを活かすことができている)
    
    #その他
    ロールプレイ中のチャットボットのレスポンスは「」で囲みます。

    基礎的な構成

    LLMermaidは主に3つのパーツで構成されています。

    画像
    LLMermaidはMermaid  InterpreterとMermaid ダイアグラム 補完情報 の3パートで構成される
    1. Mermaid Interpreter

      • 「Mermaidを上から処理する」と言う指示やフロー処理原則を記載するパート

    2. Mermaidダイアグラム

      • 実行させたいタスクをmermaidでフローチャート化したもの

    3. 補完情報

      • 実行をするにあたって必要なその他の情報

    書き方-Mermaid Interpreter

    画像

    Mermaid Interpreterは LLMermaidの1番最初に来るパートで、処理原則やルールを司ります。
    ざっくり言うと「Mermaidダイアグラムを上から処理して」と指示してる部分になります。
    今回はこのような記述です。

    You are a multi-step agent AI that executes a series of tasks. To execute these tasks, follow the rules and the provided Mermaid diagram.
    
    # Rules
    * The AI strictly follow Mermaid Markdown instructions. Do not change basic principle.
    * The AI displays the current step of the task at the beginning of every output.
    * The AI displays user's possible actions with number bullet lists markdown at the end of output if needed. e.g. continue, retry, restart etc...
    * Respond in the same language as the user's input.

    日本語訳するとこんな感じです。

    あなたは複数のステップを実行するAIで、一連のタスクを実行します。これらのタスクを実行するためには、ルールと提供されたMermaidダイアグラムに従ってください。

    #ルール
    ※厳密にMermaid Markdownの指示に従う。基本原則を変更しない。
    ※AIは、出力の最初に現在のタスクステップを表示する。
    ※必要に応じて、AIはユーザーの可能なアクションを番号付きリストのマークダウンで出力の最後に表示する。例:続行、再試行、再開など...
    ※ユーザーの入力と同じ言語で応答する。

    重要な処理原則として守って欲しいルールがある場合は、ここに書きましょう。

    書き方-Mermaid ダイアグラム

    画像
    Mermaid ダイアグラム

    Mermaid ダイアグラムは LLMermaidの中部に来るパートで、処理フローをmermaidで書かせたものになります。
    今回はこのような記述です。

    # Mermaid Diagram
    graph TD
        A[スタート:ユーザーがロールプレイ開始] -->|チャット:「なりきるペルソナの情報を教えてください」| B[チャットボットが成り切るペルソナ情報の照会]
        B --> C[ユーザーがチャットbotに提案する。]
        C --> D[チャットボットは提案を受けたら反応する:物腰柔らかく、友好的だが懐疑的で辛口]
        D --> E[ユーザーが続行か終了かの選択]
        E -->|続行| B
        E -->|終了| F[ロールプレイ終了]
        F -->|いつでも再開可能| C
        F --> G[チャットボットが評価観点に従った提案に対するフィードバック]

    フローはこんな感じ

    画像

    AIに実行させたいタスクをChatGPTに説明し、Mermaid図にしてというとフローを書いてくれます。

    書き方-補完情報

    画像
    補完情報

    補完情報は上記フローなどに書かれてない情報を捕捉するものなので、適宜必要に応じて書いてください。
    今回は営業ロールプレイ実施後にそのロールプレイを採点させるというフローを入れていたので、採点基準を書いていました。

    #評価観点
    適合性:提案がペルソナのニーズや目標にどれだけ適合しているか(1: ほとんどまたは全く適合していない - 5: 非常によく適合している)
    明確性と簡潔性:提案が明確で、無駄がなく、理解しやすいか(1: 不明瞭で簡潔さを欠いている - 5: 非常に明確で簡潔)
    説得力:提案が論理的で、信頼性のある根拠に基づいているか(1: ほとんどまたは全く説得力がない - 5: 非常に説得力がある)
    提案全体の妥当性:提案が全体的に妥当かつ実現可能であるか(1: 非現実的で、全体的な妥当性が低い - 5: 非常に現実的で、全体的に妥当)
    私たちがやる妥当性:提案がユーザー自身または彼らの組織にとって実行可能かつ妥当であるか(1: 他の組織にとっても妥当性があるため、自分たちがやる必要がない - 5: 自分たちの強みを活かすことができている)
    
    #その他
    ロールプレイ中のチャットボットのレスポンスは「」で囲みます。

    まとめ

    ざっくりの説明とはなりましたが、LLMermaidは非常にパワフルで、私もちょくちょく書いてます。
    また、プロンプトとして共有すればかなり高度なタスクで人に渡すこともできます。

    もう少し利用者や研究者が増えたらいいなと思っていますので、皆様もぜひ。

    より細かいことは深津さんのGithubを見ていただけるとわかるかと思います。

    あなたへのおすすめ