效果评估方法 #
为什么需要评估? #
评估的重要性 #
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