📐 思维模型手册/香农熵 · Shannon Entropy
信息论10 分钟阅读13 天前

06香农熵 · Shannon Entropy

信息论 · 用于 Prompt 质量诊断
#prompt#diagnosis𝕏 分享
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%
- 输出语言不稳定(时中时英)
- 每次结构都需要人工调整
← 上一篇识别信号表 · Signal Reference下一篇 →PID 控制器 · PID Controller