图表生成

Mermaid Markdown 是一种使用 Markdown 语法来创建图表和流程图的工具。Mermaid 是一个基于 JavaScript 的图表绘制工具,它允许用户通过简单的文本描述来生成复杂的图表。在本次的AISE更新中,SmartChat浏览器中开始支持对模型生成的符合Mermaid语法的markdown内容继续宁动态解析,显示成图表。

使用场景

场景1 - 使用Mermaid生成思维导图

  1. SmartChat Web端,对话使用Mermaid生成思维导图,可以使用以下提示词内容
使用mermaid生成一个说明devops知识体系的思维导图,请确保输出的mermaid markdown符合格式规范。

生成思维导图

  1. 点击“预览”,查看Mermaid生成的思维导图

预览1 预览2

  1. Mermaid生成的思维导图点击“放大”,放大的图片可以进行放大、缩小、翻转

放大1 放大2

  1. Mermaid生成的思维导图进行“下载”

下载1 下载2

场景2 - 使用Mermaid生成一个序列图

  1. SmartChat Web端,对话使用Mermaid生成序列图,可以使用以下提示词
使用Mermaid生成一个序列图来说明银行中的存款流程,其中有4个角色: 客户 柜员员工 分行经理 银行系统

生成序列图

  1. 点击“预览”,查看Mermaid生成的序列图

预览1 预览2

场景3 - 使用mermaid生成可视化ER图

  1. SmartChat Web端,对话使用Mermaid生成可视化ER图,可以使用以下提示词
分析以下sql语句的内容,使用mermaid可视化ER图展示其中所涉及的表和他们之间的关联;直接生成ER图,不要其他文字解释
    
SELECT employee_id, department_name, l.city, e.department_id, l.location_id 
FROM employees e, departments d, locations l 
WHERE e.department_id = d.department_id 
AND d.location_id = l.location_id ;

生成可视化ER图

  1. 点击“预览”,查看Mermaid生成的可视化ER图

预览1

场景4 - 使用Mermaid Markdown格式对代码直接输出

  1. 代码直接使用Mermaid Markdown格式输出,可是使用以下提示词
直接输出以下内容,使用mermaid markdown格式

    gitGraph
        commit id: "1"
        commit id: "2"
        branch nice_feature
        checkout nice_feature
        commit id: "3"
        checkout main
        commit id: "4"
        checkout nice_feature
        branch very_nice_feature
        checkout very_nice_feature
        commit id: "5"
        checkout main
        commit id: "6"
        checkout nice_feature
        commit id: "7"
        checkout main
        merge nice_feature id: "customID" tag: "customTag" type: REVERSE
        checkout very_nice_feature
        commit id: "8"
        checkout main
        commit id: "9"

生成git图

  1. 点击“预览”,查看Mermaid生成的git图

预览1 预览2

场景5 - explain_chat 提示词

explain_chat 是本次版本更新中新提供的提示词,可以针对某段代码生成对应的流程图和时序图,帮助开发人员可视化的理解代码结构。

  1. 在SmartChat Web中输入 /explain_chat 即可调出词提示词的输入界面,在其中输入 代码语言 类型和代码内容

提示词

  1. 点击 Submit 后即可以完成对应的流程图和时序图的生成,对于以下示例代码所生成的图如下 示例代码:
    public boolean insert(String word) {
        TrieNode current = root;
        for (char c : word.toCharArray()) {
            if (!current.hasChild(c)) {
                current.children.put(c, new TrieNode(c));
            }
            current = current.children.get(c);
        }
        if (current.isEndOfWord) {
            return false;
        }
        current.isEndOfWord = true;
        return true;
    }

流程图

预览2

时序图

预览2