Детерминированные метрики¶
Детерминированные метрики — это метрики оценки на основе правил, которые выдают бинарный результат (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}")