Skip to main content

whetstone-ai

Generic toolkit for evaluating and optimizing LLM prompts and programs.

Whetstone sits above the dr-* libraries (graphs, providers, store, serialize, exec, platform) and below domain-specific environments. It owns the reusable experiment contract, batched evaluation engine, optimizer harness, and evidence/analysis plumbing — not task datasets, domain scoring rules, or application UI.

In scope here: evaluation at scale, a shared optimization harness, and stepping through runs to inspect behavior. Optimizers are not co-equal:

Optimizer Harness adapter Platform pipeline Sandbox
COPRO Live; pass a COPRO adapter in the build_runtime registry Wired (submit_optim_run, inline and PLATFORM deferral) whetstone-sandbox copro
GEPA Live harness adapter + step engine; pass via the build_runtime registry Wired (submit_optim_run, inline and PLATFORM deferral) whetstone-sandbox gepa
MIPROv2 Live via register_toy_runtime(..., extra_adapters=...) + prepare_miprov2_run Not on the pipeline whetstone-sandbox miprov2 (plan preview only)

Out of scope here: particular benchmarks or envs (those live in separate packages or repos), one-off experiment scripts, and product-facing runners.

Core capabilities

  1. Evaluation — batched, efficient sweeps over candidates and tasks; configurable splits, graph rollouts, concurrency, and durable evidence. Bundled reference drivers: GraphRolloutEvalDriver (eval/drivers/graph_rollout.py) — the default, parallel in-process graph rollouts with injected EvalProcedureRunner — and SubprocessGraphRolloutEvalDriver (eval/drivers/subprocess_graph_rollout.py), which runs the same rows on a dr-exec worker pool with per-row and per-batch wall-time budgets.
  2. Evaluation analysis — bootstrap confidence intervals, power analysis, and anchor calibration over persisted evaluation evidence (eval/analysis/).
  3. Optimization — shared harness and adapters that propose candidates and drive evaluation intents in a loop. COPRO is the platform-wired optimizer; GEPA is platform-wired the same way as COPRO when present in the build_runtime registry. MIPROv2 plugs into the in-process harness via register_toy_runtime(..., extra_adapters=...) plus prepare_toy_miprov2_run and is not on the platform pipeline.
  4. Sandbox & interpretation — dry-run previews and toy-graph helpers to step through optimizer behavior before spending full eval budget (whetstone-sandbox).
  5. Codex MCP evalwhetstone-mcp-eval serves the Codex evaluate-candidate tool over stdio.
Evaluation  →  Evaluation analysis
     ↓
Optimization  →  Sandbox / interpretation

dr-* libraries

Package Role in whetstone
dr-graph Rollout graphs: LLM-call → eval nodes, executed per task row
dr-providers Provider call configs, transport, and invocation evidence
dr-store Content-addressed persistence for candidates, evidence, and step records
dr-serialize Strict JSON and canonical identity hashing
dr-exec Budgeted subprocess execution: Codex optimizer steps, and the subprocess rollout driver's worker pool
dr-platform Durable pipeline stages, deferral/fan-in, and run submission (platform extra)

Stable seams

  • Experiment — generation graph, initial/ceiling candidates, eval configs, reward policy
  • EvaluationEngine — validates and evaluates a candidate; returns typed evidence refs
  • OptimizerAdapter — COPRO and GEPA plug into the shared harness and platform pipeline when present in the build_runtime registry; MIPROv2 is harness-only via extra_adapters. Adding or removing an adapter changes controller identity.
  • StepContractProvider — each optimizer declares its first-step and continuation contracts and parses its own launch control, registered by adapter key; StepRequestBuilder and HarnessRunController dispatch through it
  • Step evidence — a step reports evaluations it asked the harness to run in resolved_intents (COPRO, MIPROv2), and evaluations its own search drove in search_evidence (GEPA), each bound to its run and step index and verified by the harness; a terminal step whose contract sets terminal_proposal_count and that accepted no improvement over the run's own initial candidate sets seed_retained
  • Graph rolloutsexperiment/graph/ builds standard two-node graphs; drivers execute them per row

Platform pipeline

The optim pipeline (whetstone.optim.v1) has stages optim_stepeval_roweval_fanin, plus run_completion. EvalDispatchMode.INLINE evaluates inside the step. EvalDispatchMode.PLATFORM persists eval intents, fans out row jobs, fans results back in, then resumes the step. Submit a run with submit_optim_run.

whetstone-optim (requires the platform extra) is the production entry point. run resolves a bound launch from a SQLite store, assembles build_runtime + deploy_platform, submits a members tuple, and prints the receipt. Adapter-set membership is part of controller identity: adding an adapter changes runtime.controller.runtime_hash. status reads the run manifest and release state; result loads OptimPlatformRunResult.

uv sync --extra platform
uv run whetstone-optim run \
  --run-id <bound-run-id> \
  --store-path runtime.sqlite \
  --database-url "$WHETSTONE_DATABASE_URL" \
  --campaign-key campaign-1 \
  --run-key run-1 \
  --adapter copro \
  --proposer provider \
  --application-version 0.1.5 \
  --executor-id local-1
uv run whetstone-optim status --run-key run-1 --store-path runtime.sqlite
uv run whetstone-optim result --run-key run-1 --store-path runtime.sqlite

Sandbox

uv run whetstone-sandbox copro --task-prompt "Say hello"
uv run whetstone-sandbox graph --run

Requires Python 3.13+. Optional extras: dbos, postgres, platform.

Platform integration tests

Tier 2 tests exercise the dr-platform harness against Postgres + DBOS:

uv sync --extra platform
createdb whetstone_platform_test   # once, if needed
uv run pytest -m integration tests/integration/

Set WHETSTONE_TEST_DATABASE_URL when not using the default postgresql+psycopg:///whetstone_platform_test. Locally, tests skip when Postgres is unavailable; in CI they fail hard. Default uv run pytest excludes integration tests via the pytest marker.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

whetstone_ai-0.1.5.tar.gz (347.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

whetstone_ai-0.1.5-py3-none-any.whl (448.0 kB view details)

Uploaded Python 3

File details

Details for the file whetstone_ai-0.1.5.tar.gz.

File metadata

  • Download URL: whetstone_ai-0.1.5.tar.gz
  • Upload date:
  • Size: 347.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for whetstone_ai-0.1.5.tar.gz
Algorithm Hash digest
SHA256 13658a769dff64cec1ff6448cbc5599401677f8060e1151bba7f8c856fe3bced
MD5 ec87060c2a19f93a08126fe026183c6f
BLAKE2b-256 a12cbd29c785c9f6fad15fad23230784c33fcb704fb8a86f4a4dacd4cabf36f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for whetstone_ai-0.1.5.tar.gz:

Publisher: release.yml on danielle-rothermel/whetstone-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file whetstone_ai-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: whetstone_ai-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 448.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for whetstone_ai-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 e60d10fad4799e0f21f4811585264d6a4fead50709d45067b2a6dcb4886dded5
MD5 fdfc8fee1acfd5acef6b20295004cfe3
BLAKE2b-256 177b68e5e382e86775dbd6d2d6eec77a10be2172a91e5077e9ea791f19d957b3

See more details on using hashes here.

Provenance

The following attestation bundles were made for whetstone_ai-0.1.5-py3-none-any.whl:

Publisher: release.yml on danielle-rothermel/whetstone-ai

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.10

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

This release

0.1.5 This release

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page