Содержит
ContainsMetric проверяет, содержит ли фактический вывод указанные ключевые слова, с настраиваемыми режимами сопоставления.
Как это работает
- Опционально приводит вывод к нижнему регистру для регистронезависимого сопоставления
- Проверяет каждое ключевое слово в выводе
- Применяет выбранный режим (
any, all или none) для определения результата - Возвращает
1.0, если условие выполнено, 0.0 в противном случае
Параметры
| Параметр | Тип | По умолчанию | Описание |
threshold | float | 1.0 | Минимальный балл для прохождения |
keywords | list[str] | обязательный | Список ключевых слов для проверки |
mode | str | "any" | Режим сопоставления: "any" (хотя бы одно), "all" (все), "none" (ни одного) |
case_sensitive | bool | True | Учитывать ли регистр при сопоставлении |
Обязательные поля
| Поле | Обязательно |
input | Нет |
actual_output | Да |
expected_output | Нет |
Использование
from eval_lib.metrics import ContainsMetric
from eval_lib.test_case import EvalTestCase
import asyncio
test_case = EvalTestCase(
input="Перечислите основные цвета",
actual_output="Основные цвета — красный, синий и желтый."
)
metric = ContainsMetric(
threshold=1.0,
keywords=["красный", "синий", "желтый"],
mode="all",
case_sensitive=False
)
result = asyncio.run(metric.evaluate(test_case))
print(result.score) # 1.0
Примеры сценариев
Прошел (1.0) — mode="any"
metric = ContainsMetric(keywords=["Python", "JavaScript"], mode="any")
EvalTestCase(
input="Назовите язык программирования",
actual_output="Python — популярный язык."
)
# Найдено хотя бы одно ключевое слово
Прошел (1.0) — mode="none"
metric = ContainsMetric(keywords=["ошибка", "сбой", "исключение"], mode="none")
EvalTestCase(
input="Сгенерируйте сообщение об успехе",
actual_output="Операция выполнена успешно."
)
# Запрещенные ключевые слова не найдены
Не прошел (0.0)
metric = ContainsMetric(keywords=["красный", "синий", "желтый"], mode="all")
EvalTestCase(
input="Перечислите основные цвета",
actual_output="Основные цвета — красный и синий."
)
# "желтый" отсутствует