Prompt 质量评估体系构建
Prompt 质量直接决定 AI 应用的输出效果。如何科学评估 Prompt 质量?如何建立自动化评估体系?本文将详解 Prompt 质量评估的完整方法论和实战方案。
一、为什么需要质量评估
1.1 Prompt 质量挑战
Prompt 质量痛点:
┌─────────────────────────────────────┐
│ 1. 效果难以量化 │
│ - 主观性强,缺乏客观标准 │
│ - 不同场景标准不同 │
├─────────────────────────────────────┤
│ 2. 评估成本高 │
│ - 人工评估耗时耗力 │
│ - 难以大规模评估 │
├─────────────────────────────────────┤
│ 3. 缺乏系统性 │
│ - 评估维度不全面 │
│ - 评估流程不规范 │
├─────────────────────────────────────┤
│ 4. 持续监控困难 │
│ - 模型更新影响未知 │
│ - 效果下降难以及时发现 │
└─────────────────────────────────────┘
1.2 评估体系价值
- 量化效果:用数据说话,避免主观判断
- 降低成本:自动化评估减少人工成本
- 持续优化:建立基线,持续改进
- 风险管控:及时发现效果下降
二、评估指标体系
2.1 多维度评估框架
Prompt 质量评估框架:
┌─────────────┐
│ Prompt 质量 │
└──────┬──────┘
│
┌──────────────────┼──────────────────┐
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ 准确性 │ │ 效率性 │ │ 稳定性 │
└────┬────┘ └─────┬─────┘ └─────┬─────┘
│ │ │
┌────▼────┐ ┌─────▼─────┐ ┌─────▼─────┐
│ 任务完成│ │ 响应时间 │ │ 一致性 │
│ 格式正确│ │ Token 用量 │ │ 鲁棒性 │
│ 逻辑合理│ │ 成本 │ │ 可重复性 │
└─────────┘ └───────────┘ └───────────┘
2.2 核心评估指标
准确性指标:
| 指标 | 定义 | 计算方法 | 权重 |
|---|---|---|---|
| 任务完成率 | 成功完成的任务比例 | 成功数/总数 | 30% |
| 格式正确率 | 输出格式符合要求的比例 | 格式正确数/总数 | 20% |
| 内容准确率 | 输出内容准确的比例 | 准确内容数/总内容数 | 25% |
| 逻辑合理性 | 输出逻辑连贯的比例 | 逻辑合理数/总数 | 15% |
| 用户满意度 | 用户评分平均值 | 总分/评价数 | 10% |
效率性指标:
| 指标 | 定义 | 计算方法 | 目标值 |
|---|---|---|---|
| 平均响应时间 | 从请求到响应的平均时间 | 总时间/请求数 | < 2s |
| P95 响应时间 | 95% 请求的响应时间 | 排序后 95% 位置值 | < 3s |
| 平均 Token 用量 | 每次请求的平均 Token 数 | 总 Token/请求数 | 根据场景 |
| Token 成本 | 每次请求的平均成本 | 总成本/请求数 | < $0.01 |
稳定性指标:
| 指标 | 定义 | 计算方法 | 目标值 |
|---|---|---|---|
| 输出一致性 | 相同输入输出一致的比例 | 一致数/总数 | > 95% |
| 错误率 | 请求失败的比例 | 失败数/总数 | < 1% |
| 边界场景通过率 | 边界场景测试通过比例 | 通过数/总数 | > 90% |
2.3 指标计算公式
# metrics.py
from typing import List, Dict
from dataclasses import dataclass
@dataclass
class QualityMetrics:
"""质量指标"""
accuracy_score: float # 准确性得分
efficiency_score: float # 效率性得分
stability_score: float # 稳定性得分
overall_score: float # 综合得分
class PromptQualityEvaluator:
"""Prompt 质量评估器"""
def __init__(self, weights: Dict[str, float] = None):
# 权重配置
self.weights = weights or {
'accuracy': 0.6, # 准确性 60%
'efficiency': 0.2, # 效率性 20%
'stability': 0.2 # 稳定性 20%
}
def evaluate(
self,
test_results: List[Dict],
baseline_metrics: Dict = None
) -> QualityMetrics:
"""
评估 Prompt 质量
Args:
test_results: 测试结果列表
baseline_metrics: 基准指标(可选)
Returns:
QualityMetrics 质量指标
"""
# 计算准确性得分
accuracy_score = self._calculate_accuracy(test_results)
# 计算效率性得分
efficiency_score = self._calculate_efficiency(test_results)
# 计算稳定性得分
stability_score = self._calculate_stability(test_results)
# 计算综合得分
overall_score = (
accuracy_score * self.weights['accuracy'] +
efficiency_score * self.weights['efficiency'] +
stability_score * self.weights['stability']
)
return QualityMetrics(
accuracy_score=accuracy_score,
efficiency_score=efficiency_score,
stability_score=stability_score,
overall_score=overall_score
)
def _calculate_accuracy(self, test_results: List[Dict]) -> float:
"""计算准确性得分"""
if not test_results:
return 0.0
# 任务完成率(30%)
task_completion = sum(
1 for r in test_results if r.get('task_completed', False)
) / len(test_results)
# 格式正确率(20%)
format_correct = sum(
1 for r in test_results if r.get('format_correct', False)
) / len(test_results)
# 内容准确率(25%)
content_accuracy = sum(
r.get('content_accuracy', 0) for r in test_results
) / len(test_results)
# 逻辑合理性(15%)
logic_reasonable = sum(
1 for r in test_results if r.get('logic_reasonable', False)
) / len(test_results)
# 用户满意度(10%)
user_satisfaction = sum(
r.get('user_rating', 0) for r in test_results
) / len(test_results) / 5.0 # 假设 5 分制
accuracy_score = (
task_completion * 0.30 +
format_correct * 0.20 +
content_accuracy * 0.25 +
logic_reasonable * 0.15 +
user_satisfaction * 0.10
)
return accuracy_score
def _calculate_efficiency(self, test_results: List[Dict]) -> float:
"""计算效率性得分"""
if not test_results:
return 0.0
# 平均响应时间(40%)
avg_latency = sum(
r.get('latency', 0) for r in test_results
) / len(test_results)
latency_score = max(0, 1 - avg_latency / 5.0) # 5 秒为满分
# P95 响应时间(30%)
latencies = sorted([r.get('latency', 0) for r in test_results])
p95_index = int(len(latencies) * 0.95)
p95_latency = latencies[p95_index] if p95_index < len(latencies) else latencies[-1]
p95_score = max(0, 1 - p95_latency / 8.0) # 8 秒为满分
# Token 用量(30%)
avg_tokens = sum(
r.get('token_usage', 0) for r in test_results
) / len(test_results)
token_score = max(0, 1 - avg_tokens / 2000) # 2000 token 为满分
efficiency_score = (
latency_score * 0.40 +
p95_score * 0.30 +
token_score * 0.30
)
return efficiency_score
def _calculate_stability(self, test_results: List[Dict]) -> float:
"""计算稳定性得分"""
if not test_results:
return 0.0
# 输出一致性(50%)
consistency_count = 0
input_output_map = {}
for r in test_results:
input_key = r.get('input', '')
output = r.get('output', '')
if input_key in input_output_map:
if input_output_map[input_key] == output:
consistency_count += 1
else:
input_output_map[input_key] = output
total_comparisons = len(test_results) - len(input_output_map)
consistency = consistency_count / total_comparisons if total_comparisons > 0 else 1.0
# 错误率(30%)
error_count = sum(
1 for r in test_results if r.get('error', False)
)
error_rate = error_count / len(test_results)
error_score = 1 - error_rate
# 边界场景通过率(20%)
boundary_tests = [
r for r in test_results if r.get('is_boundary', False)
]
if boundary_tests:
boundary_pass = sum(
1 for r in boundary_tests if r.get('passed', False)
) / len(boundary_tests)
else:
boundary_pass = 1.0
stability_score = (
consistency * 0.50 +
error_score * 0.30 +
boundary_pass * 0.20
)
return stability_score
三、自动化评估方法
3.1 基于规则的评估
实现规则评估器:
# rule_based_evaluator.py
import re
import json
from typing import Dict, List, Any
class RuleBasedEvaluator:
"""基于规则的评估器"""
def __init__(self):
self.rules = []
def add_rule(self, name: str, rule_func, weight: float = 1.0):
"""添加评估规则"""
self.rules.append({
'name': name,
'func': rule_func,
'weight': weight
})
def evaluate(self, response: str, expected: Dict) -> Dict[str, float]:
"""评估响应"""
results = {}
total_weight = sum(r['weight'] for r in self.rules)
for rule in self.rules:
score = rule['func'](response, expected)
results[rule['name']] = score
# 计算加权平均
weighted_sum = sum(
results[r['name']] * r['weight'] for r in self.rules
)
results['overall'] = weighted_sum / total_weight
return results
@staticmethod
def create_format_check_rule(expected_format: str):
"""创建格式检查规则"""
def check_format(response: str, expected: Dict) -> float:
if expected_format == 'json':
try:
json.loads(response)
return 1.0
except:
return 0.0
elif expected_format == 'xml':
# 简单的 XML 检查
if response.strip().startswith('<') and response.strip().endswith('>'):
return 1.0
return 0.0
else:
return 1.0
return check_format
@staticmethod
def create_keyword_check_rule(required_keywords: List[str]):
"""创建关键词检查规则"""
def check_keywords(response: str, expected: Dict) -> float:
found_count = sum(
1 for kw in required_keywords if kw.lower() in response.lower()
)
return found_count / len(required_keywords)
return check_keywords
@staticmethod
def create_length_check_rule(min_length: int, max_length: int):
"""创建长度检查规则"""
def check_length(response: str, expected: Dict) -> float:
length = len(response)
if min_length <= length <= max_length:
return 1.0
elif length < min_length:
return max(0, length / min_length)
else:
return max(0, max_length / length)
return check_length
3.2 基于 LLM 的评估
实现 LLM 评估器:
# llm_based_evaluator.py
from typing import Dict, List
import json
class LLMBasedEvaluator:
"""基于 LLM 的评估器"""
def __init__(self, llm_client, eval_prompt_template: str = None):
self.llm_client = llm_client
self.eval_prompt_template = eval_prompt_template or self._default_template()
def _default_template(self) -> str:
"""默认评估 Prompt 模板"""
return """
你是一个专业的 AI 输出质量评估专家。
请评估以下 AI 输出的质量:
【任务描述】
{task_description}
【AI 输出】
{ai_output}
【评估标准】
1. 准确性:输出内容是否准确无误(0-10 分)
2. 完整性:是否涵盖了所有要点(0-10 分)
3. 逻辑性:逻辑是否清晰连贯(0-10 分)
4. 格式:格式是否符合要求(0-10 分)
请按以下 JSON 格式输出评估结果:
{{
"accuracy": <0-10 的整数>,
"completeness": <0-10 的整数>,
"logic": <0-10 的整数>,
"format": <0-10 的整数>,
"overall": <0-10 的整数>,
"comments": "<评估意见>"
}}
"""
def evaluate(
self,
task_description: str,
ai_output: str,
expected_output: str = None
) -> Dict[str, float]:
"""
使用 LLM 评估输出质量
Args:
task_description: 任务描述
ai_output: AI 输出
expected_output: 期望输出(可选)
Returns:
评估结果
"""
# 构建评估 Prompt
eval_prompt = self.eval_prompt_template.format(
task_description=task_description,
ai_output=ai_output
)
if expected_output:
eval_prompt += f"\n\n【期望输出】\n{expected_output}"
# 调用 LLM 评估
response = self.llm_client.generate(eval_prompt)
# 解析评估结果
try:
# 提取 JSON 部分
json_start = response.find('{')
json_end = response.rfind('}') + 1
json_str = response[json_start:json_end]
evaluation = json.loads(json_str)
# 转换为 0-1 的分数
normalized = {
key: value / 10.0
for key, value in evaluation.items()
if isinstance(value, (int, float))
}
return normalized
except Exception as e:
return {
'accuracy': 0.5,
'completeness': 0.5,
'logic': 0.5,
'format': 0.5,
'overall': 0.5,
'error': str(e)
}
def batch_evaluate(
self,
test_cases: List[Dict],
max_concurrent: int = 5
) -> List[Dict]:
"""批量评估"""
import concurrent.futures
results = []
with concurrent.futures.ThreadPoolExecutor(max_workers=max_concurrent) as executor:
futures = []
for case in test_cases:
future = executor.submit(
self.evaluate,
case.get('task_description', ''),
case.get('ai_output', ''),
case.get('expected_output')
)
futures.append(future)
for future in concurrent.futures.as_completed(futures):
results.append(future.result())
return results
3.3 混合评估策略
实现混合评估器:
# hybrid_evaluator.py
from typing import Dict, List
class HybridEvaluator:
"""混合评估器(规则 + LLM)"""
def __init__(self, rule_evaluator, llm_evaluator):
self.rule_evaluator = rule_evaluator
self.llm_evaluator = llm_evaluator
# 评估策略配置
self.strategy = {
'format_check': 'rule', # 格式检查用规则
'keyword_check': 'rule', # 关键词检查用规则
'accuracy': 'llm', # 准确性用 LLM
'logic': 'llm', # 逻辑性用 LLM
'overall': 'hybrid' # 综合评估混合
}
def evaluate(self, response: str, context: Dict) -> Dict[str, float]:
"""混合评估"""
results = {}
# 规则评估
rule_results = self.rule_evaluator.evaluate(
response,
context.get('expected', {})
)
# LLM 评估
llm_results = self.llm_evaluator.evaluate(
context.get('task_description', ''),
response,
context.get('expected_output')
)
# 合并结果
for metric, method in self.strategy.items():
if method == 'rule':
results[metric] = rule_results.get(metric, 0.0)
elif method == 'llm':
results[metric] = llm_results.get(metric, 0.0)
elif method == 'hybrid':
# 混合:规则 40% + LLM 60%
rule_score = rule_results.get('overall', 0.0)
llm_score = llm_results.get('overall', 0.0)
results[metric] = rule_score * 0.4 + llm_score * 0.6
return results
四、人工评估流程
4.1 评估标准制定
评估指南模板:
# Prompt 质量人工评估指南
## 评估维度
### 1. 准确性(30 分)
- 25-30 分:内容完全准确,无错误
- 15-24 分:内容基本准确,少量错误
- 5-14 分:内容准确性较差,多处错误
- 0-4 分:内容严重错误
### 2. 完整性(20 分)
- 17-20 分:涵盖所有要点,无遗漏
- 11-16 分:涵盖主要要点,少量遗漏
- 6-10 分:遗漏重要要点
- 0-5 分:严重遗漏
### 3. 逻辑性(20 分)
- 17-20 分:逻辑清晰,层次分明
- 11-16 分:逻辑基本清晰
- 6-10 分:逻辑混乱
- 0-5 分:无逻辑
### 4. 格式规范(15 分)
- 13-15 分:格式完全符合要求
- 8-12 分:格式基本符合
- 4-7 分:格式不规范
- 0-3 分:格式严重错误
### 5. 语言表达(15 分)
- 13-15 分:表达流畅,用词准确
- 8-12 分:表达基本流畅
- 4-7 分:表达不清晰
- 0-3 分:表达严重问题
## 评估流程
1. 阅读任务描述
2. 查看 AI 输出
3. 对照评估标准打分
4. 填写评估意见
5. 提交评估结果
4.2 评估平台实现
简单评估系统:
# evaluation_platform.py
from typing import List, Dict
from dataclasses import dataclass
from datetime import datetime
@dataclass
class EvaluationTask:
"""评估任务"""
task_id: str
prompt_version: str
input: str
output: str
expected_output: str
status: str = 'pending' # pending, in_progress, completed
@dataclass
class EvaluationResult:
"""评估结果"""
task_id: str
evaluator_id: str
accuracy: int # 0-10
completeness: int # 0-10
logic: int # 0-10
format: int # 0-10
language: int # 0-10
comments: str
created_at: str
class EvaluationPlatform:
"""评估平台"""
def __init__(self):
self.tasks: List[EvaluationTask] = []
self.results: List[EvaluationResult] = []
def create_evaluation_task(
self,
prompt_version: str,
input: str,
output: str,
expected_output: str
) -> str:
"""创建评估任务"""
import uuid
task_id = str(uuid.uuid4())
task = EvaluationTask(
task_id=task_id,
prompt_version=prompt_version,
input=input,
output=output,
expected_output=expected_output
)
self.tasks.append(task)
return task_id
def assign_evaluator(
self,
task_id: str,
evaluator_id: str
):
"""分配评估员"""
for task in self.tasks:
if task.task_id == task_id:
task.status = 'in_progress'
task.evaluator_id = evaluator_id
break
def submit_evaluation(self, result: EvaluationResult):
"""提交评估结果"""
self.results.append(result)
# 更新任务状态
for task in self.tasks:
if task.task_id == result.task_id:
task.status = 'completed'
break
def get_evaluation_report(self, prompt_version: str) -> Dict:
"""生成评估报告"""
version_results = [
r for r in self.results
if any(t.task_id == r.task_id and t.prompt_version == prompt_version
for t in self.tasks)
]
if not version_results:
return {'error': 'No evaluation results'}
# 计算平均分
avg_scores = {
'accuracy': sum(r.accuracy for r in version_results) / len(version_results),
'completeness': sum(r.completeness for r in version_results) / len(version_results),
'logic': sum(r.logic for r in version_results) / len(version_results),
'format': sum(r.format for r in version_results) / len(version_results),
'language': sum(r.language for r in version_results) / len(version_results),
}
avg_scores['overall'] = sum(avg_scores.values()) / len(avg_scores)
return {
'prompt_version': prompt_version,
'evaluation_count': len(version_results),
'average_scores': avg_scores,
'score_distribution': self._calculate_distribution(version_results),
'comments_summary': self._summarize_comments(version_results)
}
def _calculate_distribution(self, results: List[EvaluationResult]) -> Dict:
"""计算分数分布"""
distribution = {
'excellent': 0, # 9-10
'good': 0, # 7-8
'fair': 0, # 5-6
'poor': 0 # 0-4
}
for r in results:
overall = (r.accuracy + r.completeness + r.logic + r.format + r.language) / 5
if overall >= 9:
distribution['excellent'] += 1
elif overall >= 7:
distribution['good'] += 1
elif overall >= 5:
distribution['fair'] += 1
else:
distribution['poor'] += 1
return distribution
def _summarize_comments(self, results: List[EvaluationResult]) -> str:
"""汇总评估意见"""
all_comments = [r.comments for r in results if r.comments]
return '\n'.join(all_comments[:10]) # 只显示前 10 条
五、持续监控体系
5.1 监控指标看板
实现监控仪表板:
# monitoring_dashboard.py
from typing import Dict, List
from datetime import datetime, timedelta
class MonitoringDashboard:
"""监控仪表板"""
def __init__(self):
self.metrics_history: List[Dict] = []
def record_metrics(self, prompt_version: str, metrics: Dict):
"""记录指标"""
record = {
'timestamp': datetime.now().isoformat(),
'prompt_version': prompt_version,
'metrics': metrics
}
self.metrics_history.append(record)
def get_quality_trend(
self,
prompt_version: str,
days: int = 7
) -> List[Dict]:
"""获取质量趋势"""
cutoff = datetime.now() - timedelta(days=days)
trend = [
record for record in self.metrics_history
if record['prompt_version'] == prompt_version
and datetime.fromisoformat(record['timestamp']) >= cutoff
]
return trend
def get_alert_conditions(self) -> List[Dict]:
"""获取告警条件"""
return [
{
'name': '质量下降',
'condition': 'overall_score < 0.7',
'severity': 'high'
},
{
'name': '错误率过高',
'condition': 'error_rate > 0.05',
'severity': 'high'
},
{
'name': '延迟过高',
'condition': 'avg_latency > 3.0',
'severity': 'medium'
},
{
'name': 'Token 用量异常',
'condition': 'avg_tokens > 2000',
'severity': 'low'
}
]
def check_alerts(self, current_metrics: Dict) -> List[Dict]:
"""检查告警"""
alerts = []
for condition in self.get_alert_conditions():
# 简化:实际项目中应使用表达式求值
if condition['name'] == '质量下降':
if current_metrics.get('overall_score', 1.0) < 0.7:
alerts.append(condition)
elif condition['name'] == '错误率过高':
if current_metrics.get('error_rate', 0) > 0.05:
alerts.append(condition)
elif condition['name'] == '延迟过高':
if current_metrics.get('avg_latency', 0) > 3.0:
alerts.append(condition)
return alerts
5.2 告警通知
实现告警系统:
# alert_system.py
import smtplib
from email.mime.text import MIMEText
from typing import List, Dict
class AlertSystem:
"""告警系统"""
def __init__(self, config: Dict):
self.config = config
self.alert_history: List[Dict] = []
def send_alert(self, alert: Dict, metrics: Dict):
"""发送告警"""
# 记录告警历史
self.alert_history.append({
'timestamp': datetime.now().isoformat(),
'alert': alert,
'metrics': metrics
})
# 发送邮件告警
if self.config.get('email_enabled'):
self._send_email_alert(alert, metrics)
# 发送钉钉告警
if self.config.get('dingtalk_enabled'):
self._send_dingtalk_alert(alert, metrics)
def _send_email_alert(self, alert: Dict, metrics: Dict):
"""发送邮件告警"""
subject = f"Prompt 质量告警:{alert['name']}"
body = f"""
告警详情:
告警名称:{alert['name']}
告警级别:{alert['severity']}
触发条件:{alert['condition']}
当前指标:
{self._format_metrics(metrics)}
请及时处理!
"""
msg = MIMEText(body)
msg['Subject'] = subject
msg['From'] = self.config['email_from']
msg['To'] = ', '.join(self.config['email_to'])
# 发送邮件
# smtp = smtplib.SMTP(self.config['smtp_server'])
# smtp.send_message(msg)
def _send_dingtalk_alert(self, alert: Dict, metrics: Dict):
"""发送钉钉告警"""
import requests
webhook_url = self.config['dingtalk_webhook']
message = {
"msgtype": "markdown",
"markdown": {
"title": f"Prompt 质量告警:{alert['name']}",
"text": f"""
## Prompt 质量告警
- **告警名称**:{alert['name']}
- **告警级别**:{alert['severity']}
- **触发条件**:{alert['condition']}
### 当前指标
{self._format_metrics(metrics)}
请及时处理!
"""
}
}
# requests.post(webhook_url, json=message)
def _format_metrics(self, metrics: Dict) -> str:
"""格式化指标"""
lines = []
for key, value in metrics.items():
if isinstance(value, float):
lines.append(f"- {key}: {value:.2%}")
else:
lines.append(f"- {key}: {value}")
return '\n'.join(lines)
六、实战案例
6.1 电商评论分类 Prompt 评估
评估配置:
# evaluation_config.py
evaluation_config = {
'prompt_name': 'ecommerce-classification',
'version': 'v1.1.0',
# 评估指标权重
'weights': {
'accuracy': 0.6,
'efficiency': 0.2,
'stability': 0.2
},
# 评估方法
'evaluation_methods': {
'format_check': 'rule',
'accuracy': 'hybrid',
'logic': 'llm'
},
# 质量阈值
'quality_thresholds': {
'min_accuracy': 0.90,
'min_efficiency': 0.70,
'min_stability': 0.85,
'min_overall': 0.85
},
# 测试用例
'test_cases': [
{
'id': 'case_001',
'input': '这个产品很好用,推荐购买',
'expected': {'category': 'positive'},
'difficulty': 'easy'
},
# ... 更多测试用例
]
}
评估报告:
=== Prompt 质量评估报告 ===
Prompt 版本:ecommerce-classification v1.1.0
评估时间:2026-06-25 10:00:00
测试用例数:100
【综合得分】88.5/100 ✓ 通过
【维度得分】
- 准确性:92.0/100 ✓
- 任务完成率:95%
- 格式正确率:98%
- 内容准确率:90%
- 逻辑合理性:88%
- 用户满意度:90%
- 效率性:82.0/100 ✓
- 平均响应时间:1.2s
- P95 响应时间:1.8s
- 平均 Token 用量:850
- 稳定性:85.0/100 ✓
- 输出一致性:96%
- 错误率:0.5%
- 边界场景通过率:88%
【改进建议】
1. 优化边界场景处理,提升边界场景通过率
2. 减少 Token 用量,降低成本
3. 加强反讽表达的识别能力
【历史对比】
vs v1.0.0: +3.5 分 ↑
- 准确性:+5.0 分
- 效率性:-1.0 分
- 稳定性:+2.0 分
七、总结
7.1 核心要点
-
评估指标体系
- 准确性(60% 权重)
- 效率性(20% 权重)
- 稳定性(20% 权重)
-
评估方法
- 规则评估:快速、准确
- LLM 评估:全面、智能
- 混合评估:兼顾两者优势
-
持续监控
- 建立质量基线
- 实时监控指标
- 及时告警处理
7.2 工具推荐
| 工具 | 用途 | 特点 |
|---|---|---|
| RAGAS | RAG 评估 | 专业、全面 |
| TruLens | LLM 应用评估 | 实时、可视化 |
| LangSmith | Prompt 管理 | 一站式平台 |
| 自研系统 | 定制化评估 | 灵活、可控 |
参考资料