TL;DR: 本文档旨在提供一套SRE团队内部使用的ChatGPT提示词工程与高效对话技巧。核心在于结构化指令、明确角色设定、利用Few-shot提示及有效管理多轮对话上下文,以最大化AI输出的准确性和可用性。
1. 前置条件
- 已注册并拥有ChatGPT访问权限 (推荐GPT-4或更高版本)。
- 理解大型语言模型(LLM)的基本工作原理。
- 熟悉SRE日常工作流程及相关技术术语。
2. 提示词工程基础原则
高效的提示词工程是获取高质量AI输出的关键。以下是核心原则。
2.1. 明确角色与目标
在每次对话开始时,明确界定ChatGPT的角色和期望的输出目标。
你是一名资深的SRE工程师,专注于Kubernetes集群故障诊断。我将向你描述一个问题,你需要提供详细的诊断步骤和潜在解决方案。
预期输出: AI将以SRE工程师的视角进行回应,避免通用性回答。
2.2. 结构化指令与约束
使用清晰、具体的指令,并设定输出格式、长度或内容约束。
诊断目标:分析Pod 'my-app-pod-xyz' 处于 CrashLoopBackOff 状态的原因。
诊断步骤:
1. 检查Pod事件日志。
2. 检查容器日志。
3. 检查Deployment配置。
4. 检查关联的Service和Ingress配置。
请严格按照上述步骤,并针对每个步骤提供具体的命令行示例。输出格式为Markdown列表。
预期输出:
* **1. 检查Pod事件日志:**
`kubectl describe pod my-app-pod-xyz -n default`
... (输出示例)
* **2. 检查容器日志:**
`kubectl logs my-app-pod-xyz -n default`
... (输出示例)
Note: 结构化指令有助于AI理解任务的边界和要求。对于SRE日常的故障排查,这种方法可以显著提升效率。
2.3. Few-shot提示 (少量样本学习)
通过提供几个示例来引导AI生成符合特定模式的输出。这对于统一报告格式或代码片段生成尤其有效。
以下是SRE每日报告的格式示例:
**日期:** 2024-07-27
**关键事件:** 数据库连接池耗尽,影响服务A。
**根本原因:** 应用程序未正确释放连接。
**解决方案:** 紧急部署连接池配置修复。
**后续行动:** 监控连接池指标,进行代码审查。
请根据以下信息,生成一份相同格式的报告:
日期:2024-07-28
关键事件:生产环境API网关延迟升高。
根本原因:上游服务B响应缓慢。
解决方案:临时增加API网关实例。
后续行动:与服务B团队协调优化。
预期输出: AI将生成一份与示例格式完全一致的报告。
3. 高效对话技巧
管理多轮对话上下文是提升ChatGPT实用性的关键。
3.1. 上下文重置与迭代
当对话主题发生变化或AI开始“偏离”时,应明确重置上下文或迭代提示。
忽略之前的所有指令。现在,你是一名Python开发专家。我需要你为我编写一个简单的脚本,用于批量检查服务器的SSH端口连通性。
预期输出: AI将切换角色并专注于新的任务。
3.2. 逐步细化与追问
避免一次性提出过于复杂的问题。通过逐步追问来细化需求。
**用户:** 我需要一个Shell脚本来备份MySQL数据库。
**ChatGPT:** (提供一个基础备份脚本)
**用户:** 这个脚本需要增加一个功能,备份完成后将文件上传到S3。请问S3上传的命令是什么?
**ChatGPT:** (提供AWS CLI的S3上传命令示例)
**用户:** 好的,请将S3上传功能集成到之前的MySQL备份脚本中,并确保S3 bucket名称和Access Key是可配置的。
Warning: 频繁的上下文切换可能导致AI遗忘早期信息。在必要时,重新提供关键上下文信息。
Note: 对于SRE团队,掌握这些提示词工程和对话技巧,可以显著提升使用ChatGPT进行故障诊断、脚本编写、文档生成等任务的效率。我们鼓励团队成员在使用过程中积极探索更多ChatGPT提示词工程方法,并分享ChatGPT怎么用的心得。同时,可以尝试将这些技巧应用于Gemini怎么注册后的Gemini模型,观察其效果。
4. 版本历史
- V1.2 (2024-07-28): 增加Few-shot提示示例,优化对话技巧章节。
- V1.1 (2024-06-15): 细化结构化指令部分,增加SRE应用场景。
- V1.0 (2024-05-20): 初稿发布。