提示词的基本结构
一个完整的高质量 Prompt 通常包含 4 个部分:
角色 + 背景 + 任务 + 输出格式
你是一名资深 DevOps 架构师。
背景:
公司使用 GitLab + AWS + Kubernetes。
任务:
设计一套 GitLab CI/CD pipeline,实现:
1. build
2. security scan
3. deploy
要求:
给出 YAML 示例。
输出格式:
1. 架构说明
2. pipeline 示例
3. 注意事项技巧
1. 技巧:固定模板(强约束输入结构)
角色:
背景:
任务:
约束:
输出格式:举例
角色:你是资深 DevOps 工程师
背景:GitLab + AWS EKS
任务:生成 CI/CD pipeline
约束:
- 必须包含 build / scan / deploy
- 使用 helm
输出格式:
1. 架构说明
2. gitlab-ci.yml
3. 风险点2. 技巧:强制结构化输出
请严格按 JSON 输出:
{
"steps": [],
"risk": [],
"yaml": ""
}为什么有效
- 模型本质是“补全文本”,不限制就会发散
- 结构化可以直接接 API / 自动化
3. 技巧:显式步骤分解
请按以下步骤执行:
- 分析需求
- 设计方案
- 输出代码
为什么有效
- 强化中间推理链(降低错误传播)
- 对复杂问题显著提升正确率
4. 技巧:用例驱动
示例:
输入:部署 nginx
输出:<yaml>
输入:部署 redis
输出:<yaml>
现在输入:部署 mysql为什么有效
- 模型是“模式匹配器”
- 示例 > 抽象规则
5. 技巧:显式边界
如果不确定,请回答“不知道” 不要编造
为什么有效
- 默认模型倾向“编合理答案”
- 明确允许“不知道”可降低幻觉
6. 技巧:角色 + 经验年限 + 场景
你是一名拥有10年经验的 Kubernetes 架构师
为什么有效
- 激活更专业的语料分布
- 输出更偏“专家风格”
7. 技巧:把杂乱输入转结构
❌ 原始:
帮我看看这个系统有问题,AWS EC2 CPU很高然后服务不稳定
✅ 优化:
问题:
- EC2 CPU 持续 90%+
- 服务间歇性超时
环境:
- AWS
- Kubernetes
目标:
定位原因并给解决方案为什么有效
- 减少模型“理解成本”
- 提升分析质量
8. 技巧:限制范围
只回答与 Kubernetes 相关内容 不要扩展到其他领域
- 请给出最标准答案(不要发散)
- 请提供多个不同方案 (想要更发散)
为什么有效
- Transformer 容易“联想扩散”
- 约束能提高聚焦度
9. 技巧:让模型自己 review
请检查你的答案:
- 是否有错误
- 是否遗漏步骤
为什么有效
- 相当于“二次推理”
- 实测能减少低级错误
10. 分层 Prompt(工程级最佳实践)
- System Prompt(全局规则)
- Developer Prompt(业务逻辑)
- User Prompt(用户输入)
System
你必须输出结构化 YAML,不允许解释性废话
Developer
生成 Kubernetes deployment
User
部署 nginx,2副本总结
Prompt 工程本质是:把“模糊问题”变成“结构化指令”
可以记住这 4 个关键词:
结构化 + 约束 + 分步 + 示例
常见问题
为什么很多模型将提示词分为系统提示词(system prompt)和用户提示词(user prompt)
| 类型 | 作用 | 优先级 |
|---|---|---|
| System Prompt | 定义行为规则 | 最高 |
| User Prompt | 当前任务 | 中 |
| 历史对话 | 上下文 | 低 |
区分 system 和 user,本质是把“模型控制权”从用户手里拿回来,交给系统。
高级技巧
11. 链式思考(Chain of Thought)
请一步步思考:
1. 首先分析问题
2. 然后列出可能的方案
3. 最后给出推荐方案和理由为什么有效
- 强制模型展示推理过程
- 提高复杂问题的准确率
- 便于发现逻辑错误
12. 负面提示(Negative Prompting)
请设计 CI/CD 方案
不要:
- 使用已废弃的工具
- 包含硬编码密钥
- 忽略安全扫描为什么有效
- 明确禁止项比隐含要求更有效
- 避免常见错误
13. 温度控制建议
不同任务适合不同温度参数:
| 任务类型 | 推荐温度 | 说明 |
|---|---|---|
| 代码生成 | 0.2-0.3 | 需要精确性 |
| 架构设计 | 0.5-0.7 | 需要创造性 |
| 文档翻译 | 0.1-0.2 | 需要准确性 |
| 头脑风暴 | 0.8-1.0 | 需要多样性 |
14. 上下文窗口管理
当对话过长时:
总结前面的讨论:
- 已确定使用 GitLab CI
- 目标环境是 AWS EKS
- 需要集成 Trivy 安全扫描
现在继续:设计 deployment 策略为什么有效
- 避免上下文丢失
- 保持对话聚焦
实战案例
案例1:生成 Kubernetes 配置
❌ 低质量提示:
帮我写个 k8s 配置✅ 高质量提示:
角色:Kubernetes 配置专家
任务:生成 production 级别的 nginx deployment
要求:
- 3个副本,资源限制 CPU 200m,内存 256Mi
- 健康检查:HTTP /health,端口 80
- 滚动更新策略:maxSurge 1,maxUnavailable 0
- 添加必要的 labels 和 annotations
输出:完整的 YAML,包含注释案例2:故障排查
❌ 低质量提示:
pod 起不来怎么办✅ 高质量提示:
问题:Pod 一直处于 CrashLoopBackOff
环境:
- Kubernetes 1.28
- AWS EKS
- 应用:Java Spring Boot
现象:
- kubectl logs 显示 OOMKilled
- 当前资源限制:memory 512Mi
请提供:
1. 可能的原因分析
2. 排查步骤
3. 解决方案(包含 YAML 配置调整)案例3:代码审查
角色:资深 DevOps 代码审查员
任务:审查以下 Dockerfile
审查维度:
1. 安全性(基础镜像、用户权限)
2. 性能(层缓存、镜像大小)
3. 最佳实践(多阶段构建、.dockerignore)
输出格式:
- 问题列表(严重程度:高/中/低)
- 优化建议
- 改进后的 Dockerfile
Dockerfile:
[粘贴代码]常见陷阱
陷阱1:过度依赖模型
❌ 错误做法:
直接把生成的 YAML 用于生产环境✅ 正确做法:
1. 生成配置
2. 人工审查
3. 在测试环境验证
4. 逐步推广到生产陷阱2:提示词过于复杂
保持简洁:
- 一次只问一个核心问题
- 避免嵌套多层条件
- 复杂任务拆分为多轮对话
陷阱3:忽略版本差异
请明确版本:
- Kubernetes 1.28(不是 1.20)
- Helm 3.x(不是 Helm 2)
- GitLab CI 最新语法提示词模板库
模板1:技术方案设计
角色:[技术领域]架构师,[X]年经验
背景:
- 技术栈:[列出关键技术]
- 规模:[用户量/数据量/并发]
- 约束:[成本/时间/合规要求]
目标:设计[具体系统/功能]
必须包含:
1. 架构图(文字描述)
2. 技术选型及理由
3. 关键风险点
4. 实施步骤
输出格式:Markdown,包含代码示例模板2:故障诊断
问题:[一句话描述]
环境:
- 基础设施:[云平台/版本]
- 应用栈:[语言/框架/版本]
- 监控数据:[CPU/内存/日志关键信息]
已尝试:
- [操作1]:[结果]
- [操作2]:[结果]
请提供:
1. 根因分析(按可能性排序)
2. 验证步骤(可执行的命令)
3. 解决方案(临时 + 长期)模板3:代码生成
语言/框架:[Python/Go/Shell/YAML]
功能:[具体描述]
输入:[数据格式/参数]
输出:[期望结果]
约束:
- 必须包含错误处理
- 添加必要注释
- 遵循[PEP8/Go规范]风格
请提供:
1. 完整代码
2. 使用示例
3. 测试用例(如适用)工具推荐
Prompt 管理工具
- LangChain:Prompt 模板管理和链式调用
- PromptLayer:Prompt 版本控制和 A/B 测试
- OpenPrompt:开源 Prompt 工程框架
测试和优化
bash
# 使用不同 Prompt 对比效果
for prompt in prompt_v1.txt prompt_v2.txt; do
echo "Testing: $prompt"
cat $prompt | llm-cli --model gpt-4 --temperature 0.3
done其他
提示词市场
- 提供图像和视频的提示词
学习资源
- OpenAI Prompt Engineering Guide:官方最佳实践
- Anthropic Prompt Library:Claude 优化提示词集合
- Learn Prompting:系统化教程网站
持续改进
建立 Prompt 知识库:
project/
├── prompts/
│ ├── k8s-deployment.md
│ ├── ci-cd-pipeline.md
│ └── troubleshooting.md
└── README.md # 记录哪个 Prompt 效果最好