06
香农熵 · Shannon Entropy
信息论 · 用于 Prompt 质量诊断
核心公式
H = −Σ p(x) · log₂p(x)
熵高 → 输出分布扁平 → prompt 有歧义
熵低 → 输出分布尖峰 → prompt 很明确
实操:同一个 prompt 跑 5-10 次,观察输出分散程度
不需要算公式,只需要看输出多样性
四级熵诊断
| 症状(跑 5 次后) | 熵级别 | 根因 | 修复 |
|---|---|---|---|
| 结构都不一样,甚至有的用中文有的用英文 | 极高熵 | prompt 完全歧义 | 重写,加格式约束 |
| 结构相同,内容切角差异很大 | 高熵 | 任务范围模糊 | 加 few-shot examples |
| 结构内容相似,但细节不同 | 中熵 | 正常的创造性变化 | 如果这就是目标,可以接受 |
| 几乎完全相同(95%+) | 低熵 | prompt 过于确定 | 如果需要多样性,放松约束 |
代码模式 — Prompt 熵诊断工具
entropy-checker.ts
Claude Code 脚本
// 用于在 Claude Code 中快速诊断 prompt 质量 // 运行:cc run check-entropy --prompt="your prompt" import { Claude } from '@anthropic-ai/sdk'; async function diagnosePromptEntropy( prompt: string, n = 5 ): Promise<EntropDiagnosis> { const client = new Claude(); // 并行跑 n 次 const outputs = await Promise.all( Array.from({ length: n }, () => client.messages.create({ model: 'claude-opus-4-5', max_tokens: 500, messages: [{ role: 'user', content: prompt }], temperature: 1.0, // 使用默认温度,不要降温 }) ) ); const texts = outputs.map(o => o.content[0].text); // 简单结构相似度:比较段落数、总字数、关键词 const structures = texts.map(t => ({ paragraphs: t.split('\n\n').length, wordCount: t.split(' ').length, hasCode: t.includes('```'), hasNumberedList: /^\d+\./m.test(t), })); // 计算结构一致性(越接近 1 = 低熵) const structuralConsistency = calcConsistency(structures); return { sampleOutputs: texts, structuralConsistency, // 0-1,越高越一致 entropyLevel: structuralConsistency > 0.8 ? 'low' : structuralConsistency > 0.5 ? 'medium' : 'high', diagnosis: diagnose(structures, texts), }; } // 在 Claude Code 工作流中: // cc run diagnose-entropy → 识别问题 → cc run fix-prompt → 再诊断
✓ 最快用法
不需要代码。对任何 prompt,脑内运行 3 次,想象输出的结构差异有多大。差异大 → 高熵 → 需要加约束。这个直觉训练 2-3 次就会内化。
降熵工具箱(按效果排序)
- 指定输出格式(JSON/Markdown结构/固定段落数)
- 加 2-3 个 few-shot examples(最有效)
- 指定输出长度范围(字数或 token 数)
- 指定视角/角色("你是...的专家")
- 加负面示例("不要像这样...")
拿走就能用 — 粘贴进你的 CLAUDE.md
CLAUDE.md
Prompt 质量诊断规则
## Prompt 质量诊断(香农熵方法)
### 诊断信号(不需要代码,脑内判断)
- 同一 prompt 跑 3 次,结构都不一样 → 极高熵,需要重写
- 结构相同但内容切角差异大 → 高熵,加 few-shot examples
- 细节略有不同,结构一致 → 正常,可接受
- 几乎完全相同 → 低熵,如需多样性则放松约束
### 降熵工具(按效果排序)
1. 指定输出格式(JSON / 固定段落结构)
2. 加 2-3 个 few-shot examples(最有效)
3. 指定输出长度范围(字数上限)
4. 指定视角/角色
### 触发降熵操作的条件
- 同一 prompt 连续 3 次输出质量差异超过 30%
- 输出语言不稳定(时中时英)
- 每次结构都需要人工调整