借助一点 Mermaid 提升你的 Prompt Engineering

发布: (2025年12月2日 GMT+8 21:18)
7 min read
原文: Dev.to

Source: Dev.to

摘要

你可能已经在不知不觉中看到过很多 Mermaid 图表,而支撑它们的是一种 LLM 能够很好理解的形式化描述语言。

Mermaid 语法 非常适合描述形式化、结构化或时序信息,例如 “A 发生,然后 B,如果 X,则 C”。它强制清晰并保证可视化精确地反映文本定义,使其成为 prompt‑as‑code 方法的完美选择。

在提示中加入补充的 Mermaid 代码可以为 LLM 提供 双路径强化

  • 文本 提供上下文、意图、细微差别和软约束,解释目标、澄清歧义并指导整体解释。
  • Mermaid 代码 提供严格、不可协商的逻辑,为文本奠定基础,明确地定义流程、参与者、时序和条件(循环、分支),防止幻觉或误解。

一旦定义好图表,提示工程师只需 引用可视化,无需再次阅读冗长的 Mermaid 代码来理清逻辑流程。这种视觉清晰度相较于 JSON 或 TypeScript 等其他 prompt‑as‑code 方法具有显著优势。


为什么 Mermaid 语法对 LLM 有帮助

对于大型语言模型(LLM)而言,Mermaid 语法在处理结构化信息时提供了若干关键优势:

  • 复杂系统的自然语言描述(例如 “A 使用 B,除非 D 存在,否则调用 C”)本质上是 模糊的;LLM 必须解释上下文并解决语言关系。
  • Mermaid 是一种领域专用语言(DSL),结构高度化且无歧义。A --> B 明确表示 “A 连接到 B”,瞬间揭示实体和有向关系,将自然语言解释任务转化为简单的解析任务。
  • Mermaid 让 LLM 能够直接映射文本到明确定义的概念结构(图、树、时间线),类似于人类瞬间内化流程图而不是密集的文字描述。

示例:描述采购订单流程

为了演示在 LLM 提示中加入补充 Mermaid 语法的效率和结构清晰度,考虑一个常见场景:用户在电商系统中购买商品,涉及三个服务——FrontendOrderServiceInventoryService

步骤

  1. 用户在 Frontend 上点击 Buy
  2. FrontendOrderService 发送请求以启动订单。
  3. OrderService 通过询问 InventoryService 检查库存。
  4. InventoryService 返回库存水平。
  5. 若有库存,OrderServiceInventoryService 扣减库存。
  6. OrderServiceFrontend 确认订单。
  7. Frontend 显示成功信息。

文本化表示

采购过程从 Frontend 向 OrderService 发送请求开始,包含产品 ID 和期望数量。

随后 OrderService 通过调用 InventoryService 检查该产品 ID 的当前库存水平。检查完成后,InventoryService 返回可用数量。

  • 如果有库存:OrderService 向 InventoryService 发送扣减已购买数量的消息,然后将订单确认(包括新订单 ID)返回给 Frontend。
  • 如果没有库存:OrderService 终止该分支,并立即向 Frontend 发送 “Error: Out of Stock” 消息。

无论结果如何,Frontend 最终向用户展示相应的成功或失败信息。


补充的 Mermaid 时序图(DSL)

sequenceDiagram
    participant F as Frontend
    participant O as OrderService
    participant I as InventoryService

    F->>O: Initiate Purchase (Product ID, Qty)
    O->>I: Check Stock (Product ID)
    I-->>O: Stock Available (Qty)
    alt Stock Available
        O->>I: Deduct Stock (Qty)
        O-->>F: Order Confirmation (ID)
    else Stock Unavailable
        O-->>F: Error: Out of Stock
    end
    F->>F: Display Success Message

组合输入弥补了 LLM 的核心弱点:

  • 文本歧义 – Mermaid 提供严格、不可协商的逻辑以支撑描述。
  • 幻觉/创造性 – Mermaid 将模型约束在刚性结构中,防止其捏造不存在的步骤。
  • 长上下文失效 – 图表充当易于解析的摘要,使模型能够交叉引用文本与可视化逻辑,保持长期注意力。

附录:你在提示中应考虑使用的 Mermaid 图表类型

图表类型适用场景示例用例对 LLM 的关键收益
流程图 (graph TD, LR 等)时序流、过程逻辑、决策树绘制复杂函数的执行路径、描述部署流水线、概述用户注册工作流通过显式的节点‑节点连接,轻松提取 过程顺序条件逻辑
时序图 (sequenceDiagram)时序交互、API 调用、消息传递记录微服务之间的逐步交互、客户端‑服务器认证握手、事件发射顺序明确定义 事件顺序参与实体(生命线),有助于错误追踪
类图 (classDiagram)结构、层次、实体之间的关系(面向对象)定义新模块的结构、记录继承关系、展示代码库中对象的组合无歧义地捕获 面向对象概念 如继承、组合以及可见性(public/private)
实体关系图 (ERD) (erDiagram)数据结构、数据模型之间的关系描述数据库模式、可视化外键关系、规划数据迁移提供 实体关系 的精确映射,帮助 LLM 推理数据流和约束
Back to Blog

相关文章

阅读更多 »

切换账户

@blink_c5eb0afe3975https://dev.to/blink_c5eb0afe3975 正如大家所知,我正重新开始记录我的进展,我认为最好在一个不同的…

Strands 代理 + Agent Core AWS

入门指南:Amazon Bedrock AgentCore 目录 - 前置要求(requisitos‑previos) - 工具包安装(instalación‑del‑toolkit) - 创建…