方法经验
一个优秀的提示词(prompt) + 一个简洁的脚本框架 + chatgpt
编写脚本是一门艺术,您的经验总结对其他人来说很有价值。
在使用 AI 编写脚本的过程中,我经历了从痛苦到愉悦的转变。最初,我只使用 GPT3.5,不断复制粘贴,并试图通过提供终端输出来测试脚本。但 GPT 总是给我不完美的回答,修改脚本时总会遇到新的问题,这让我非常困恼。直到我发现了更好的方法——创建一个大型脚本框架。
我的方法是这样的:首先,我会准备一个大的脚本框架,然后根据需求往里面添加功能。这样做的好处是,即使新添加的功能有 bug 或不满意,也不会影响整个脚本的运行,我只需要专注于修改那个功能即可。
另外,我还学到了提示词的重要性。使用合适的提示词可以引导 AI,防止它答非所问或不知所云。通过不断测试,我发现 AI 的逻辑推理能力是衡量其水平的关键,而像 CommandR+ 和 Llama3-70b 这样的模型在这方面表现出色,值得推荐。
以下是我创建脚本的流程:
- 先提供提示词,等待 AI 索要脚本框架。
- 发送脚本框架给AI,AI说他明白了脚本的结构,问我想实现什么功能
- 写出我的具体需求发送给AI
以下提示词是经过我反复测试得出来的,非常好用,至于我给的脚本,哪怕是小白,不会代码,多看看修改几下就知道怎么用了.
提示词
## 阅读以下所有说明
你是一个专家级程序员,擅长编写Python和Shell脚本,在编程语言方面具有专业知识。我希望你成为我的脚本创作者。我会提供一份原始脚本框架给您,您的目标是帮助我设计出最符合我需求的脚本,你必须遵循以下规则:
- 您的第一个反应是要求我提供原始脚本框架
- 我会发送我的脚本框架给你,你阅读后对我说:我已经了解脚本的整体结构,请问你想实现什么功能
- 你必须等待我回答了我的想法之后,才去生成代码
- 请勿改动脚本框架的整体结构,仅允许在现有框架基础上进行函数的添加和修改。
- 必须提供3个部分的完整代码,包括列出`menu_items`选项,列出添加的新功能函数,列出函数的case选项,他们单独展示
- 你生成的内容必须遵循以下格式:
新增函数名称
更新菜单选项数组 menu_items
添加相应的 case 选项
新增函数
修改说明
- 若回答中包含代码,请使用Markdown代码块格式,并在代码块中注明所使用的编程语言。
- 若代码过长,可以省略中间函数的具体实现细节,但必须保持框架结构的完整性,以便清晰展示整个脚本的逻辑流程。
- 请在每个功能函数的结尾处包含以下内容:
read -n 1 -s -p "按任意键继续...":提示用户按任意键继续,以提供交互性。
return_to_main_menu:确保用户操作完成后能够返回到主菜单。
- 请记得用中文跟我说话! please remember to talk to me in Chinese!
脚本框架
这是一份shell脚本,你可以测试一下
#!/bin/bash
# 定义颜色代码
huang='\033[33m'
bai='\033[0m'
lv='\033[0;32m'
lan='\033[0;34m'
hong='\033[31m'
kjlan='\033[96m'
hui='\e[37m'
# 清屏并显示欢迎信息
echo ""
clear
echo -e "${kjlan}欢迎使用脚本管理工具!${bai}"
echo ""
# 显示博客和CSDN主页
echo -e "${lv}🔗 博客地址: ${kjlan}https://blog.qige.cloudns.biz${bai} ✨"
echo -e "${lv}🔗 CSDN主页: ${kjlan}https://blog.csdn.net/u010066597${bai} ✨"
echo ""
# 显示分隔线
echo -e "${kjlan}============================================================${bai}"
# 定义菜单选项数组
menu_items=(
"打印日期"
"询问我的名字"
"显示系统信息" # 新增的菜单选项
"退出"
)
# 显示菜单函数
display_menu() {
echo ""
echo "请选择一个选项:"
echo "------------------------"
i=1
for item in "${menu_items[@]}"; do
if [ $i -eq ${#menu_items[@]} ]; then # 检查是否为最后一个选项
echo -e "${kjlan}0) ${item} ▶${bai}" # 如果是最后一个选项,序号设为0
else
echo -e "$i) $item" # 添加样式以确保样式生效
fi
((i++))
done
}
# 打印日期函数
print_date() {
date "+%Y-%m-%d %H:%M:%S"
read -n 1 -s -p "按任意键继续..."
return_to_main_menu
}
# 回答名字函数
answer_name() {
echo "阿弥陀佛"
read -n 1 -s -p "按任意键继续..."
return_to_main_menu
}
# 显示系统信息函数
show_system_info() {
echo -e "系统信息:"
echo -e "-----------------"
echo -e "操作系统:${kjlan}$(uname -s)${bai}"
echo -e "主机名:${kjlan}$(hostname)${bai}"
echo -e "当前用户:${kjlan}$(whoami)${bai}"
read -n 1 -s -p "按任意键继续..."
return_to_main_menu
}
# 返回主菜单函数
return_to_main_menu() {
clear
}
# 退出程序函数
exit_program() {
clear
echo -e "${lv}已退出...${bai}"
exit 0
}
# 主函数
main() {
while true; do
# 显示菜单
display_menu
# 显示分隔线
echo "------------------------"
# 获取用户选择
read -p "请输入序号回车:" choice
# 函数选项数组
case $choice in
1) print_date ;;
2) answer_name ;; # 新增选项
3) show_system_info ;; # 新增的case选项
0) exit_program ;;
*) echo "无效的选择。请再次尝试。" ;;
esac
done
}
# 调用主函数
main "$@"
实用小技巧
开头加个: 必须
比如: 你必须怎么样… 能让gpt3和gpt4差不多厉害,
如果你想要获取什么信息, 你可以这样说: 在以下文章中,我想知道啥啥啥,请提供一个表格,包含两列,问题和答案
重要的是这两句话: 请提供一个表格,包含两列,这里的两列可以根据情况修改