Проверка формата
FormatCheckMetric проверяет, что фактический вывод соответствует указанному типу формата.
Как это работает
- Выбирает соответствующее правило валидации на основе
format_type - Применяет валидацию формата к фактическому выводу
- Возвращает
1.0, если вывод соответствует формату, 0.0 в противном случае
Поддерживаемые форматы
| Тип формата | Описание | Пример |
"email" | Валидный адрес электронной почты | user@example.com |
"phone" | Номер телефона (цифры, пробелы, дефисы, скобки, опциональный +) | +1 (555) 123-4567 |
"date" | Дата в формате ISO 8601 | 2025-12-31 |
"url" | Валидный URL со схемой | https://example.com |
Параметры
| Параметр | Тип | По умолчанию | Описание |
threshold | float | 1.0 | Минимальный балл для прохождения |
format_type | str | обязательный | Формат для валидации: "email", "phone", "date" или "url" |
Обязательные поля
| Поле | Обязательно |
input | Нет |
actual_output | Да |
expected_output | Нет |
Использование
from eval_lib.metrics import FormatCheckMetric
from eval_lib.test_case import EvalTestCase
import asyncio
test_case = EvalTestCase(
input="Сгенерируйте контактный email",
actual_output="support@example.com"
)
metric = FormatCheckMetric(threshold=1.0, format_type="email")
result = asyncio.run(metric.evaluate(test_case))
print(result.score) # 1.0
Примеры сценариев
Прошел (1.0)
metric = FormatCheckMetric(format_type="url")
EvalTestCase(
input="Верните URL документации",
actual_output="https://docs.example.com/api/v2"
)
# Валидный URL со схемой
Не прошел (0.0)
metric = FormatCheckMetric(format_type="date")
EvalTestCase(
input="Верните сегодняшнюю дату",
actual_output="31 декабря 2025 года"
)
# Не в формате ISO 8601 (YYYY-MM-DD)