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

API-справочник

Полный справочник по всем публичным классам и функциям Eval AI Library.

Основные функции

evaluate()

Запуск оценки одноходовых тестовых кейсов. Это основная точка входа для большинства сценариев использования.

async def evaluate(
    test_cases: list[EvalTestCase],
    metrics: list[MetricPattern],
    verbose: bool = True,
    show_dashboard: bool = False,
    session_name: str = None
) -> list[tuple[None, list[TestCaseResult]]]:
Параметр Тип По умолчанию Описание
test_cases list[EvalTestCase] обязательный Тестовые кейсы для оценки
metrics list[MetricPattern] обязательный Метрики для применения
verbose bool True Показывать прогресс в консоли
show_dashboard bool False Открыть дашборд в браузере
session_name str None Имя сессии для кеширования

evaluate_conversations()

Запуск оценки многоходовых диалоговых тестовых кейсов.

async def evaluate_conversations(
    conv_cases: list[ConversationalEvalTestCase],
    metrics: list[ConversationalMetricPattern],
    verbose: bool = True
) -> list[tuple[None, list[ConversationalTestCaseResult]]]:

chat_complete()

Прямой вызов LLM для генерации ответа.

async def chat_complete(
    llm: str | tuple[str, str] | LLMDescriptor | CustomLLMClient,
    messages: list[dict[str, str]],
    temperature: float = 0.0,
    *,
    api_key: str | None = None,
    api_base: str | None = None,
    extra_kwargs: dict | None = None,
) -> tuple[str, float | None]:

Возвращает: (текст_ответа, стоимость_в_usd)

api_key, api_base и extra_kwargs передаются напрямую в нижележащий вызов LiteLLM и имеют приоритет над переменными окружения и значениями из LLMDescriptor -- это рекомендуемый способ передавать per-request учётные данные в мульти-арендных сервисах.

get_embeddings()

Генерация текстовых эмбеддингов.

async def get_embeddings(
    model: str | tuple[str, str] | LLMDescriptor | CustomLLMClient,
    texts: list[str]
) -> tuple[list[list[float]], float | None]:

Возвращает: (эмбеддинги, стоимость_в_usd)

score_agg()

Температурно-управляемая агрегация оценок. Подробнее см. Агрегация оценок.

def score_agg(
    scores: list[float],
    temperature: float = 0.5,
    penalty: float = 0.1,
    eps_for_neg_p: float = 1e-9
) -> float:

extract_json_block()

Извлечение JSON из ответов LLM (обрабатывает markdown-блоки кода, встроенный JSON и т.д.).

def extract_json_block(text: str) -> str:

Модели тестовых кейсов

EvalTestCase

Основная модель для одноходового тестового кейса:

class EvalTestCase(BaseModel):
    input: str                                      # User query (required)
    actual_output: str                              # AI response (required)
    expected_output: str | None = None              # Reference answer
    retrieval_context: list[str] | None = None      # Retrieved documents
    tools_called: list[str] | None = None           # Tools actually called
    expected_tools: list[str] | None = None         # Expected tool calls
    reasoning: str | None = None                    # Chain of thought
    name: str | None = None                         # Test case label
  • input и actual_output -- обязательные поля для всех метрик
  • expected_output -- используется метриками Contextual Recall, Policy Compliance и др.
  • retrieval_context -- необходим для RAG-метрик (Faithfulness, Contextual Relevancy и др.)
  • tools_called и expected_tools -- используются метриками агентов

ConversationalEvalTestCase

Модель для многоходового диалогового тестового кейса:

class ConversationalEvalTestCase(BaseModel):
    turns: list[EvalTestCase]                       # Conversation turns
    chatbot_role: str | None = None                 # System prompt / role
    name: str | None = None                         # Test case label

ToolCall

Модель для описания вызова инструмента:

class ToolCall(BaseModel):
    name: str                                       # Tool name
    description: str | None = None                  # Tool description
    reasoning: str | None = None                    # Why tool was called

Модели результатов

MetricResult

Результат оценки по одной метрике:

@dataclass
class MetricResult:
    name: str                               # Metric name
    score: float                            # Score (0.0-1.0)
    threshold: float                        # Pass threshold
    success: bool                           # score >= threshold
    evaluation_cost: float | None           # Cost in USD
    reason: str                             # Human-readable explanation
    evaluation_model: str                   # Model used for evaluation
    evaluation_log: dict | None = None      # Detailed evaluation data
  • score -- числовая оценка от 0.0 до 1.0
  • success -- прошёл ли тестовый кейс (score >= threshold)
  • reason -- человеко-читаемое объяснение оценки
  • evaluation_log -- подробные данные оценки (вердикты, обнаруженные сущности и т.д.)

TestCaseResult

Результат оценки одного тестового кейса по всем метрикам:

@dataclass
class TestCaseResult:
    input: str
    actual_output: str
    expected_output: str | None
    retrieval_context: list[str] | None
    success: bool                           # All metrics passed
    metrics_data: list[MetricResult]
    tools_called: list[str] | None = None
    expected_tools: list[str] | None = None

ConversationalTestCaseResult

Результат оценки диалогового тестового кейса:

@dataclass
class ConversationalTestCaseResult:
    dialogue: list[dict[str, str]]          # role/content pairs
    success: bool                           # All metrics passed
    metrics_data: list[MetricResult]

Типы LLM

Provider (Enum)

Enum намеренно маленький -- в нём остались только провайдеры с нативными (не-LiteLLM) кодовыми путями. Всё остальное (OpenAI, Anthropic, Google, Azure, Bedrock, Vertex AI, Cohere, Together, OpenRouter, …) передаётся строкой и идёт через LiteLLM.

class Provider(str, Enum):
    OLLAMA = "ollama"
    MLX = "mlx"
    ZHIPU = "zhipu"
    CUSTOM = "custom"

LLMDescriptor

Дескриптор для программного указания провайдера и модели:

class LLMDescriptor:
    provider: Provider | str
    model: str
    api_key: str | None = None
    api_base: str | None = None

Может быть создан из:

  • Строки: "gpt-4o" или "openai:gpt-4o"
  • Кортежа: ("openai", "gpt-4o")
  • Экземпляра LLMDescriptor

CustomLLMClient (ABC)

Абстрактный базовый класс для создания кастомных провайдеров:

Обязательны только chat_complete и get_model_name. Метод get_embeddings необязателен -- переопределяйте, только если ваш бэкенд поддерживает эмбеддинги.

class CustomLLMClient(ABC):
    @abstractmethod
    async def chat_complete(self, messages: list, temperature: float) -> tuple[str, float | None]: ...

    @abstractmethod
    def get_model_name(self) -> str: ...

    async def get_embeddings(
        self, texts: list, model: str = "text-embedding-3-small"
    ) -> tuple[list[list[float]], float | None]: ...

Базовые классы метрик

MetricPattern

Базовый класс для одноходовых метрик:

class MetricPattern:
    name: str

    def __init__(self, model: str, threshold: float, verbose: bool = False): ...
    async def evaluate(self, test_case: EvalTestCase) -> dict[str, Any]: ...

ConversationalMetricPattern

Базовый класс для многоходовых метрик:

class ConversationalMetricPattern:
    name: str

    def __init__(self, model: str, threshold: float, verbose: bool = False): ...
    async def evaluate(self, test_case: ConversationalEvalTestCase) -> dict[str, Any]: ...

Все метрики

RAG-метрики

Класс Импорт
AnswerRelevancyMetric from eval_lib import AnswerRelevancyMetric
AnswerPrecisionMetric from eval_lib import AnswerPrecisionMetric
FaithfulnessMetric from eval_lib import FaithfulnessMetric
ContextualRelevancyMetric from eval_lib import ContextualRelevancyMetric
ContextualPrecisionMetric from eval_lib import ContextualPrecisionMetric
ContextualRecallMetric from eval_lib import ContextualRecallMetric
BiasMetric from eval_lib import BiasMetric
ToxicityMetric from eval_lib import ToxicityMetric
RestrictedRefusalMetric from eval_lib import RestrictedRefusalMetric
CustomEvalMetric from eval_lib import CustomEvalMetric
GEval from eval_lib import GEval

Метрики агентов

Класс Импорт
ToolCorrectnessMetric from eval_lib import ToolCorrectnessMetric
TaskSuccessRateMetric from eval_lib import TaskSuccessRateMetric
GoalAchievementRateMetric from eval_lib import GoalAchievementRateMetric
ConversationalFlowRateMetric from eval_lib import ConversationalFlowRateMetric
RepetitivePatternDetectionMetric from eval_lib import RepetitivePatternDetectionMetric
FailureRateMetric from eval_lib import FailureRateMetric
RoleAdherenceMetric from eval_lib import RoleAdherenceMetric
KnowledgeRetentionMetric from eval_lib import KnowledgeRetentionMetric
ToolsErrorMetric from eval_lib import ToolsErrorMetric

Метрики безопасности

Класс Импорт
PromptInjectionDetectionMetric from eval_lib import PromptInjectionDetectionMetric
JailbreakDetectionMetric from eval_lib import JailbreakDetectionMetric
PIILeakageMetric from eval_lib import PIILeakageMetric
HarmfulContentMetric from eval_lib import HarmfulContentMetric
PromptInjectionResistanceMetric from eval_lib import PromptInjectionResistanceMetric
JailbreakResistanceMetric from eval_lib import JailbreakResistanceMetric
PolicyComplianceMetric from eval_lib import PolicyComplianceMetric

Детерминированные метрики

Без LLM, чисто алгоритмические проверки. Импорт: from eval_lib import ….

Класс Назначение
RegexMatchMetric Соответствие регулярному выражению
JsonSchemaMetric Валидация JSON по схеме
LengthCheckMetric Проверка длины строки
ContainsMetric Обязательное наличие подстроки
StartsWithMetric / EndsWithMetric Префикс/суффикс
ExactMatchMetric Точное равенство строк
NonEmptyMetric Вывод не пустой
FormatCheckMetric Проверка формата
LanguageDetectionMetric Определение языка

Векторные метрики

Сравнение по эмбеддингам. Импорт: from eval_lib import ….

Класс Назначение
SemanticSimilarityMetric Косинусное сходство actual vs expected
ReferenceMatchMetric Сравнение с набором эталонов

Метрики надёжности

Стабильность и калибровка при многократных запусках. Импорт: from eval_lib import ….

Класс Назначение
OutcomeConsistencyMetric Стабильность результата при повторах
LoopDetectionMetric Обнаружение циклов
PromptRobustnessMetric Чувствительность к возмущениям промпта
PerturbationGenerator Генерация возмущённых промптов
PlanningQualityMetric Качество многошагового планирования
ContextDecayMetric Удержание контекста на длинных диалогах
CalibrationMetric Калибровка уверенности
ReliabilityScoreAggregator Агрегатор мульти-метрических оценок
ReliabilityProfile Сводный отчёт о надёжности

Генерация данных

Класс Импорт
DatasetGenerator from eval_lib import DatasetGenerator
DocumentLoader from eval_lib import DocumentLoader

Оба класса подгружаются лениво; установите экстра: pip install 'eval-ai-library[datagen]'.