Trae等AI一键编程的提示词生成工具
本帖最后由 top777 于 2025-5-22 08:41 编辑原作者是头条的“懂营养的小熊”(没想到一个Trae的提示词工具,居然会有这么多人喜欢? - 今日头条)
prompt_generator.py
import sys
import json
from PyQt5.QtWidgets import (QApplication, QMainWindow, QWidget, QVBoxLayout,
QHBoxLayout, QComboBox, QLabel, QPushButton,
QTextEdit, QLineEdit, QGroupBox, QGridLayout,
QMessageBox)
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from prompt_generator_logic import PromptGeneratorLogic
class PromptGenerator(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('提示词生成工具')
self.setGeometry(100, 100, 1200, 800)
# 初始化提示词生成器
self.prompt_logic = PromptGeneratorLogic()
# 创建主窗口部件
main_widget = QWidget()
self.setCentralWidget(main_widget)
main_layout = QVBoxLayout(main_widget)
# 创建顶部控制区域
top_control = self.create_top_control()
main_layout.addWidget(top_control)
# 创建中间内容区域
content_area = self.create_content_area()
main_layout.addWidget(content_area)
# 创建底部输出区域
output_area = self.create_output_area()
main_layout.addWidget(output_area)
# 初始化数据
self.init_data()
def create_top_control(self):
group = QGroupBox("基本设置")
layout = QGridLayout()
# Ollama模型选择
layout.addWidget(QLabel("使用本地Ollama模型:"), 0, 0)
self.ollama_combo = QComboBox()
self.ollama_combo.addItems(["否", "是"])
layout.addWidget(self.ollama_combo, 0, 1)
# 本地模型管理
self.model_combo = QComboBox()
self.model_combo.setEnabled(False)
layout.addWidget(self.model_combo, 0, 2)
refresh_btn = QPushButton("刷新模型")
refresh_btn.setEnabled(False)
refresh_btn.setObjectName("refresh_btn")
layout.addWidget(refresh_btn, 0, 3)
load_btn = QPushButton("加载模型")
load_btn.setEnabled(False)
load_btn.setObjectName("load_btn")
layout.addWidget(load_btn, 0, 4)
# 职业选择
layout.addWidget(QLabel("职业:"), 1, 0)
self.profession_combo = QComboBox()
self.profession_combo.addItems([
"教师", "设计师", "摄影师", "程序员", "医生", "律师", "工程师",
"作家", "记者", "会计", "销售", "市场专员", "人力资源", "行政",
"客服", "翻译", "导游", "厨师", "护士", "建筑师", "艺术家",
"音乐家", "演员", "运动员", "科学家", "研究员", "分析师",
"顾问", "企业家", "自由职业者"
])
layout.addWidget(self.profession_combo, 1, 1, 1, 4)
# GUI框架选择
layout.addWidget(QLabel("GUI框架:"), 2, 0)
self.gui_combo = QComboBox()
self.gui_combo.addItems(["PyQt5", "Kivy", "Tkinter", "Wax", "Libavg", "PySimpleGUI"])
layout.addWidget(self.gui_combo, 2, 1, 1, 4)
# 数据库选择
layout.addWidget(QLabel("数据库:"), 3, 0)
self.db_combo = QComboBox()
self.db_combo.addItems(["SQLite3", "PyMySQL", "Psycopg2", "PyMongo", "cx_Oracle", "Redis"])
layout.addWidget(self.db_combo, 3, 1, 1, 4)
# 界面区块
layout.addWidget(QLabel("界面区块:"), 4, 0)
self.blocks_combo = QComboBox()
self.blocks_combo.addItems(["1", "2", "3", "4", "5"])
layout.addWidget(self.blocks_combo, 4, 1, 1, 4)
# 界面风格
layout.addWidget(QLabel("界面风格:"), 5, 0)
self.style_combo = QComboBox()
self.style_combo.addItems([
"浅色系清新简洁", "深色系金属科幻", "自然生态风格",
"极简主义", "复古怀旧", "未来科技感",
"商务专业", "艺术创意", "游戏风格",
"工业风格"
])
layout.addWidget(self.style_combo, 5, 1, 1, 4)
group.setLayout(layout)
return group
def create_content_area(self):
group = QGroupBox("界面布局设置")
layout = QGridLayout()
# 创建五个区域的输入框和粘贴按钮
positions = ["顶部", "左侧", "中间", "右侧", "底部"]
self.position_inputs = {}
for i, pos in enumerate(positions):
layout.addWidget(QLabel(f"{pos}:"), i, 0)
line_edit = QLineEdit()
self.position_inputs = line_edit
layout.addWidget(line_edit, i, 1)
paste_btn = QPushButton("粘贴")
paste_btn.clicked.connect(lambda checked, p=pos: self.paste_text(p))
layout.addWidget(paste_btn, i, 2)
group.setLayout(layout)
return group
def create_output_area(self):
group = QGroupBox("输出区域")
layout = QVBoxLayout()
# 输出文本框
self.output_text = QTextEdit()
self.output_text.setReadOnly(True)
layout.addWidget(self.output_text)
# 按钮区域
btn_layout = QHBoxLayout()
generate_btn = QPushButton("生成提示词")
generate_btn.clicked.connect(self.generate_prompt)
copy_btn = QPushButton("复制提示词")
copy_btn.clicked.connect(self.copy_prompt)
btn_layout.addWidget(generate_btn)
btn_layout.addWidget(copy_btn)
layout.addLayout(btn_layout)
group.setLayout(layout)
return group
def init_data(self):
# 连接信号和槽
self.ollama_combo.currentTextChanged.connect(self.toggle_ollama_options)
def toggle_ollama_options(self, text):
enabled = text == "是"
self.model_combo.setEnabled(enabled)
self.model_combo.parent().findChild(QPushButton, "refresh_btn").setEnabled(enabled)
self.model_combo.parent().findChild(QPushButton, "load_btn").setEnabled(enabled)
def paste_text(self, position):
"""从剪贴板粘贴文本到指定位置"""
clipboard = QApplication.clipboard()
text = clipboard.text()
if text:
self.position_inputs.setText(text)
def generate_prompt(self):
"""生成提示词"""
config = {
'use_ollama': self.ollama_combo.currentText() == "是",
'ollama_model': self.model_combo.currentText() if self.ollama_combo.currentText() == "是" else None,
'profession': self.profession_combo.currentText(),
'gui_framework': self.gui_combo.currentText(),
'database': self.db_combo.currentText(),
'blocks': self.blocks_combo.currentText(),
'style': self.style_combo.currentText(),
'top': self.position_inputs["顶部"].text(),
'left': self.position_inputs["左侧"].text(),
'center': self.position_inputs["中间"].text(),
'right': self.position_inputs["右侧"].text(),
'bottom': self.position_inputs["底部"].text()
}
prompt = self.prompt_logic.generate_prompt(config)
self.output_text.setText(prompt)
def copy_prompt(self):
"""复制提示词到剪贴板"""
text = self.output_text.toPlainText()
if text:
clipboard = QApplication.clipboard()
clipboard.setText(text)
QMessageBox.information(self, "提示", "提示词已复制到剪贴板!")
else:
QMessageBox.warning(self, "警告", "没有可复制的提示词!")
if __name__ == '__main__':
app = QApplication(sys.argv)
window = PromptGenerator()
window.show()
sys.exit(app.exec_())
prompt_generator_logic.py
class PromptGeneratorLogic:
def __init__(self):
self.profession_requirements = {
"教师": "需要具备教学经验,熟悉课程设计,能够进行课堂管理",
"设计师": "需要具备创意设计能力,熟悉设计软件,了解设计趋势",
"摄影师": "需要掌握摄影技巧,熟悉后期处理,了解构图原理",
# ... 其他职业的要求
}
self.style_descriptions = {
"浅色系清新简洁": "使用柔和的浅色调,简洁的布局,清晰的视觉层次",
"深色系金属科幻": "采用深色背景,金属质感元素,科技感十足的界面设计",
"自然生态风格": "使用自然色调,有机形状,生态友好的设计元素",
"极简主义": "极简的界面设计,留白空间充足,重点突出核心功能",
"复古怀旧": "采用复古配色,经典设计元素,怀旧风格的界面",
"未来科技感": "使用霓虹色调,动态效果,未来感十足的界面设计",
"商务专业": "采用专业的配色方案,规整的布局,突出商务属性",
"艺术创意": "富有创意的设计元素,独特的视觉表现,艺术感强",
"游戏风格": "动感的界面设计,游戏化元素,互动性强",
"工业风格": "粗犷的设计元素,工业质感,功能性强"
}
def generate_prompt(self, config):
"""根据配置生成提示词"""
prompt_parts = []
# 添加职业相关要求
if config.get('profession') in self.profession_requirements:
prompt_parts.append(f"职业要求:{self.profession_requirements]}")
# 添加GUI框架相关
prompt_parts.append(f"使用{config.get('gui_framework', 'PyQt5')}框架开发")
# 添加数据库相关
prompt_parts.append(f"使用{config.get('database', 'SQLite3')}作为数据库")
# 添加界面区块说明
prompt_parts.append(f"界面分为{config.get('blocks', '3')}个区块")
# 添加界面风格说明
style = config.get('style', '浅色系清新简洁')
if style in self.style_descriptions:
prompt_parts.append(f"界面风格:{self.style_descriptions}")
# 添加各个区域的具体要求
for position in ['top', 'left', 'center', 'right', 'bottom']:
if config.get(position):
prompt_parts.append(f"{position}区域要求:{config}")
# 添加Ollama模型相关
if config.get('use_ollama'):
prompt_parts.append(f"使用本地Ollama模型:{config.get('ollama_model', '默认模型')}")
return "\n".join(prompt_parts)
保温板 发表于 2025-5-22 00:34
感谢楼主分享,再发个成品吧
不是我的原创,传播成品要征求原作者意见。不好意思。 提示词工具原理整体所有AI模型系统自带提示词按照格式输出优化后的词语 最后达到ai让ai帮我们绘图等。 请教,为什么我的系统,运行一闪,没有窗口? 本帖最后由 top777 于 2025-5-21 14:53 编辑
wapj2900958 发表于 2025-5-21 14:35
请教,为什么我的系统,运行一闪,没有窗口?
是不是没装QT5模块?建议下载trae,放到里面进行运行,这样报错信息能够被trae捕捉并提出建议。 追风营销 发表于 2025-5-21 15:00
提示词工具原理整体所有AI模型系统自带提示词按照格式输出优化后的词语 最后达到ai让ai帮我们绘图等。
你这个设计的只是简单人工词语组合 不能称为提示词工具 下载试试看,感谢提供原创分享! 已经在trae上运行起来啦,
不过不会用啊,
怎么填写呢? 感觉很高大上的样子,不知道使用效果是不是特别明显 可以优化的余地还有很多,加油 烦请大佬提供一下 使用方法