API Reference¶
Complete reference for all public classes and functions in Eval AI Library.
Core Functions¶
evaluate()¶
Run evaluation on single-turn test cases.
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]]]:
| Parameter | Type | Default | Description |
|---|---|---|---|
test_cases | list[EvalTestCase] | required | Test cases to evaluate |
metrics | list[MetricPattern] | required | Metrics to apply |
verbose | bool | True | Show console progress |
show_dashboard | bool | False | Open dashboard in browser |
session_name | str | None | Name for caching |
evaluate_conversations()¶
Run evaluation on multi-turn conversational test cases.
async def evaluate_conversations(
conv_cases: list[ConversationalEvalTestCase],
metrics: list[ConversationalMetricPattern],
verbose: bool = True
) -> list[tuple[None, list[ConversationalTestCaseResult]]]:
chat_complete()¶
Direct LLM chat completion.
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]:
api_key, api_base and extra_kwargs are passed straight through to the LiteLLM call and take precedence over environment variables / LLMDescriptor values — use them for per-request credentials in multi-tenant services.
Returns: (response_text, cost_in_usd)
get_embeddings()¶
Generate text embeddings.
async def get_embeddings(
model: str | tuple[str, str] | LLMDescriptor | CustomLLMClient,
texts: list[str]
) -> tuple[list[list[float]], float | None]:
Returns: (embeddings, cost_in_usd)
score_agg()¶
Temperature-controlled score aggregation.
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()¶
Extract JSON from LLM responses (handles markdown code blocks, embedded JSON, etc.).
Test Case Models¶
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
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
Result Models¶
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
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 Types¶
Provider (Enum)¶
Intentionally small — only providers with native (non-LiteLLM) code paths are members. Everything else (OpenAI, Anthropic, Google, Azure, Bedrock, Vertex AI, Cohere, Together, OpenRouter, …) is routed through LiteLLM as a plain string.
LLMDescriptor¶
class LLMDescriptor:
provider: Provider | str
model: str
api_key: str | None = None
api_base: str | None = None
Parses from: - String: "gpt-4o" or "openai:gpt-4o" - Tuple: ("openai", "gpt-4o") - LLMDescriptor instance
CustomLLMClient (ABC)¶
Only chat_complete and get_model_name are abstract. get_embeddings is optional — override it only if your backend supports 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]: ...
Base Metric Classes¶
MetricPattern¶
Base class for single-turn metrics.
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¶
Base class for multi-turn metrics.
class ConversationalMetricPattern:
name: str
def __init__(self, model: str, threshold: float, verbose: bool = False): ...
async def evaluate(self, test_case: ConversationalEvalTestCase) -> dict[str, Any]: ...
All Metrics¶
RAG Metrics¶
| Class | Import |
|---|---|
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 |
Agent Metrics¶
| Class | Import |
|---|---|
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 |
Security Metrics¶
| Class | Import |
|---|---|
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 |
Deterministic Metrics¶
Zero-LLM-cost, purely algorithmic checks — from eval_lib import ….
| Class | Purpose |
|---|---|
RegexMatchMetric | Match output against a regex |
JsonSchemaMetric | Validate output JSON against a schema |
LengthCheckMetric | Assert string length in a range |
ContainsMetric | Require a substring to be present |
StartsWithMetric / EndsWithMetric | Prefix/suffix check |
ExactMatchMetric | Exact string equality |
NonEmptyMetric | Fail on empty output |
FormatCheckMetric | Check formatting rules |
LanguageDetectionMetric | Detect output language |
Vector Metrics¶
Embedding-based similarity checks — from eval_lib import ….
| Class | Purpose |
|---|---|
SemanticSimilarityMetric | Cosine similarity between actual and expected output |
ReferenceMatchMetric | Match the actual output against a list of reference answers |
Reliability Metrics¶
Multi-run stability and calibration — from eval_lib import ….
| Class | Purpose |
|---|---|
OutcomeConsistencyMetric | Measures result stability across repeats |
LoopDetectionMetric | Detects repetitive/looping behaviour |
PromptRobustnessMetric | Sensitivity to prompt perturbations |
PerturbationGenerator | Generates perturbed prompts for robustness testing |
PlanningQualityMetric | Quality of multi-step planning |
ContextDecayMetric | Context retention over long interactions |
CalibrationMetric | Confidence calibration |
ReliabilityScoreAggregator | Aggregates multi-metric reliability scores |
ReliabilityProfile | Composite reliability report |
Data Generation¶
| Class | Import |
|---|---|
DatasetGenerator | from eval_lib import DatasetGenerator |
DocumentLoader | from eval_lib import DocumentLoader |
Both are lazy-loaded; install the extra with pip install 'eval-ai-library[datagen]'.