Перейти к содержанию

Детерминированные метрики

Детерминированные метрики — это метрики оценки на основе правил, которые выдают бинарный результат (1.0 или 0.0) без использования LLM модели. Они быстрые, предсказуемые и идеально подходят для валидации структурированных выходных данных.

Доступные метрики

Метрика Описание
ExactMatchMetric Точное сравнение строк между фактическим и ожидаемым выводом
ContainsMetric Проверяет наличие указанных ключевых слов в выводе
StartsWithMetric Проверяет, начинается ли вывод с заданного префикса
EndsWithMetric Проверяет, заканчивается ли вывод заданным суффиксом
RegexMatchMetric Сопоставляет вывод с регулярным выражением
JsonSchemaMetric Валидирует вывод по JSON-схеме
FormatCheckMetric Валидирует формат вывода (email, телефон, дата, URL)
LengthCheckMetric Валидирует длину вывода в символах или словах
LanguageDetectionMetric Определяет и валидирует язык вывода
NonEmptyMetric Проверяет, что вывод не пустой

Ключевые свойства

  • Не требует LLM — все метрики вычисляются локально с помощью детерминированных правил
  • Бинарная оценка — каждая метрика возвращает либо 1.0 (прошел), либо 0.0 (не прошел)
  • Быстрое выполнение — не требуются сетевые запросы или инференс модели
  • Путь импорта — все метрики доступны из eval_lib.metrics.deterministic_metrics

Использование

from eval_lib.metrics import ExactMatchMetric, ContainsMetric
from eval_lib.test_case import EvalTestCase
import asyncio

test_case = EvalTestCase(
    input="Сколько будет 2 + 2?",
    actual_output="4",
    expected_output="4"
)

metrics = [
    ExactMatchMetric(threshold=1.0),
    ContainsMetric(threshold=1.0, keywords=["4"], mode="any"),
]

for metric in metrics:
    result = asyncio.run(metric.evaluate(test_case))
    print(f"{metric.__class__.__name__}: {result.score}")