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

Проверка длины

LengthCheckMetric проверяет, что фактический вывод укладывается в указанный диапазон длины, измеряемой в символах или словах.

Как это работает

  1. Измеряет длину вывода в указанных единицах (chars или words)
  2. Проверяет, попадает ли длина в диапазон [min_length, max_length]
  3. Возвращает 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