work hard work smart

专注于AI+Java后端开发。 不断总结,举一反三。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

OpenEvals 快速入门:LLM 评估指南

Posted on 2026-06-25 17:05  work hard work smart  阅读(6)  评论(0)    收藏  举报

OpenEvals 快速入门:LLM 评估指南

什么是 OpenEvals?

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"

核心用法

3 步完成评估

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

常用评估场景

1. 正确性评估

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,越高越正确

2. 相关性评估

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,越高越相关

3. 幻觉检测

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: 返回字典
)

结果格式

use_reasoning=False(默认)

{
    "key": "correctness",
    "score": 0.8,
    "comment": None,
    "metadata": None
}

use_reasoning=True

(0.8, "回答基本正确,但缺少部分细节")

支持多种模型

通义千问

from langchain_community.chat_models import ChatTongyi

eval_llm = ChatTongyi(
    model_name="qwen-turbo",
    dashscope_api_key="your-key"
)

OpenAI

from langchain_openai import ChatOpenAI

eval_llm = ChatOpenAI(
    model="gpt-4o-mini",
    api_key="your-key"
)

最佳实践

1. 选择合适的评估场景

# 有参考答案 → CORRECTNESS_PROMPT
evaluator(inputs, outputs, reference_outputs)

# 无参考答案 → ANSWER_RELEVANCE_PROMPT
evaluator(inputs, outputs)

# 检测幻觉 → HALLUCINATION_PROMPT
evaluator(context, inputs, outputs)

2. 设置温度参数

# 评估时使用 temperature=0,保证一致性
eval_llm = ChatTongyi(
    model_name="qwen-turbo",
    temperature=0  # 重要!
)

3. 理解分数含义

正确性/相关性:
  0.8-1.0: 高质量
  0.5-0.8: 中等质量
  0.0-0.5: 低质量

幻觉检测:
  分数越高,幻觉越少

与 LangChain 集成

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="标准答案"
)

总结

OpenEvals 的优势

维度 说明
简单 3 步完成评估
灵活 支持多种模型和场景
轻量 依赖少,易集成
开源 免费使用

适用场景

  • ✅ 快速验证 LLM 输出质量
  • ✅ 对比不同模型效果
  • ✅ 提示词优化评估
  • ✅ 批量自动化测试

开始使用 OpenEvals,让 LLM 评估更简单!🚀