0.8
- Breaking Changes
- Python 3.10 support removed:
fiddler-evalsnow requires Python 3.11 or newer. Python 3.10 reached end of life on October 1, 2026. See the Python Version Support Policy.
- Python 3.10 support removed:
- New Features
- Dataset versions: A
Datasetobject now stands for one version of the dataset, available asDataset.version. Load a past version withDataset.get_by_id(..., version=N)orDataset.get_by_name(..., version=N).get_items()reads the version of the dataset object you call it on, andevaluate()runs on the version of the dataset you pass it, so edits made after you load the dataset don’t change the experiment.Experiment.list()acceptsdataset_versionto list the experiments that ran on one version, andExperiment.create()andExperiment.get_or_create()acceptdataset_versionto pin the experiment to one version. Requires Fiddler Release 26.25 or later. On earlier releases,Dataset.versionisNone, andget_items()andevaluate()use the newest version of the dataset at the time they run. - Edit items in one write:
Dataset.update_items(items=..., delete_ids=...)adds, replaces, and deletes items in a single write that creates one new dataset version. It returns anUpdateItemsResultwith the dataset at the new version and the created, updated, deleted, and unchanged item IDs.Dataset.delete_items(ids)deletes items the same way.update_items()anddelete_items()require Fiddler Release 26.25 or later. See the Release 26.25 notes. Build items from a pandas DataFrame, a CSV file, or a JSON Lines file with the newitems_from_pandas(),items_from_csv(), anditems_from_jsonl()functions.
- Dataset versions: A
- Enhancements
- Version conflict errors:
update_items()raisesStaleDatasetVersionwhen an item it names changed since the version you loaded, and writes nothing. It retries up to three times, waiting 1, 2, and then 4 seconds, when the dataset is busy (DatasetBusy) or temporarily unavailable for writes (DatasetWriteUnavailable). If the last retry also fails, it raises that error.insert()raisesItemIdCollisionwhen an item ID already exists with different content. Each new error is a subclass of the error raised before, so existingexceptblocks keep working. - Security floors: Requires
urllib32.8.0 or newer andanyio4.14.2 or newer.
- Version conflict errors:
- Deprecations
- Deprecated insert methods: Version 0.8.0 deprecates
insert(), its aliasesadd_items()andadd_testcases(), andinsert_from_pandas(),insert_from_csv_file(), andinsert_from_jsonl_file(). They still work and now emit aDeprecationWarning. Useupdate_items(items=...), withitems_from_pandas(),items_from_csv(), oritems_from_jsonl()to build the items.update_items()requires Fiddler Release 26.25 or later; on earlier releases, keep usinginsert(). Unlikeinsert(),update_items()doesn’t change theDatasetobject you call it on. Keep the dataset from the result it returns, for exampledataset = dataset.update_items(items=items).dataset, so later steps such asevaluate()use the new version.
- Deprecated insert methods: Version 0.8.0 deprecates
- Fixes
Experiment.get_or_create()raisesValueError, instead of returning the existing experiment, when the name already exists on another dataset. When you passdataset_version, it also raisesValueErrorif the existing experiment is pinned to another version, or if the server can’t report its version.- Importing items with a blank ID cell assigns a new ID, and a blank
source_nameorsource_idbecomesNoneinstead of"nan". - Paged list methods such as
Dataset.get_items()andExperiment.list()raise SDK errors such asNotFoundinstead of a rawrequests.HTTPError.
0.7
- New Evaluators
-
Centor Safety: Dynamic Model Escalation (New)
Available underThis capability is currently in private preview and is not yet available to all customers. Contact your Fiddler Customer Success Manager to request access.
fiddler_evals.preview. See the Centor Safety DME release notes for details.
-
Centor Safety: Dynamic Model Escalation (New)
0.6
- New Features
- Golden Datasets (New): Build evaluation datasets from real production traffic by promoting spans into a dataset.
Application.get_span_fields()discovers which attribute keys your spans carry, with coverage counts and any evaluator outputs recorded on them.Dataset.add_items_from_spans()resolves span references server-side, applies aFieldMapping, and writes one dataset item per span.Dataset.get_schema()introspects an existing dataset’s fields so a new mapping stays consistent with it. Writes are all-or-nothing: if any span cannot be resolved, nothing is written and the call returns422with aSpanNotFoundentry per unresolved span. Adds theSpanReference,FieldMapping,SearchFilter, andSearchScopemodels; structured span filtering reuses the existingQueryCondition,QueryRule, andOperatorTypemodels. - Experiment Trace Capture (New):
evaluate()now captures the OpenTelemetry spans your task emits and links them to the experiment item that produced them, with no configuration. Evaluators opt in to reading them by declaring asessionparameter, which receives the item’s captured spans and enables scoring on execution — tool call counts, latency, retries, span exception events — rather than only on the output string. Capture is best-effort: if it is unavailable,sessionisNoneand the experiment runs normally.
- Golden Datasets (New): Build evaluation datasets from real production traffic by promoting spans into a dataset.
- Enhancements
fiddler-otelis now a base dependency: Required by trace capture, so it installs with the SDK rather than as an extra.- Pre-production application guard: If an existing
FiddlerClientis scoped to a different application than the dataset’s,evaluate()raisesValueErrorinstead of sending evaluation traces to that application.
- Fixes
evaluate()returns an up-to-date experiment:ExperimentResult.experimentreflectedcreate()-time state, sostatusreadPENDINGandduration_mswasNoneeven after a completed run. The runner now reassigns the hydrated entity at each status transition.
0.5
- Fixes
- Experiment runner threading: Fixed an issue where the experiment runner could fail when executed inside a thread.
0.4
- Breaking Changes
- Experiment result models renamed: The experiment item data models were refactored.
ExperimentItemis nowExperimentResultItemandExperimentItemResultis nowScoredExperimentItem(with a newExperimentResultScoremodel).Experiment.get_items()now returnsIterator[ExperimentResultItem]. Update imports fromfiddler_evals.pydantic_models.experimentaccordingly.
- Experiment result models renamed: The experiment item data models were refactored.
- Enhancements
- CustomJudge alignment:
CustomJudgenow aligns with Fiddler’s internal PromptSpecV2 model for consistent custom LLM-as-a-Judge evaluation.
- CustomJudge alignment:
- Fixes
- Fixed a URL construction issue affecting API requests.
0.3
- New Evaluators
- Context Relevance (New): Measures whether retrieved documents are relevant to the user query. Ordinal scoring — High (1.0), Medium (0.5), Low (0.0) with detailed reasoning.
- RAG Faithfulness (New): LLM-as-a-Judge evaluator that assesses whether the response is grounded in the retrieved documents. Binary scoring — Yes (1.0) / No (0.0) with detailed reasoning.
- CustomJudge (New): Build custom LLM-as-a-Judge evaluators using
prompt_templatewith Jinja{{ placeholder }}syntax andoutput_fieldsfor structured evaluation results.
- Enhancements
- Answer Relevance 2.0: Upgraded from binary to ordinal scoring — High (1.0), Medium (0.5), Low (0.0) with detailed reasoning.
- Ordinal Score Bounding: Ordinal scores from the scoring API are now bounded to [0, 1].
- Enhancements
- Model and Credential Parameters:
modelandcredentialare now parameters on LLM-as-a-Judge evaluators, enabling configuration of the LLM used for evaluation. - Evaluator-Level Score Function Mapping: Evaluators now support
score_fn_kwargs_mappingat the evaluator level for more flexible parameter binding. - Score Name Prefix: Added support for custom score name prefixes on evaluators.
- Evals API Error Handling: Improved error handling and messaging for Evals API responses.
- Coherence Prompt Input Required: The
promptinput for the Coherence evaluator is now required. - Removed Pandas Core Dependency: Pandas moved from core to optional dependency, reducing install footprint.
- Docstring Standardization: Fixed docstring errors and standardized documentation format across all evaluators.
- Model and Credential Parameters:
- Removals
- Toxicity Evaluator Removed: The Toxicity evaluator has been removed from the SDK.
- Initial Release
- Core SDK with HTTP client, entity management (Project, Application, Dataset, Experiment), and the
evaluate()function for running experiments. - Evaluators: AnswerRelevance, Coherence, Conciseness, Sentiment, TopicClassification, FTLPromptSafety, FTLResponseFaithfulness, RegexSearch, and support for user-defined function evaluators.
- Data Input: Load test cases from pandas DataFrames, CSV files, or JSONL files.
- Concurrent Processing: Parallel evaluation with ThreadPoolExecutor and tqdm progress tracking.
- PyPI Publishing: Available as
pip install fiddler-evals.
- Core SDK with HTTP client, entity management (Project, Application, Dataset, Experiment), and the