当前位置: 首页 > news >正文

一句话生成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

http://www.dtcms.com/a/342715.html

相关文章:

  • MTK平台蓝牙学习-- 如何查看蓝牙连接参数
  • Vitest 测试框架完全指南 – 极速单元测试解决方案
  • selenium3.141.0执行JS无法传递element解决方法
  • 【自记】Power BI 中 VALUES 和 DISTINCT 在可接收的参数类型上的区别。
  • 【每天一个知识点】 时空组学(Spatiotemporal Omics)
  • Nginx学习记录
  • 移动端网页调试实战 IndexedDB 与本地存储问题的排查与优化
  • 阿里云 AI 搜索 DeepSearch 技术实践
  • 网络流量分析——基础知识(二)(Tcpdump 基础知识)
  • 21.web api 12
  • Mybatis执行SQL流程(六)之Executor执行器
  • ubuntu配置Zotero+翻译插件+坚果云同步
  • 30、ICS/OT 攻击溯源 (电力系统) 模拟组件 - /安全与维护组件/ics-attack-forensics
  • 学习 k 均值聚类算法的心得
  • 记录一次el-table+sortablejs的拖拽bug
  • UTF-8 编码
  • 基于IPO智能粒子优化的IIR滤波器参数识别算法matlab仿真
  • 250821-RHEL9.4上Docker及Docker-Compose的离线安装
  • 大数据仓库分层
  • windows 下控制台只能输入或输入输出的问题
  • Java -- 互斥锁--死锁--释放锁
  • 机器学习两大核心算法:集成学习与 K-Means 聚类详解
  • 机器学习经典算法总结:K-Means聚类与集成学习(Bagging, Boosting, Stacking)
  • 机器学习核心算法笔记:集成学习与聚类算法
  • QT6(QSpinBox和QDoubleSpinBox)
  • java项目数据脱敏工具类实现
  • 【离线安装】CentOS Linux 7 上离线部署Oracle 19c(已成功安装2次)
  • 【数据可视化-96】使用 Pyecharts 绘制主题河流图(ThemeRiver):步骤与数据组织形式
  • 如何使用 DeepSeek 助力工作​
  • C# 13 与 .NET 9 跨平台开发实战(第一章:开发环境搭建与.NET概述-下篇)