一、背景
利用chatllama的方法进行数据增广,接入chatgpt 4o得到大量创建图表的mermaid代码。投喂大模型第一步就是将mermaid代码渲染成xml,为后续再将xml渲染成jpg提供铺垫。
mermaid介绍
Mermaid 是一种基于 JavaScript 的开源图表生成工具,使用一种简单的 Markdown 风格的语法,创建各种类型的图表和图形,包括流程图、序列图、甘特图、类图等。
得到的JSON文档中包含mermaid代码和markdown代码
二、方法
在 draw.io 网站上自动插入并导出 Mermaid 图表,从json中关键字“id”中的内容作为文件名保存xml文件。
代码功能概述
- validate_mermaid_code:清洗并验证 Mermaid 代码。
def validate_mermaid_code(text):
# 清洗并验证Mermaid代码
if text.startswith('```mermaid') and text.endswith('```'):
text = text[11:-3].strip()
return text
- click_menu_option:模拟点击 draw.io 菜单选项。
def click_menu_option(page, menu_text, option_text):
for ele in page.ele('tag:div@class=geMenubar').eles('tag:a@class=geItem'):
if ele.text == menu_text:
ele.click()
break
for ele in page.eles('tag:td@class=mxPopupMenuItem'):
if ele.text == option_text:
ele.click()
break
- drawio:将 Mermaid 代码插入到 draw.io 中,并导出为 XML 文件。
def drawio(page, text, file_name, error_dir):
try:
click_menu_option(page, '调整图形', '插入')
click_menu_option(page, '插入', '高级')
click_menu_option(page, '高级', 'Mermaid...')
textarea = page.ele(
'tag:textarea@style=box-sizing: border-box; resize: none; width: 100%; height: 354px; margin-bottom: 16px;') #找到重置tag的属性
textarea.clear()
textarea.input(text)
for ele in page.eles('tag:button@class=geBtn gePrimaryBtn'):
if ele.text == '插入':
ele.click()
if page.ele('tag:div@title=出错'):
error_message = page.ele('tag:div@title=出错').text
print(f"Error detected: {error_message}&#