Python SDK client for the Keystone agent evaluation + sandboxed-execution platform
Project description
Keystone SDK for Python
Python client for the Keystone agent evaluation + sandboxed-execution platform. Shares a single source of truth with the TypeScript and Go SDKs — byte-identical cost estimates and prompt rendering across all three.
Install
pip install polarity-keystone
Zero external runtime dependencies — uses only urllib from the standard
library.
Quick start
from polarity_keystone import (
Keystone, traced,
Factuality, ExactMatch, FileExists,
)
ks = Keystone(api_key="ks_live_...")
# Create an experiment and run it with three client-side scorers.
exp = ks.experiments.create("nightly-regression", spec_id="spec-123")
results = ks.experiments.run_and_wait(
exp.id,
scores=[
Factuality(model="paragon-fast"),
ExactMatch(expected_key="expected", case_sensitive=False),
FileExists("output.txt", gate=True),
],
)
print(f"pass rate: {results.metrics.pass_rate:.0%}")
# Stream every trace for the experiment.
for trace in ks.export.traces(experiment_id=exp.id):
print(trace["tool"], trace["cost"])
# Wrap an OpenAI/Anthropic client for auto-trace ingest
from openai import OpenAI
client = ks.wrap(OpenAI(), sandbox_id="sb-xxx")
client.chat.completions.create(model="gpt-4o", messages=[...]) # auto-reports
What's in the SDK
- 9 client services —
sandboxes,specs,experiments,alerts,agents,datasets,scoring,export,prompts - 28 built-in scorers across 5 families:
- Heuristic (6):
ExactMatch,Levenshtein,NumericDiff,JSONDiff,JSONValidity,SemanticListContains - LLM-judge (9):
Factuality,Battle,ClosedQA,Humor,Moderation,Summarization,SQLJudge,Translation,Security - RAG (8):
ContextPrecision,ContextRecall,ContextRelevancy,ContextEntityRecall,Faithfulness,AnswerRelevancy,AnswerSimilarity,AnswerCorrectness - Embedding (1):
EmbeddingSimilarity - Sandbox invariants (5):
FileExists,FileContains,CommandExits,SQLEquals,LLMJudge
- Heuristic (6):
@Scorerdecorator — wrap any(scenario) -> scorefunction@traceddecorator + context manager — auto-capture spans with AsyncLocalStorage-equivalent context propagation- Client wrapping —
ks.wrap(openai_client, sandbox_id=...)adds transparent trace reporting for OpenAI + Anthropic (sync / async / streaming) auto_instrument()— single call patches every installed provider (OpenAI, Anthropic, Mistral, Google GenAI, LiteLLM, Claude Agent SDK, DSPy, LangChain)- Prompt management —
ks.prompts.create(slug, template)/ks.prompts.get(slug)/Prompt.render(**vars)with server-side audit + byte-identical local renderer - Bulk export —
ks.export.traces(...),.spans(...),.scenarios(...),.scores(...)auto-paginate;ks.export.experiment(id)for full JSON or NDJSON dumps - OpenTelemetry bridge —
wrap()emitsgen_ai.*metadata;register_otel_flush()piggy-backs on program shutdown
Versioning
Semver. 0.x = alpha/beta while the API shape settles.
License
MIT.
Project details
Release history Release notifications | RSS feed
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 polarity_keystone-0.2.3.tar.gz.
File metadata
- Download URL: polarity_keystone-0.2.3.tar.gz
- Upload date:
- Size: 62.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
be4b11e5c4328e1cb18653e1518a46f04e1e5a6234ec3f2e35af5d6c2a6b20c4
|
|
| MD5 |
7e045f4527a461548ccad99076288361
|
|
| BLAKE2b-256 |
aef972a55b3946779cefb5ca51566fa363ee5f4c28dd63ebef9f1f1718781300
|
File details
Details for the file polarity_keystone-0.2.3-py3-none-any.whl.
File metadata
- Download URL: polarity_keystone-0.2.3-py3-none-any.whl
- Upload date:
- Size: 65.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
90789f546eb92e4c97b353f3a65ef8b853c06529ee1e9ad6fbb5f3e51e31448d
|
|
| MD5 |
4ef4dfa78433b51a58834f3670445910
|
|
| BLAKE2b-256 |
6c166110872687c2aa3735f26516fc9f4f883353963140af51742a5999679984
|