一句话生成uml图相关操作
这里写目录标题
- 一、实现思路
- 二、关键技术栈
- 三、示范代码:一句话生成PlantUML时序图并渲染
- 四、运行前准备
- 五、扩展
调用 Deepseek API (假设接口类似OpenAI)输入一句话描述自动生成PlantUML代码调用PlantUML渲染生成时序图PNG
sudo yum install -y java-1.8.0-openjdk-devel
一、实现思路
输入:一句自然语言描述
调用大语言模型API(或者本地部署模型)生成对应的脚本代码(PlantUML代码、Airflow DAG等)
保存脚本到本地文件
调用相关工具渲染脚本生成图片(PlantUML)或者执行(Airflow等)
展示或保存结果
二、关键技术栈
大语言模型:OpenAI API(GPT-4/3.5),或本地模型(GPT-2,LLaMA)
PlantUML渲染:本地Java环境运行plantuml.jar
文件操作:Python内置
子进程调用:Python的subprocess模块调用外部命令
三、示范代码:一句话生成PlantUML时序图并渲染
这里以调用OpenAI API举例,离线部署请用本地模型接口替换调用部分
import requests
import os
import subprocess# Deepseek API配置
DEESEEK_API_KEY = "sk-23ef0511ccec4b729f7e0a62bef75904"
DEESEEK_API_URL = "https://api.deepseek.com/v1/chat/completions" # 请替换成实际接口地址def generate_plantuml_code(description: str) -> str:prompt = f"""
你是一名专业的UML设计师,帮我根据下面的需求描述生成PlantUML格式的时序图代码。需求描述:
{description}请直接输出PlantUML时序图完整代码,确保格式正确,可以直接用PlantUML渲染。
"""headers = {"Authorization": f"Bearer {DEESEEK_API_KEY}","Content-Type": "application/json"}payload = {"model": "deepseek-chat","messages": [{"role": "user", "content": prompt}],"temperature": 0.3,"max_tokens": 400}response = requests.post(DEESEEK_API_URL, json=payload, headers=headers)response.raise_for_status()data = response.json()code = data['choices'][0]['message']['content']return code.strip()def save_to_file(content: str, filename: str):with open(filename, 'w', encoding='utf-8') as f:f.write(content)def render_plantuml(plantuml_file: str):plantuml_jar_path = "./plantuml.jar"if not os.path.isfile(plantuml_jar_path):raise FileNotFoundError(f"{plantuml_jar_path} 不存在,请先下载 PlantUML jar 并放到脚本目录")subprocess.run(["java", "-jar", plantuml_jar_path, plantuml_file], check=True)
# subprocess.run(["java", "-Dfile.encoding=UTF-8", "-jar", "plantuml.jar", plantuml_file], check=True)def main():# 这里是示范用的描述,可以替换成任意一句话description = ("用户登录系统,系统接收用户名和密码,""验证成功后返回登录成功信息,""验证失败则返回错误提示。")print("调用Deepseek生成PlantUML代码...")plantuml_code = generate_plantuml_code(description)print("\n生成的PlantUML代码如下:\n")print(plantuml_code)filename = "output.puml"save_to_file(plantuml_code, filename)print(f"\nPlantUML代码已保存到文件:{filename}")print("调用PlantUML生成时序图PNG...")render_plantuml(filename)print("时序图生成完成,请查看output.png文件。")if __name__ == "__main__":main()
四、运行前准备
申请OpenAI API密钥(或者用自己离线模型接口替换generate_plantuml_code)
下载并安装Java运行环境
下载PlantUML工具包:https://plantuml.com/zh/starting,把plantuml.jar放到脚本同目录
运行脚本,输入描述,自动生成并渲染时序图
如报问题
你这个错误:
ImportError: Can't connect to HTTPS URL because the SSL module is not available.
意思是你的 Python 环境中缺少对 SSL 的支持,导致 requests 访问 HTTPS 网址失败。
这种直接参考之前文档部署ocr 也存在ssl的问题结局方式
最终效果展示
五、扩展
换成Airflow DAG代码生成,调用Airflow执行
用本地大模型微调后替换OpenAI接口
加GUI界面,方便输入和展示结果
多模态生成:比如直接用图形库展示流程图,不必依赖PlantUML