TL;DR: 本文档旨在提供ChatGPT提示词(Prompt)精简策略与多模态输出优化方法。目标是提高与LLMs(如GPT-4o)的交互效率与结果准确性。涵盖结构化指令、多步拆解、负面限定及输出格式指定。适用于需要快速获取精准信息、代码或图像的SRE团队成员。
1. 前言与前提条件
版本: V3.0 (2024-08-05)
更新日志:
- V1.0 (2024-05-01): 初始版本,侧重基础提示词结构。
- V2.0 (2024-06-15): 增加多轮对话优化与特定任务模板。
- V3.0 (2024-08-05): 聚焦提示词精简、多模态输出(基于GPT-4o能力)与实际案例。
前提条件:
- 具备ChatGPT或相关LLM(如Gemini国内使用)基础操作经验。
- 了解SRE日常工作流程,包括故障排查、脚本编写与文档撰写。
- 推荐使用GPT-4o模型进行多模态测试。
2. 提示词精简核心策略
精简提示词旨在减少冗余信息,提高模型理解效率,规避潜在的指令误读。此为SRE团队在使用AI工具加速日常工作的关键环节。
2.1 指令结构化与拆解
将复杂目标拆解为独立、明确的步骤或子任务,并用清晰的结构呈现。避免一次性提出过多的开放性要求。
错误示例 (V2.0常见问题):
诊断服务器CPU高负载问题,然后找出导致高负载的进程,并给我一个kill命令来停止它,最后生成一个Bash脚本来监控未来高负载并发送Slack通知。
优化策略:
- 明确角色与任务: 定义模型承担的角色,例如 “你是一名资深Linux系统管理员”。
- 分步指令: 将大任务分解成可执行的小步骤。
- 限定输出: 指定期望的输出格式,例如代码、JSON或纯文本。
优化示例 (GPT-4o 适用):
**角色:** 你是一个资深的Linux系统管理员。
**任务1:** 分析以下 `/var/log/syslog` 片段,找出 CPU 负载异常(超过90%)的根本原因。
**日志片段:** ``` [省略具体日志] ```
**输出:** 仅提供问题分析,不要提供解决方案。
**任务2 (承接任务1的分析):** 基于上述分析,编写一个Bash脚本。该脚本应能在发现 CPU 负载连续5分钟超过90%时,自动通过`kill -9`终止导致高负载的进程,并在执行操作后向指定Slack Webhook发送通知。
**注意:** 脚本变量 (例如 Slack Webhook URL, CPU阈值) 需定义为可配置。
**输出:** 仅返回Bash脚本代码块,无多余说明。
预期输出 (节选 Bash 脚本部分):
#!/bin/bash
# SRE CPU Watchdog Script V1.0
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX"
CPU_THRESHOLD=90
DURATION=300 # 5 minutes in seconds
... [脚本代码] ...
2.2 负面指令与限定
明确告知模型“不要做什么”,这在避免不必要的回复或特定错误类型时非常有效。
示例:
分析以下错误日志,并给出潜在的解决方案。**避免提供任何关于重启服务的建议。**
Note: 负面指令应与正面指令结合使用,以达到最佳效果。纯粹的负面指令可能导致模型难以理解实际意图。
2.3 利用占位符与变量
在提示词中使用占位符,以便后续填充具体内容。这有助于模板化常用提示,类似内部WiKi中的文档模板。
示例:
请为以下微服务 `[微服务名称]` 生成一份 OpenAPI 3.0 规范草稿。
**输入 API 接口列表:**
- `GET /api/v1/health` : 用于 `[健康检查描述]`
- `POST /api/v1/data` : 用于 `[数据提交描述]`
**要求:**
- 包含 `info`, `paths`, `components/schemas` 部分。
- **避免** 包含 `security` 和 `tags` 部分。
3. 多模态输出优化实践 (GPT-4o为主)
GPT-4o等模型支持文本、代码、甚至是图像的生成与理解。优化提示词可确保获得预期多模态输出。
3.1 代码与结构化数据输出
目标: 确保模型输出的代码或数据可以直接复制粘贴使用。
- 明确语言: 指定编程语言或数据格式(如JSON, YAML)。
- 使用代码块: 明确要求将代码或数据放入Markdown代码块中。
示例:
请用 Python 编写一个脚本,用于批量检查 `config.ini` 文件中 `database.host` 字段是否设置为 `localhost`。如果不是,则将其更改为 `localhost`。
**输出格式:** 仅返回 Python 代码块。
预期输出:
```python
import configparser
import os
def check_and_update_db_host(config_file_path):
if not os.path.exists(config_file_path):
print(f"配置文件不存在: {config_file_path}")
return
config = configparser.ConfigParser()
config.read(config_file_path)
if 'database' in config and 'host' in config['database']:
current_host = config['database']['host']
if current_host != 'localhost':
print(f"检测到 database.host 不为 localhost ({current_host}), 正在更新...")
config['database']['host'] = 'localhost'
with open(config_file_path, 'w') as configfile:
config.write(configfile)
print(f"{config_file_path} 已更新: database.host = localhost")
else:
print(f"database.host 已是 localhost。")
else:
print(f"配置文件 {config_file_path} 中缺少 [database] 或 host 字段。")
if __name__ == "__main__":
check_and_update_db_host("config.ini")
```
Warning: 在执行AI生成的代码前,务必进行审查和测试,尤其是在生产环境中。安全是第一位的。
3.2 图像生成指令 (基于GPT-4o图像生成能力或集成DALL-E)
如果使用GPT-4o进行图像生成,需要提供清晰的图像描述。
示例:
**生成图像:**一张现代数据中心的俯视图,其中包含机架、服务器,颜色以蓝色和白色为主,灯光L型,显示出高效和整洁。
Note: 图像生成质量受模型版本和具体API的能力限制。请参见官方文档了解最新支持的功能。
4. 最佳实践与后续步骤
- 迭代优化: 提示词工程是一个持续优化的过程,不断测试并根据结果调整提示词。
- 示例积累: 维护一个SRE提示词模板库,分享给团队成员,便于统一标准。可以通过ChatGPT怎么用或Gemini怎么注册的教程,结合实际案例进行学习和优化。
- 反馈机制: 将不满意的AI输出反馈给团队,共同讨论优化方案。
References:
- Roxi AI Accelerator Platform (内部AI工具平台,用于集成各类LLMs和SRE工具)
- OpenAI GPT-4o API Documentation (Latest Version)
- Prompt Engineering Guide (promptingguide.ai)