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

推荐订阅源

量子位
T
The Blog of Author Tim Ferriss
U
Unit 42
Microsoft Security Blog
Microsoft Security Blog
WordPress大学
WordPress大学
Vercel News
Vercel News
MongoDB | Blog
MongoDB | Blog
P
Proofpoint News Feed
D
DataBreaches.Net
The GitHub Blog
The GitHub Blog
大猫的无限游戏
大猫的无限游戏
C
Check Point Blog
Blog — PlanetScale
Blog — PlanetScale
I
InfoQ
Y
Y Combinator Blog
F
Full Disclosure
B
Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
G
Google Developers Blog
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
S
SegmentFault 最新的问题
腾讯CDC
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V
Visual Studio Blog
Apple Machine Learning Research
Apple Machine Learning Research
人人都是产品经理
人人都是产品经理
Recent Commits to openclaw:main
Recent Commits to openclaw:main
The Register - Security
The Register - Security
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
云风的 BLOG
云风的 BLOG
Last Week in AI
Last Week in AI
F
Fortinet All Blogs
C
CXSECURITY Database RSS Feed - CXSecurity.com
Hugging Face - Blog
Hugging Face - Blog
T
Threatpost
GbyAI
GbyAI
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
P
Palo Alto Networks Blog
L
LangChain Blog
T
Tenable Blog
C
Cisco Blogs
T
Threat Research - Cisco Blogs
Google Online Security Blog
Google Online Security Blog

博客园 - work hard work smart

使用 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 深度解析:优雅构建大模型应用的利器 Spring AI Alibaba DashScopeChatModel 实战 Spring 中 SSE 流式输出的多种实现方式详解 OpenSandbox 实战指南:为 AI Agent 构建安全的代码执行沙箱 在本机启动 LangGraph 开发服务器:完整指南 DeepAgents中Backend的奥秘:让AI Agent拥有文件操作能力 为什么选择 Go 开发 Web 接口?从入门到实践 智能搜索DeepAgent笔记 RAG学习笔记2--系统查询流程 RAG学习笔记1--系统文件导入流程 百炼 WebSearch 快速入门指南 Python 连接 MongoDB 完整指南:从连接配置到增删改查实战 一行命令搞定 MongoDB 开发环境:Docker Compose 部署 + 可视化管理 使用 Attu 可视化管理 Milvus 向量数据库 在 Windows Docker 中快速安装 Milvus 2.5.6 minio使用 Spark 集群搭建 hadoop集群安装 Spring AI Alibaba 入门实战 Windows 安装 OpenClaw 实战指南 MyBatis 核心流程和原理 Idea中安装Claude code插件 Spark 编程 使用Matplotlib 绘制直方图 Flink安装部署 Flume安装 查找导致cpu过高的代码方法 JVisualVM监控远程Java进程 jmap jacoco多模块生成java单元测试报告实践 arthas 使用demo LockSupport Exchanger CyclicBarrier CountDownLatch 手把手教你用python开始第一个机器学习项目
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 评估更简单!🚀