提示词格式与优化
在 AIOps 和 Agent 开发中,Prompt Engineering (提示工程) 的优化不是靠“玄学”,而是一套类似软件工程的迭代流程。
如果你的 Qwen 模型在分析 Kafka 日志时表现不稳定,或者输出的 JSON 格式老是报错,你可以通过以下五个层级进行优化:

1. 结构化你的 System Prompt (使用 XML 标签)
不要给模型一段散乱的文字。大模型对结构化标记(如 XML 标签)非常敏感,这能帮助它区分什么是“规则”,什么是“背景”,什么是“任务”。
优化前:
你是一个运维专家,帮我分析日志,输出 JSON。
优化后:
<role>你是一个资深的 AIOps 专家,专注于分布式系统故障诊断。</role>
<context>当前分析的对象是 Kafka 集群,日志级别为 ${settings.LOG_LEVEL}。</context>
<task>请分析下文中的错误日志,并给出修复建议。</task>
<format_requirement>
- 必须返回纯 JSON 格式。
- 严禁输出任何 Markdown 代码块标签(如 ```json)。
- 包含字段:error_type, severity, suggestion。
</format_requirement>
2. 少样本提示 (Few-Shot Prompting)
这是提升模型输出稳定性最有效的方法。给模型 1-2 个“标准答案”的例子,它会模仿例子的语气、格式和逻辑。
在 Prompt 中加入:
示例输入: "Connection refused at 10.0.0.1:9092"
示例输出:{"error_type": "Network", "severity": "High", "suggestion": "检查目标 IP 端口监听状态"}
3. 思维链引导 (Chain of Thought, CoT)
对于复杂的逻辑(如判断 Ingress 报错是因为后端 Pod 挂了还是证书过期),直接要结果容易出错。引导模型“先思考,再回答”。
优化技巧:
在指令中加入:"请先在 标签内分步骤推导故障原因,最后在 标签内给出结论。"
4. 负向约束 (Negative Constraints)
明确告诉模型“不要做什么”。在运维 Agent 中,这能防止 AI 乱搞。
- "如果日志中没有明确报错,不要尝试猜测原因。"
- "不要输出任何超过 200 字的冗长解释。"
- "在未获得确认前,不要给出重启服务的建议。"
5. 提示词自动优化循环 (Iterative Refinement)
这是一种进阶的工程化思维:
- 测试 (Test): 准备 10 条典型的故障日志。
- 评估 (Eval): 运行你现在的 Prompt,看有多少条输出了错误的 JSON。
- 分析 (Analyze): 发现模型在处理“多行堆栈信息”时会乱码。
- 改进 (Improve): 在 Prompt 中加入“处理多行异常时的特殊规则”。
- 回归 (Repeat): 再次测试,直到准确率达到 95% 以上。
针对你项目的实战建议
既然你正在用 阿里云百炼 (Qwen-max),它对中文指令的遵循度很高。你可以尝试以下这个专门针对 Agentic RAG 的优化模板:
System Prompt:
"你是一个 AIOps 调度员。
- 判断需求:如果用户的问题涉及实时数据(如查 CPU),你必须回复调用工具。
- 知识检索:如果涉及历史方案,请参考检索到的文档。
- 输出控制:最终回复给用户时,语言要简洁,优先列出核心指标。"
你想试试把这个优化后的 Prompt 放到你之前的 **basic_chat** 代码里跑一下,看看 Qwen 的回复质量会有多大提升吗?
