Проверка длины
LengthCheckMetric проверяет, что фактический вывод укладывается в указанный диапазон длины, измеряемой в символах или словах.
Как это работает
- Измеряет длину вывода в указанных единицах (
chars или words) - Проверяет, попадает ли длина в диапазон
[min_length, max_length] - Возвращает
1.0, если длина в пределах диапазона, 0.0 в противном случае
Параметры
| Параметр | Тип | По умолчанию | Описание |
threshold | float | 1.0 | Минимальный балл для прохождения |
min_length | int | 0 | Минимальная допустимая длина (включительно) |
max_length | int | None | Максимальная допустимая длина (включительно). Если None, верхний предел не применяется |
unit | str | "chars" | Единица измерения: "chars" (символы) или "words" (слова) |
Обязательные поля
| Поле | Обязательно |
input | Нет |
actual_output | Да |
expected_output | Нет |
Использование
from eval_lib.metrics import LengthCheckMetric
from eval_lib.test_case import EvalTestCase
import asyncio
test_case = EvalTestCase(
input="Напишите краткое резюме",
actual_output="Проект был завершен вовремя и в рамках бюджета."
)
metric = LengthCheckMetric(
threshold=1.0,
min_length=5,
max_length=50,
unit="words"
)
result = asyncio.run(metric.evaluate(test_case))
print(result.score) # 1.0
Примеры сценариев
Прошел (1.0)
metric = LengthCheckMetric(min_length=100, max_length=500, unit="chars")
EvalTestCase(
input="Напишите абзац",
actual_output="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
)
# Количество символов в указанном диапазоне
Не прошел (0.0) — слишком коротко
metric = LengthCheckMetric(min_length=10, unit="words")
EvalTestCase(
input="Напишите подробное объяснение",
actual_output="Это работает."
)
# Только 2 слова, минимум — 10
Не прошел (0.0) — слишком длинно
metric = LengthCheckMetric(max_length=5, unit="words")
EvalTestCase(
input="Дайте ответ одним словом",
actual_output="Ответ на ваш вопрос — да, конечно"
)
# 6 слов, максимум — 5