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
) -> tuple[str, float | None]:
Возвращает: (текст_ответа, стоимость_в_usd)
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 и т.д.).
Модели тестовых кейсов¶
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.0success-- прошёл ли тестовый кейс (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)¶
Перечисление поддерживаемых провайдеров:
class Provider(str, Enum):
OPENAI = "openai"
AZURE = "azure"
GOOGLE = "google"
ANTHROPIC = "anthropic"
OLLAMA = "ollama"
CUSTOM = "custom"
LLMDescriptor¶
Дескриптор для программного указания провайдера и модели:
Может быть создан из:
- Строки:
"gpt-4o"или"openai:gpt-4o" - Кортежа:
("openai", "gpt-4o") - Экземпляра LLMDescriptor
CustomLLMClient (ABC)¶
Абстрактный базовый класс для создания кастомных провайдеров:
class CustomLLMClient(ABC):
async def chat_complete(self, messages: list, temperature: float) -> tuple[str, float | None]: ...
async def get_embeddings(self, texts: list, model: str) -> tuple[list[list[float]], float | None]: ...
def get_model_name(self) -> str: ...
Базовые классы метрик¶
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 |
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 |
Генерация данных¶
| Класс | Импорт |
|---|---|
DatasetGenerator | from eval_lib import DatasetGenerator |
DocumentLoader | from eval_lib import DocumentLoader |