效果评估方法 #

为什么需要评估? #

评估的重要性 #

text
┌─────────────────────────────────────────────────────────────┐
│                    评估的价值                                │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  1. 验证效果                                                │
│     └── 确认提示词是否达到预期目标                           │
│                                                             │
│  2. 发现问题                                                │
│     └── 识别提示词的不足之处                                 │
│                                                             │
│  3. 对比优化                                                │
│     └── 比较不同版本的效果差异                               │
│                                                             │
│  4. 持续改进                                                │
│     └── 为优化提供数据支持                                   │
│                                                             │
│  5. 质量保证                                                │
│     └── 确保生产环境稳定可靠                                 │
│                                                             │
└─────────────────────────────────────────────────────────────┘

评估维度 #

text
评估维度:
┌─────────────────────────────────────────────────────────────┐
│                                                             │
│  准确性(Accuracy)                                         │
│  ├── 输出是否正确                                           │
│  ├── 信息是否准确                                           │
│  └── 推理是否合理                                           │
│                                                             │
│  完整性(Completeness)                                     │
│  ├── 是否包含所有要求的内容                                  │
│  ├── 是否遗漏关键信息                                       │
│  └── 是否达到预期深度                                       │
│                                                             │
│  一致性(Consistency)                                      │
│  ├── 多次运行结果是否稳定                                    │
│  ├── 相同输入是否得到相似输出                                │
│  └── 风格是否统一                                           │
│                                                             │
│  格式规范(Format)                                         │
│  ├── 输出格式是否正确                                       │
│  ├── 结构是否清晰                                           │
│  └── 是否易于解析                                           │
│                                                             │
│  效率(Efficiency)                                         │
│  ├── Token 消耗是否合理                                      │
│  ├── 响应时间是否可接受                                      │
│  └── 成本是否可控                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

定量评估 #

评估指标 #

text
常用评估指标:

1. 准确率(Accuracy)
   = 正确输出数 / 总输出数

2. 完整率(Completeness)
   = 包含所有要点的输出数 / 总输出数

3. 格式符合率(Format Compliance)
   = 格式正确的输出数 / 总输出数

4. 一致性分数(Consistency Score)
   = 相同输入得到相似输出的比例

5. 平均 Token 消耗(Average Token Usage)
   = 总 Token 数 / 测试次数

自动化评估方法 #

方法一:规则匹配 #

text
使用预定义规则自动评估输出:

示例:评估代码生成任务
─────────────────────────────────────────────────
def evaluate_code_output(output, requirements):
    score = 0
    max_score = len(requirements)
    
    # 检查是否包含函数定义
    if "def " in output:
        score += 1
    
    # 检查是否有类型注解
    if ":" in output and "->" in output:
        score += 1
    
    # 检查是否有文档字符串
    if '"""' in output or "'''" in output:
        score += 1
    
    # 检查是否有注释
    if "#" in output:
        score += 1
    
    return score / max_score

# 使用示例
requirements = ["函数定义", "类型注解", "文档字符串", "注释"]
output = '''
def add(a: int, b: int) -> int:
    """计算两数之和"""
    # 返回相加结果
    return a + b
'''
score = evaluate_code_output(output, requirements)
print(f"得分: {score * 100}%")  # 输出: 得分: 100%
─────────────────────────────────────────────────

方法二:参考答案对比 #

text
将输出与标准答案对比:

示例:评估问答任务
─────────────────────────────────────────────────
def evaluate_qa_output(output, reference_answer):
    # 简单的关键词匹配
    keywords = reference_answer.lower().split()
    output_lower = output.lower()
    
    matched = sum(1 for kw in keywords if kw in output_lower)
    return matched / len(keywords)

# 使用示例
reference = "Python 是一种高级编程语言,由 Guido van Rossum 创建"
output = "Python 是一种高级编程语言,由 Guido van Rossum 于 1991 年创建"

score = evaluate_qa_output(output, reference)
print(f"相似度: {score * 100}%")
─────────────────────────────────────────────────

方法三:结构化验证 #

text
验证输出是否符合预期结构:

示例:评估 JSON 输出
─────────────────────────────────────────────────
import json

def validate_json_output(output, required_fields):
    try:
        data = json.loads(output)
        
        # 检查必需字段
        missing_fields = []
        for field in required_fields:
            if field not in data:
                missing_fields.append(field)
        
        if missing_fields:
            return False, f"缺少字段: {missing_fields}"
        
        return True, "验证通过"
    
    except json.JSONDecodeError:
        return False, "JSON 格式错误"

# 使用示例
required_fields = ["name", "age", "email"]
output = '{"name": "张三", "age": 25, "email": "test@example.com"}'

is_valid, message = validate_json_output(output, required_fields)
print(f"验证结果: {is_valid}, {message}")
─────────────────────────────────────────────────

批量测试框架 #

text
构建批量测试框架:

─────────────────────────────────────────────────
class PromptEvaluator:
    def __init__(self, prompt_template, test_cases):
        self.prompt_template = prompt_template
        self.test_cases = test_cases
    
    def run_evaluation(self):
        results = []
        
        for case in self.test_cases:
            # 构建提示词
            prompt = self.prompt_template.format(**case['input'])
            
            # 调用模型(伪代码)
            output = call_model(prompt)
            
            # 评估输出
            score = self.evaluate_output(output, case['expected'])
            
            results.append({
                'input': case['input'],
                'output': output,
                'expected': case['expected'],
                'score': score
            })
        
        return results
    
    def evaluate_output(self, output, expected):
        # 实现评估逻辑
        pass
    
    def generate_report(self, results):
        total = len(results)
        passed = sum(1 for r in results if r['score'] >= 0.8)
        
        report = {
            'total_cases': total,
            'passed_cases': passed,
            'pass_rate': passed / total,
            'average_score': sum(r['score'] for r in results) / total
        }
        
        return report

# 使用示例
test_cases = [
    {
        'input': {'question': '什么是 Python?'},
        'expected': 'Python 是一种编程语言'
    },
    {
        'input': {'question': '什么是 Java?'},
        'expected': 'Java 是一种编程语言'
    }
]

evaluator = PromptEvaluator("请回答:{question}", test_cases)
results = evaluator.run_evaluation()
report = evaluator.generate_report(results)
print(report)
─────────────────────────────────────────────────

定性评估 #

人工评估方法 #

text
人工评估流程:

步骤 1:制定评估标准
├── 明确评估维度
├── 定义评分标准
└── 准备评估表格

步骤 2:选择评估人员
├── 领域专家
├── 目标用户
└── 多人评估取平均

步骤 3:执行评估
├── 盲评(不知道版本)
├── 独立评估
└── 记录详细反馈

步骤 4:汇总分析
├── 统计评分
├── 分析反馈
└── 提出改进建议

评估表格示例 #

text
提示词评估表格

评估日期:2024-01-15
评估人员:[姓名]
提示词版本:v1.3

评估维度:
┌─────────────────────────────────────────────────────────────┐
│ 维度          │ 评分(1-5) │ 说明                            │
├─────────────────────────────────────────────────────────────┤
│ 准确性        │    4      │ 内容基本准确,有小错误           │
│ 完整性        │    5      │ 包含所有要求的要点              │
│ 一致性        │    3      │ 多次运行结果有差异              │
│ 格式规范      │    5      │ 格式完全符合要求                │
│ 可读性        │    4      │ 表达清晰,易于理解              │
│ 专业性        │    4      │ 专业术语使用得当                │
├─────────────────────────────────────────────────────────────┤
│ 总体评分      │    4.2    │                                 │
└─────────────────────────────────────────────────────────────┘

优点:
- 输出结构清晰
- 信息完整

不足:
- 有时输出过长
- 部分示例不够典型

改进建议:
- 添加长度限制
- 优化示例选择

用户反馈收集 #

text
收集用户反馈的方法:

1. 显式反馈
   ├── 点赞/点踩
   ├── 评分(1-5星)
   └── 文字评价

2. 隐式反馈
   ├── 是否复制输出
   ├── 是否重新生成
   ├── 停留时间
   └── 是否继续对话

3. A/B 测试
   ├── 对比不同版本
   └── 统计用户偏好

反馈收集界面示例:
─────────────────────────────────────────────────
这个回答对您有帮助吗?

[👍 有帮助]  [👎 没帮助]

如果选择"没帮助",请告诉我们原因:
□ 内容不准确
□ 格式不符合要求
□ 信息不完整
□ 其他:__________
─────────────────────────────────────────────────

评估报告 #

报告结构 #

text
提示词评估报告

1. 基本信息
   ├── 提示词名称/ID
   ├── 评估日期
   ├── 评估人员
   └── 版本号

2. 评估方法
   ├── 定量评估方法
   ├── 定性评估方法
   └── 测试数据集描述

3. 评估结果
   ├── 定量指标汇总
   ├── 定性评估汇总
   └── 问题列表

4. 分析与建议
   ├── 问题分析
   ├── 改进建议
   └── 下一步计划

5. 附录
   ├── 详细测试数据
   └── 原始反馈记录

报告示例 #

text
┌─────────────────────────────────────────────────────────────┐
│                   提示词评估报告                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ 基本信息                                                    │
│ ─────────────────────────────────────────────────────────── │
│ 提示词名称:代码解释助手                                     │
│ 版本:v2.1                                                  │
│ 评估日期:2024-01-15                                        │
│ 评估人员:张三、李四                                         │
│                                                             │
│ 评估方法                                                    │
│ ─────────────────────────────────────────────────────────── │
│ 定量评估:100 个测试用例,自动评分                           │
│ 定性评估:2 名专家人工评估                                   │
│                                                             │
│ 定量评估结果                                                │
│ ─────────────────────────────────────────────────────────── │
│ 指标              │ 结果      │ 目标      │ 状态           │
│ ────────────────────────────────────────────────────────── │
│ 准确率            │ 92%       │ 90%       │ ✅ 达标        │
│ 完整率            │ 88%       │ 90%       │ ⚠️ 未达标      │
│ 格式符合率        │ 95%       │ 95%       │ ✅ 达标        │
│ 平均Token消耗     │ 450       │ 500       │ ✅ 达标        │
│                                                             │
│ 定性评估结果                                                │
│ ─────────────────────────────────────────────────────────── │
│ 维度          │ 评分(1-5) │ 评价                          │
│ ────────────────────────────────────────────────────────── │
│ 准确性        │ 4.5       │ 解释准确,偶有小错误          │
│ 完整性        │ 3.5       │ 有时遗漏边界情况              │
│ 可读性        │ 4.0       │ 表达清晰                      │
│ 专业性        │ 4.5       │ 专业术语使用得当              │
│ 总体评分      │ 4.1       │                               │
│                                                             │
│ 主要问题                                                    │
│ ─────────────────────────────────────────────────────────── │
│ 1. 复杂代码解释不够详细                                     │
│ 2. 有时遗漏边界情况说明                                     │
│ 3. 示例代码有时不够完整                                     │
│                                                             │
│ 改进建议                                                    │
│ ─────────────────────────────────────────────────────────── │
│ 1. 添加"详细解释复杂代码"的要求                              │
│ 2. 明确要求说明边界情况                                     │
│ 3. 要求示例代码可独立运行                                   │
│                                                             │
│ 下一步计划                                                  │
│ ─────────────────────────────────────────────────────────── │
│ 1. 根据建议优化提示词(v2.2)                               │
│ 2. 针对问题用例进行专项测试                                 │
│ 3. 一周后进行复评                                           │
│                                                             │
└─────────────────────────────────────────────────────────────┘

持续评估 #

评估周期 #

text
评估周期建议:

开发阶段:
├── 每次修改后立即评估
├── 小规模测试(10-20 用例)
└── 快速迭代

测试阶段:
├── 每日评估
├── 中等规模测试(100-500 用例)
└── 详细报告

生产阶段:
├── 每周评估
├── 抽样测试 + 用户反馈
└── 监控指标

异常情况:
├── 即时评估
├── 问题用例专项测试
└── 紧急修复

监控指标 #

text
生产环境监控指标:

1. 质量指标
   ├── 用户满意度
   ├── 投诉率
   ├── 重新生成率
   └── 错误率

2. 性能指标
   ├── 平均响应时间
   ├── Token 消耗
   └── 成本

3. 业务指标
   ├── 使用量
   ├── 留存率
   └── 转化率

告警规则:
┌─────────────────────────────────────────────────────────────┐
│ 指标              │ 阈值        │ 告警级别                   │
├─────────────────────────────────────────────────────────────┤
│ 用户满意度        │ < 80%       │ 警告                       │
│ 投诉率            │ > 5%        │ 严重                       │
│ 错误率            │ > 10%       │ 严重                       │
│ 响应时间          │ > 10s       │ 警告                       │
└─────────────────────────────────────────────────────────────┘

评估最佳实践 #

实践一:建立评估基准 #

text
建立标准化的评估基准:

基准内容:
1. 标准测试集
   ├── 覆盖主要场景
   ├── 包含边界情况
   └── 定期更新

2. 评分标准
   ├── 明确的评分规则
   ├── 示例说明
   └── 一致性检查

3. 参考答案
   ├── 专家审核
   ├── 多版本参考
   └── 允许合理差异

实践二:多维度评估 #

text
不要只看单一指标:

❌ 只看准确率:
"准确率 95%,效果很好!"

✅ 多维度评估:
"准确率 95%,但完整率只有 70%,
 用户反馈经常遗漏重要信息"

综合评估维度:
├── 准确性
├── 完整性
├── 一致性
├── 效率
└── 用户满意度

实践三:持续改进 #

text
建立持续改进机制:

改进循环:
评估 → 分析 → 优化 → 验证 → 评估

关键点:
1. 每次评估都要有行动
2. 记录改进历史
3. 验证改进效果
4. 分享经验教训

下一步 #

恭喜你完成了 Prompt Engineering 的核心学习!接下来进入 实战案例,将所学知识应用到实际场景中!

最后更新:2026-04-05