这里写目录标题
cpp
调用 Deepseek API (假设接口类似OpenAI)
输入一句话描述
自动生成PlantUML代码
调用PlantUML渲染生成时序图PNG
cpp
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举例,离线部署请用本地模型接口替换调用部分
cpp
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放到脚本同目录
运行脚本,输入描述,自动生成并渲染时序图
如报问题
你这个错误:
cpp
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