【提示词工程】让模型输出Graphviz图表+文字。阅读流程图结构图,快速学习和理解新知识,打造新的学习方式

继续讨论自:

建议使用:
DeepSeek R1 或 Claude 模型

用Graphviz和我对话,所有回答必须生成Graphviz图表并遵守以下规则:

**代码规范**  
1. 属性必须用逗号分隔:`[shape=record, label="数据流"]`  
2. 每个语句单独成行且分号结尾(含子图闭合)🚀  
3. 中文标签不需要空格的地方不要空格  
4. 图表外可以用文字补充回答  

**URL编码**  
1. 空格转%20,保留英文双引号  
2. URL必须是单行(无换行符)  
3. 特殊符号强制编码:  
   - 加号 `+` → `%2B`  
   - 括号 `()` → `%28%29`  
   - 尖括号 `<>` → `%3C%3E`  
   - 百分号 `%` → `%25` 🚀  

**错误预防**  
```markdown
1. 箭头仅用`->`(禁用→或-%3E等错误格式)  
2. 中文标签必须显式声明:`label="用户登录"`  
3. 节点定义与连线分开书写,禁止合并写法  
4. 每个语句必须分号结尾(含最后一行)💥分号必须在语句末尾而非属性内  
5. 禁止匿名节点(必须显式命名)  
6. 中文标签禁用空格(用%20或下划线替代空格)  
7. 同名节点禁止多父级(需创建副本节点)  
8. 节点名仅限ASCII字符(用label显示中文)🚀  
9. 子图闭合必须加分号:`subgraph cluster1{...};` 🚀  
```

**输出格式**(严格遵循):  
![流程图](https://quickchart.io/graphviz?graph=digraph{rankdir=LR;start[shape=box,label="开始"];process[shape=ellipse,label="处理数据"];start->process[label="流程启动"];})  
[点击跳转或右键复制链接](https://quickchart.io/graphviz?graph=digraph{rankdir=LR;start[shape=box,label="开始"];process[shape=ellipse,label="处理数据"];start->process[label="流程启动"];})

---

### **高频错误自查表**
```graphviz
digraph {
  // ✅正确示例
  jms[label="詹姆斯·西蒙斯"];  // 🚀ASCII节点名+中文label
  nodeA[shape=box,label="收益率%28年化%29"];  // 🚀括号%28%29+百分号%25
  subgraph cluster1{label="第一部分";};  // 🚀子图闭合带分号
  
  // ❌错误示例
  危险节点[label="Python(科学)"];           // 💥括号未编码
  错误基金[label="年化66%"];               // 💥百分号未转义%25
  中文节点名[shape=box];                  // 💥非ASCII节点名
  subgraph cluster2{label="错误子图"}      // 💥缺少闭合分号
}
```

使用效果展示:



流程图
点击跳转或右键复制链接

47 个赞

牛逼,感谢佬的分享

3 个赞

厉害了(`・ω・´)ゞ

1 个赞

优化提示词,防止因为花括号问题出现报错

1 个赞

我试了一个图,也是这个提示

2 个赞

代码和报错可以提供一下,慢慢优化

太强了,大佬

可能是模型的问题了,模型没有严格遵循规则,不够一般图表很复杂才会有这种问题

同一个图,重试了一次,又没这个提示了,不知道为什么

确实要针对这个报错再优化,防止模型出现这个错误


挺好用的

1 个赞

新版本提示词, 额外强调了 尖括号 / 特殊字符 的处理方式

用Graphviz和我对话,所有回答必须生成Graphviz图表(图表外可以附加文字解释)并遵守以下规则:

**代码规范**  
1. 属性必须用逗号分隔:  
   \`\`\`  
   [shape=record, label="数据流"]  
   \`\`\`  
2. 标签/名称使用下划线或驼峰命名:  
   \`\`\`  
   label="缓存_数据" 或 label="cacheData"  
   \`\`\`  
3. 每个语句用分号结尾,节点/连线单独成行  
4. 当标签内容包含尖括号 `< >` 或大括号 `{ }` 时,必须正确转义(如 `&lt;html&gt;` 或 `\\{` `\\}`),或使用 `label=<...>` 的 HTML Label 语法,以避免解析错误。  

**record 形状使用**  
- 如果使用 `shape=record` 并且包含多个 `{...|...}` 分组,最外层必须再用一层花括号包裹,比如:  
  \`\`\`  
  label="{{数据类型|位数}|{量化方式|特殊标识}}"  
  \`\`\`  

**URL编码**  
1. 空格替换为 `%20`:  
   \`\`\`  
   label="读取%20数据"  
   \`\`\`  
2. 保留英文双引号(无需编码)  
3. 确保 URL 是单行(无换行符)

**输出格式**(严格使用此格式):
![流程图](https://quickchart.io/graphviz?graph=digraph{rankdir=LR;%20节点1[shape=box,label="开始"];%20节点2[shape=ellipse,label="处理_数据"];%20节点1->节点2[label=启动];})
[点击查看或复制原始链接](https://quickchart.io/graphviz?graph=digraph{rankdir=LR;%20节点1[shape=box,label="开始"];%20节点2[shape=ellipse,label="处理_数据"];%20节点1->节点2[label=启动];})

(如果图片未显示,请点击链接查看。可通过修改`graph=`后的代码调整图表)
4 个赞

我发现deepseek v3是有输出限制的,问了个解放战争时期包括华东野战军在内的四大野战军的各自的指挥人员以及下辖的部队番号和指挥员刚输出就隐藏了让我换个话题 :joy:不过deepseek r1还算理智给出了完整回答. :grinning:

不知道开源版本会不会规避敏感词,敏感词检测应该是独立于模型的

1 个赞

可能训练时数据集是没有设限的,但是输出加了限制(应该是对返回内容进行了检查,包含敏感词就直接切断隐藏了,所以敏感词应该不在v3模型里).开源的有待佬们测试了:smile:

应该有专门的敏感词检测系统,实时检查deepseek的输出

是的,先过一遍再返回给用户.(我知道,可是我爸不让我说.:smile:)

应该是说到一半就被堵住嘴了,检测系统也不能提前知道模型会不会说

1 个赞

相比较不让模型知道某些数据,或者给模型灌输错误数据集,我觉着deepseek这个方法不错,只需要调整敏感词就可以,不会对大模型造成不可逆的损伤,弄出个脑残的废品.

我试过很多国产模型基本上都是这样,模型其实是知道问的问题怎么答的,但是经过微调或者检测系统所以不能显示。比如问1989年发生了什么