Совпадение по регулярному выражению
RegexMatchMetric сопоставляет фактический вывод с регулярным выражением.
Как это работает
- Компилирует предоставленный паттерн регулярного выражения
- Применяет полное или частичное сопоставление в зависимости от параметра
full_match - Возвращает
1.0 при совпадении паттерна, 0.0 в противном случае
Параметры
| Параметр | Тип | По умолчанию | Описание |
threshold | float | 1.0 | Минимальный балл для прохождения |
pattern | str | обязательный | Паттерн регулярного выражения |
full_match | bool | False | Если True, весь вывод должен соответствовать паттерну. Если False, достаточно частичного совпадения (поиск) |
Обязательные поля
| Поле | Обязательно |
input | Нет |
actual_output | Да |
expected_output | Нет |
Использование
from eval_lib.metrics import RegexMatchMetric
from eval_lib.test_case import EvalTestCase
import asyncio
test_case = EvalTestCase(
input="Сгенерируйте дату",
actual_output="2025-12-31"
)
metric = RegexMatchMetric(
threshold=1.0,
pattern=r"^\d{4}-\d{2}-\d{2}$",
full_match=True
)
result = asyncio.run(metric.evaluate(test_case))
print(result.score) # 1.0
Примеры сценариев
Прошел (1.0) — частичное совпадение
metric = RegexMatchMetric(pattern=r"\d+\.\d{2}", full_match=False)
EvalTestCase(
input="Какова цена?",
actual_output="Общая стоимость составляет $19.99 включая налог."
)
# Паттерн найден в выводе
Прошел (1.0) — полное совпадение
metric = RegexMatchMetric(pattern=r"[A-Z]{3}-\d{4}", full_match=True)
EvalTestCase(
input="Сгенерируйте код продукта",
actual_output="ABC-1234"
)
# Весь вывод соответствует паттерну
Не прошел (0.0)
metric = RegexMatchMetric(pattern=r"^\d+$", full_match=True)
EvalTestCase(
input="Верните число",
actual_output="Ответ — 42"
)
# Весь вывод не соответствует паттерну только из цифр