





















OpenEvals 是一个轻量级的 LLM 评估框架,使用 LLM 作为裁判(LLM-as-a-Judge)来评估模型输出质量。
特点:
pip install openevals langchain-community
配置环境变量:
# Windows PowerShell
$env:DASHSCOPE_API_KEY="your-api-key"
# Linux/Mac
export DASHSCOPE_API_KEY="your-api-key"
from langchain_community.chat_models import ChatTongyi
from openevals.prompts import CORRECTNESS_PROMPT
from openevals.llm import create_llm_as_judge
# 步骤 1:创建评估模型
eval_llm = ChatTongyi(
model_name="qwen-turbo",
dashscope_api_key="your-key",
temperature=0
)
# 步骤 2:创建评估器
evaluator = create_llm_as_judge(
prompt=CORRECTNESS_PROMPT,
feedback_key="correctness",
judge=eval_llm,
continuous=True,
use_reasoning=False
)
# 步骤 3:运行评估
result = evaluator(
inputs="什么是机器学习?",
outputs="机器学习是让计算机从数据中学习的技术。",
reference_outputs="机器学习是从数据中学习的技术。"
)
# 获取分数
score = result.get("score")
print(f"评估分数: {score}")
OpenEvals 提供多种内置评估场景:
| 提示词 | 用途 | 需要参数 |
|---|---|---|
CORRECTNESS_PROMPT |
正确性评估 | inputs, outputs, reference_outputs |
ANSWER_RELEVANCE_PROMPT |
答案相关性 | inputs, outputs |
HALLUCINATION_PROMPT |
幻觉检测 | context, inputs, outputs |
CONCISENESS_PROMPT |
简洁性 | inputs, outputs |
TOXICITY_PROMPT |
毒性检测 | outputs |
from openevals.prompts import CORRECTNESS_PROMPT
evaluator = create_llm_as_judge(
prompt=CORRECTNESS_PROMPT,
feedback_key="correctness",
judge=eval_llm
)
result = evaluator(
inputs="什么是Python?",
outputs="Python是一种高级编程语言。",
reference_outputs="Python是一种高级编程语言,具有简洁语法。"
)
score = result.get("score") # 0.0-1.0,越高越正确
from openevals.prompts import ANSWER_RELEVANCE_PROMPT
evaluator = create_llm_as_judge(
prompt=ANSWER_RELEVANCE_PROMPT,
feedback_key="relevance",
judge=eval_llm
)
result = evaluator(
inputs="什么是机器学习?",
outputs="机器学习是AI的一个分支。"
)
score = result.get("score") # 0.0-1.0,越高越相关
from openevals.prompts import HALLUCINATION_PROMPT
evaluator = create_llm_as_judge(
prompt=HALLUCINATION_PROMPT,
feedback_key="hallucination",
judge=eval_llm
)
result = evaluator(
context="Python在1991年发布。",
inputs="Python何时发布?",
outputs="Python在1991年发布。"
)
score = result.get("score") # 0.0-1.0,越高幻觉越少
# 准备测试用例
test_cases = [
{
"inputs": "什么是机器学习?",
"outputs": "机器学习是从数据中学习的技术。",
"reference_outputs": "机器学习是AI分支"
},
{
"inputs": "什么是Python?",
"outputs": "Python是编程语言。",
"reference_outputs": "Python是高级编程语言"
}
]
# 批量评估
evaluator = create_llm_as_judge(
prompt=CORRECTNESS_PROMPT,
feedback_key="correctness",
judge=eval_llm
)
for i, case in enumerate(test_cases, 1):
result = evaluator(
inputs=case["inputs"],
outputs=case["outputs"],
reference_outputs=case["reference_outputs"]
)
score = result.get("score")
print(f"测试 {i}: {score:.3f}")
使用自定义提示词:
from openevals.llm import create_llm_as_judge
CUSTOM_PROMPT = """评估回答的专业性。
问题:{inputs}
回答:{outputs}
请评分(0-1):"""
evaluator = create_llm_as_judge(
prompt=CUSTOM_PROMPT,
feedback_key="professionalism",
judge=eval_llm
)
result = evaluator(
inputs="如何治疗感冒?",
outputs="建议多休息,多喝水,必要时就医。"
)
evaluator = create_llm_as_judge(
prompt=CORRECTNESS_PROMPT, # 评估提示词
feedback_key="correctness", # 评估键
judge=eval_llm, # 评估模型
continuous=True, # True: 连续分数(0-1), False: 二值(0/1)
use_reasoning=False # True: 返回(分数,理由), False: 返回字典
)
{
"key": "correctness",
"score": 0.8,
"comment": None,
"metadata": None
}
(0.8, "回答基本正确,但缺少部分细节")
from langchain_community.chat_models import ChatTongyi
eval_llm = ChatTongyi(
model_name="qwen-turbo",
dashscope_api_key="your-key"
)
from langchain_openai import ChatOpenAI
eval_llm = ChatOpenAI(
model="gpt-4o-mini",
api_key="your-key"
)
# 有参考答案 → CORRECTNESS_PROMPT
evaluator(inputs, outputs, reference_outputs)
# 无参考答案 → ANSWER_RELEVANCE_PROMPT
evaluator(inputs, outputs)
# 检测幻觉 → HALLUCINATION_PROMPT
evaluator(context, inputs, outputs)
# 评估时使用 temperature=0,保证一致性
eval_llm = ChatTongyi(
model_name="qwen-turbo",
temperature=0 # 重要!
)
正确性/相关性:
0.8-1.0: 高质量
0.5-0.8: 中等质量
0.0-0.5: 低质量
幻觉检测:
分数越高,幻觉越少
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from openevals.llm import create_llm_as_judge
# 构建应用
llm = ChatOpenAI(model="gpt-3.5-turbo")
chain = llm | StrOutputParser()
# 评估输出
response = chain.invoke("什么是机器学习?")
evaluator = create_llm_as_judge(
prompt=CORRECTNESS_PROMPT,
judge=eval_llm
)
result = evaluator(
inputs="什么是机器学习?",
outputs=response,
reference_outputs="标准答案"
)
| 维度 | 说明 |
|---|---|
| 简单 | 3 步完成评估 |
| 灵活 | 支持多种模型和场景 |
| 轻量 | 依赖少,易集成 |
| 开源 | 免费使用 |
开始使用 OpenEvals,让 LLM 评估更简单!🚀
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。