MLflow Blog

Can Jev replace your LLM judge? Evaluating quality, cost, and latency

8.5内容质量
Can Jev replace your LLM judge? Evaluating quality, cost, and latency

TL;DR · AI 摘要

Jev通过结构化输出实现更低延迟和成本,但无法替代LLM judge的解释能力,在技术问答评估中表现优异。

核心要点

  • Jev的结构化输出使成本降至$0.042/百万输入token,比传统LLM低50%以上
  • 在MLflow技术问答测试中,Jev与GPT 5.6的判断一致性达89%
  • Jev无法提供判断理由,仅能输出概率和分类结果

结构提纲

按章节快速跳转。

  1. 介绍LLM judge在评估中的成本瓶颈及Jev的替代潜力

  2. 解释Jev通过固定选项输出和概率判断实现低延迟

  3. 展示Jev在成本、延迟和判断一致性方面的测试数据

  4. 分析Jev无法提供判断理由的缺陷及适用场景

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Jev作为LLM judge的评估
    • 核心优势
      • 结构化输出机制
      • 成本优势($0.042/百万token)
      • 低延迟表现
    • 局限性
      • 无法提供判断理由
      • 适用场景限制

金句 / Highlights

值得收藏与分享的关键句。

#Jev#LLM judge#MLflow#模型评估#TypeSafe
打开原文

Jev 能否取代你的 LLM 评判者?评估质量、成本和延迟 | MLflow

Jev 能否取代你的 LLM 评判者?评估质量、成本和延迟

2026年9月22日

·

8分钟阅读

Yuki Watanabe

Databricks 软件工程师

LLM 评判者帮助你评估答案、比较提示并发现回归问题。但每次评判都会产生额外的模型调用。随着项目规模扩大,评判产生的成本和时间消耗会成为负担。

TypeSafe 推出的新型模型 Jev 专为结构化决策设计,相比常规 LLM 以文本形式响应,其响应速度更快、成本更低,这使其成为 LLM 评判者的候选方案。我们基于人工标注的技术问答示例,将 Jev 与 GPT 5.6、Claude 和 DeepSeek 进行对比,评估了人工评判者的一致性、成本和延迟。

Jev 能否区分正确 MLflow 答案与包含事实或 API 错误的答案?它与这些 LLM 评判者相比表现如何?

1. 什么是 Jev?​

Jev 是一种不生成文本的独特模型。常规 LLM 逐词生成判断结果,而 Jev 仅从固定选项集中生成结构化输出,并附带决策概率。TypeSafe 将其称为"系统一模型",借用丹尼尔·卡尼曼《思考,快与慢》中的术语,用于描述通过快速决策而非深思熟虑得出的判断。这种更窄的接口使 Jev 能以更低延迟响应,代价是牺牲通用文本生成能力。详见 TypeSafe 的发布文章。

例如,给 Jev 一个关于 MLflow API 的问题、候选答案和相关文档,然后询问答案是否在事实和技术上正确。Jev 的 Noul 问题类型会返回"是"的概率,你的代码可以据此判定通过或失败。它还支持通过 Choice 选择类别,以及通过 Score 根据有序评分标准进行评分。

2. 为什么 Jev 适合作为评判者​

许多评估需要对大量输入做出小规模决策。答案是否使用了正确的 API?是否遵循了用户问题中的版本?指令是否与提供的文档矛盾?

这些任务与 Jev 的接口高度契合。你还可以在一次请求中对同一状态提出多个独立问题。其公布的定价为每百万输入令牌 0.042 美元,输出令牌不收费。这为我们测试其在频繁重复检查中的表现提供了理由。

一个需要注意的限制是,LLM 评判者通常会生成推理过程,因为我们想知道为何特定答案被标记为错误。Jev 无法支持这一点,只能在分类输出时附带概率。

3. 使用 Jev 定义 LLM 评判者​

我们将使用以下 LLM 评判者提示测试 Jev:答案在事实和技术上是否正确?MLflow 自定义评分器可以调用任何外部模型并返回评估结果。我们将 Jev 调用封装在评分器中,保留其判断结果、概率、延迟和预估成本。

安装软件包并启动 MLflow 服务器:

code
uv add mlflow typesafe-sdk
uv run mlflow server --host 127.0.0.1 --port 5000

在运行 Python 的终端中配置连接和 TypeSafe API 密钥。使用一个评估工作线程以顺序执行请求:

code
export MLFLOW_TRACKING_URI="http://127.0.0.1:5000"
export TYPESAFE_API_KEY="your-typesafe-api-key"

然后使用 @scorer 装饰器定义判断器,并将其应用于数据集。以下代码还包含基准测量工具来衡量成本和延迟,但这些对于判断本身并非必需。

code
from
time
import
perf_counter
import
mlflow
from
mlflow
.
entities
import
Feedback
from
mlflow
.
genai
.
scorers
import
scorer
from
typesafe_sdk
import
Noul
,
RetryPolicy
,
TypeSafeClient
mlflow
.
set_experiment
(
"jev-judge-comparison"
)
client
=
TypeSafeClient
(
model
=
"jev-1.13.0"
,
retry
=
RetryPolicy
(
max_retries
=
0
)
,
timeout
=
30
)
THRESHOLD
=
0.5
INPUT_USD_PER_MILLION
=
0.042
CRITERION
=
(
"Is the candidate answer factually and technically correct for the question, "
"using the supplied MLflow documentation and respecting any version specified "
"in the question? Answer yes if there is no material factual or API error. "
"Answer no if at least one claim or instruction is materially wrong or misleading. "
"Do not penalize style or harmless omissions. An omission is material when it "
"makes the requested technical answer misleading."
)
def
judge_answer
(
question
:
str
,
context
:
str
,
answer
:
str
)
-
>
dict
:
started
=
perf_counter
(
)
response
=
client
.
system_one
(
state
=
{
"question"
:
question
,
"context"
:
context
,
"answer"
:
answer
}
,
questions
=
{
"correct"
:
Noul
(
instructions
=
CRITERION
)
}
,
)
latency_ms
=
(
perf_counter
(
)
-
started
)
*
1000
probability
=
response
.
nouls
[
"correct"
]
.
noul
tokens
=
response
.
usage
.
input_tokens
cost
=
None
if
tokens
is
None
else
tokens
*
INPUT_USD_PER_MILLION
/
1_000_000
return
{
"prediction"
:
"correct"
if
probability
>=
THRESHOLD
else
"incorrect"
,
"p_correct"
:
probability
,
"model"
:
response
.
model
,
"input_tokens"
:
tokens
,
"latency_ms"
:
latency_ms
,
"estimated_cost_usd"
:
cost
,
}
@scorer
def
jev_correctness
(
inputs
:
dict
)
-
>
Feedback
:
result
=
judge_answer
(
**
inputs
)
return
Feedback
(
value
=
result
[
"prediction"
]
==
"correct"
,
metadata
=
{
**
result
,
"threshold"
:
THRESHOLD
}
,
)

jev_correctness 会评估 inputs 中存储的候选答案,该答案包含其对应的问题和文档内容。它会返回一个布尔评估结果,用于 MLflow 评估。接下来,我们将检查这些评估结果的可靠性。

4. 测量初始质量、成本和延迟

我们创建了 30 个 MLflow QA 示例,涵盖追踪、评估、提示、数据集和评估等内容。每个示例都包含一个问题、候选答案以及官方 MLflow 文档的摘录。人工审核员对这些示例进行了标注,以便我们衡量人工判断与模型判断的一致性。在下面描述的标注修正后,参考数据集包含 15 个标注为正确的答案和 15 个标注为错误的答案。

以下是其中一个错误答案的示例:

code
{
"inputs"
:
{
"question"
:
(
'My `@scorer` function is called `check_answer`, but it returns '
'`Feedback(name="answer_quality", value=True)`. '
'Which name appears as the metric?'
)
,
"context"
:
(
"1. If the scorer returns one or more `Feedback` objects, then "
"`Feedback.name` fields take precedence, if specified.\n"
"2. For primitive return values or unnamed `Feedback`s, the "
"function name (for the `@scorer` decorator) or the `Scorer.name` "
"field (for the `Scorer` class) are used."
)
,
}
,
"outputs"
:
(
"The metric is named `check_answer`, because decorated scorers "
"always use the Python function name. To show `answer_quality` "
"in the results, rename the function to that name."
)
,
# This field is not passed to the Jev judge.
"expectations"
:
{
"human_correctness"
:
"incorrect"
}
,
}
code
mlflow
.
genai
.
evaluate
(
data
=
data
,
scorers
=
[
judge_answer
]
)

我们同样使用相同的输入和正确性标准测试了GPT-5.6 Terra、Luna、Claude Sonnet 4.6、Claude Opus 4.8以及DeepSeek-V4.1-Flash(deepseek-flash)。我们明确禁用扩展推理并限制输出为128个token,测试的是用于快速通过/失败检查的配置。以下是基准测试结果。

30个由人工标注的问答示例。DeepSeek使用了非高峰时段定价。

Judge

与人工标注的一致性

中位延迟

p95延迟

预估成本/1,000次判断

Jev 1.13.0

30/30(100%)

369 ms

411 ms

$0.0247

GPT-5.6 Terra

1,091 ms

1,924 ms

$0.8960

GPT-5.6 Luna

947 ms

1,435 ms

$0.0896

Claude Sonnet 4.6

27/30(90.0%)

1,610 ms

3,546 ms

$1.6721

Claude Opus 4.8

28/30(93.3%)

1,966 ms

9,279 ms

$3.7750

DeepSeek-V4.1-Flash

29/30(96.6%)

910 ms

1,188 ms

$0.0624(非高峰时段)

Jev、Terra和Luna在所有30个示例上做出了完全相同的决策。Jev的预估成本和观察到的延迟最低。Sonnet拒绝了一个正确答案并接受了两个错误答案。Opus也拒绝了一个正确描述会话和跟踪元数据的答案。DeepSeek接受了一个关于输出记录的错误答案,与Claude的错误相同。

5. 决定何时使用Jev以及何时转交判断

对于这个数据集,Jev在较低成本和延迟下产生了与Terra和Luna相同的人工判断一致性分数。在采用之前,我们仍然建议收集真实答案并检查对您的应用至关重要的错误。Jev的概率还允许您将不确定的案例发送给其他评估者。

缺乏推理依据的限制在迭代判断结果时也可能很重要。例如,如果您在开发阶段迭代代理质量,使用常规的文本模型仍然更好。然而,在大规模评估如在线生产监控时,Jev可能是平衡质量和成本的绝佳选择。当Jev标记某些答案为不良时,您仍然可以使用更昂贵的LLM运行相同判断以生成可读的人类推理依据。

二进制Noul问题也无法弃权。当弃权重要时,请使用带有明确不确定选项的Choice问题,然后将这些案例转交给其他判断者或人工审核员。

6. 在您的评估数据集上尝试使用

从您已使用的标准开始,标注一小部分答案,并在MLflow中与当前判断者一起运行Jev。检查分歧以及成本和延迟。然后在更改捕获回归的评估者之前,在新示例上测试您的选择。

code

查看 MLflow 评估快速入门和自定义评分指南以适配示例。与 MLflow 社区分享你的学习成果。