注意:
- 每个步骤,最好是 AI 能理解的程度,这样成功率会高一些
- 使用合适的 prompt
- 如何快速地想到 prompt 方式是非常重要的
- 迭代进化 Prompt 也是十分重要的,能不断完善
- 后期一些 Prompt 甚至可以让 AI 写出生成代码
代码编写辅助:
实践:
Prompt:
1
|
你是一个ChatGPT的资深prompt设计师。我现在需要更好地使用ChatGPT,我需要你帮我设计prompt。
|
QT
开头
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
你是一个资深的QT C++开发工程师,能解决 QT 界面大量重复布局的开发,你根据需求编写这样的代码,如果有大量控件,你擅长的是一个个写出来而不是用循环。
你的局部变量命名风格是l_前缀加上首字母大写,你的成员变量和函数风格是加上this指针。
我后续会给出具体需求,你给我需要的代码。
我给出一些界面需要的控件,你要给我写头文件的声明和构建的源码
我现在有这些控件;
你给出头文件指针的声明。
你给出构建的声明。
我有个布局叫;你给我把这些对象添加进去。
你现在要编写一个类的代码,类是继承QWidget,叫做。你要给出成员变量的声明,控件创建后要马上命名对象名称,这些完成最后布局。成员变量有:。
你是一个资深的QT C++开发工程师,能解决各种各样QT中复杂的问题。
|
辅助编写
最好是 few shot。给出样例的 prompt,后续直接使用即可。
把操作批次化。
上下文学习
1
|
我们来上下文学习,根据我的样例给出输出,不要增加多余的东西,和输出多余的废话。你能精准的理解我的提示并给出输出。
|
input:
output:
成员控件生成:
可优化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
输入:海图btn、导航le、目标lab、目标lv、目标pg、目标tv
输出:
// 海图按钮
QPushButton* chartButton = nullptr;
// 导航输入框
QLineEdit* routeLineEdit = nullptr;
// 目标标签
QLabel* targetLabel = nullptr;
// 目标列表
QListView* targetListView = nullptr;
// 目标进度条
QProgressBar* targetProgressBar = nullptr;
// 目标表格
QTableView* targetTableView = nullptr;
this->chartButton = new QPushButton(tr("Chart"), this);
this->routeLineEdit = new QLineEdit(this);
this->targetLabel = new QLabel(this);
this->targetListView = new QListView(this);
this->targetProgressBar = new QProgressBar(this);
this->targetTableView = new QTableView(this);
this->chartButton->setObjectName("ChartButton");
this->routeLineEdit->setObjectName("RouteLineEdit");
this->targetLabel->setObjectName("TargetLabel");
this->targetListView->setObjectName("TargetListView");
this->targetProgressBar->setObjectName("TargetProgressBar");
this->targetTableView->setObjectName("TargetTableView");
|
1
2
3
4
5
6
7
8
|
输入:
// 海图按钮
QPushButton* chartButton = nullptr;
// 导航输入框
QLineEdit* routeLineEdit = nullptr;
输出:
QPushButton* chartButton = nullptr;
QLineEdit* routeLineEdit = nullptr;
|
1
2
3
4
5
6
7
8
9
10
|
输入:
// 海图按钮
QPushButton* chartButton;
// 导航输入框
QLineEdit* routeLineEdit;
输出:
// 海图按钮
QPushButton* chartButton = nullptr;
// 导航输入框
QLineEdit* routeLineEdit = nullptr;
|
1
2
3
4
5
6
7
8
|
提示:去除中文输出
输入:海图lab、导航lab
输出:
QLabel* l_chartTipLabel = new QLabel(tr("Chart"), this);
QLabel* l_routeTipLabel = new QLabel(tr("Route"), this);
l_chartTipLabel->setObjectName("ChartTipLabel");
l_routeTipLabel->setObjectName("RouteTipLabel");
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
输入:mainV{btnH{listV}, shipinfoG, labH}
输出:
QVBoxLayout* l_mainLayout = new QVBoxLayout;
l_mainLayout->setSpacing(0);
l_mainLayout->setMargin(0);
// First Level Layout
QHBoxLayout* l_btnLayout = new QHBoxLayout;
l_btnLayout->setSpacing(0);
l_btnLayout->setMargin(0);
QGridLayout* l_shipInfoLayout = new QGridLayout;
l_shipInfoLayout->setSpacing(0);
l_shipInfoLayout->setMargin(0);
QHBoxLayout* l_labLayout = new QHBoxLayout;
l_labLayout->setSpacing(0);
l_labLabout->setMargin(0);
// Second Level Layout
QVBoxLayout* l_listLayout = new QVBoxLayout;
l_listLayout->setSpacing(0);
l_listLayout->setMargin(0);
// Arrange Layout
l_mainLayout->addLayout(l_btnLayout);
l_mainLayout->addLayout(l_shipInfoLayout);
l_mainLayout->addLayout(l_labLayout);
l_btnLayout->addLayout(l_listLayout);
this->setLayout(l_mainLayout);
|
1
2
|
输入:mainV{btnH{listV}, shipinfoG, labH}
输出:
|