annotations-orchestration
Generic Python library for orchestrating LLM evaluation runs: a resumable parallel scheduler over experiment manifests, plus nervaluate-based metrics (precision/recall/F1 against gold annotations).
Part of the annotations-* family: the annotation pipeline lives in
annotations4all,
this library provides the evaluation/experiment infrastructure, and concrete
run projects (e.g. evaluation_2026) combine both.
Features
- Library-agnostic: the scheduler speaks a subprocess CLI contract (RunSpec → flags), not annotations4all types. Reusable for any LLM evaluation workflow.
- Conservative concurrency: documents within a run are processed
linearly;
remoteruns share a pool (execution.remote_parallelism, default 3);self_hostedruns get one sequential lane per host. - Resumable: run state is persisted; completed runs are skipped, interrupted/failed runs re-execute on restart.
- Manifest-driven: experiment YAMLs + optional controller manifests
(
defaults/execution/order). - Metrics: NER evaluation with precision/recall/F1 per entity type, using the classic nervaluate evaluation schemes (strict, entity type, partial, exact).
Installation
python -m pip install annotations-orchestration
Requires Python 3.11+.
Quickstart
# Validate an experiments directory (dry run, no execution)
annotations-orchestrate --experiments-dir experiments/ --dry-run
# Run the experiments
annotations-orchestrate --experiments-dir experiments/
Python API
from pathlib import Path
from annotations_orchestration import evaluate_classifier, calculate_metrics
# predictions: list of {"ground_truth": {"prodigy": [...]}, "predictions": [...]}
overall, per_tag = evaluate_classifier(
data_dir=Path("data"),
eval_dir=Path("results"),
predictions=predictions,
)
f1 = calculate_metrics(overall, "ent_type")["f1"]
CLI
annotations-orchestrate options: --manifest, --experiments-dir,
--state, --results-dir, --dry-run, --active-self-hosted,
--graceful-shutdown-seconds.
Development
uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest
Citation
If you use this software in academic work, please cite it as follows:
Dresselhaus, Nicole. (2026). annotations-orchestration (Version 0.1.0) [Software]. Humboldt-Universität zu Berlin. https://scm.cms.hu-berlin.de/annotations4all/annotations-orchestration
DOI: 10.5281/zenodo.22015764
Machine-readable metadata is available in CITATION.cff.
License
MIT. The bundled nervaluate_compat/ package is a vendored, unmodified
snapshot of MantisAI/nervaluate
commit 0bf272a (MIT, © 2020 David S. Batista and Matthew A. Upson).
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file annotations_orchestration-0.1.0.tar.gz.
File metadata
- Download URL: annotations_orchestration-0.1.0.tar.gz
- Upload date:
- Size: 28.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
78b50756d888c4648addbde3fff0baddc098fea6930401b9e0396358769c0136
|
|
| MD5 |
e22da7b88980c37901183d4c527daabf
|
|
| BLAKE2b-256 |
8b197344b522f5ae731ccc5ca5235ee049fc5691bd7b6d1d306d8ef42e9939c8
|
File details
Details for the file annotations_orchestration-0.1.0-py3-none-any.whl.
File metadata
- Download URL: annotations_orchestration-0.1.0-py3-none-any.whl
- Upload date:
- Size: 31.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"26.04","id":"resolute","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb116dda206a226dfcef40873f8d0678c949516352cd9f3d0d9a82b54ca6e9de
|
|
| MD5 |
bb0c674fc4d960ee6b1d689da1b0170a
|
|
| BLAKE2b-256 |
69eeac87ad5bc976cbcf7f67cbf84454b63cacac36e688c4e0b7b04344e20629
|