惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Stack Overflow Blog
Stack Overflow Blog
G
Google Developers Blog
Microsoft Azure Blog
Microsoft Azure Blog
Engineering at Meta
Engineering at Meta
L
LangChain Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
Y
Y Combinator Blog
月光博客
月光博客
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
F
Fortinet All Blogs
A
About on SuperTechFans
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
P
Proofpoint News Feed
小众软件
小众软件
H
Help Net Security
Last Week in AI
Last Week in AI
B
Blog RSS Feed
宝玉的分享
宝玉的分享
N
Netflix TechBlog - Medium
博客园 - 叶小钗
The GitHub Blog
The GitHub Blog

博客园 - work hard work smart

Java 面试1 Java 常见面试问题 手撕java常用代码 WebStorm 创建react工程 构建企业级 Text-to-SQL Agent:基于 LangGraph 的智能数据查询系统设计 Harness 工程:驾驭 AI Agent 的工程化艺术 DeepAgents 多智能体架构实战:从设计模式到后端选型 Vue 自定义组件完全指南:从零构建待办事项应用 使用 LangChain + Hugging Face 构建文本向量化服务 SQLAlchemy 使用详解 Python 中使用 Elasticsearch 的完整指南 Qdrant 向量数据库使用指南 DeepEval 快速入门:LLM 应用评估指南 LangSmith 批量评估完全指南 Qwen-Agent 入门指南:快速构建智能体应用 LangSmith 集成实战:从追踪到评估的完整指南 初识 go-zero:一款让你写后端更规范、更高效的 Go 微服务框架 RAG 中为什么需要 Rerank,以及如何使用 Rerank LangChain4j RAG 核心组件与组合方式 如何使用 Elasticsearch 进行全文检索和向量检索 MinerU Docker 部署指南 5 分钟上手:为 Cline 配置一个免费的 MCP 天气服务 Neo4j 图数据库安装与 Spring Boot 集成实战指南 LangFuse 实战指南:用 @observe 三行代码给 LLM 应用加上全链路追踪 Function Call 深度解析:让大模型从"嘴炮"到"实干"的技术革命 Spring AI 提示词模板实战:告别硬编码,实现提示词工程化管理 LangChain4j 实战指南:用 Java 轻松构建 AI 应用 Spring AI 对话短期记忆实战:让大模型拥有"记忆力" Spring AI 提示词工程实战:让大模型更懂你的意图 Spring AI ChatClient 深度解析:优雅构建大模型应用的利器
OpenEvals 快速入门:LLM 评估指南
work hard work smart · 2026-06-25 · via 博客园 - work hard work smart

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 评估更简单!🚀