Python SDK for Jammi AI Platform — the commercial managed audit-native AI platform
Project description
jammi-ai-platform
Python SDK for the Jammi AI Platform — the commercial managed audit-native AI platform. Talks to a Jammi SaaS endpoint via gRPC with bearer-token authentication.
Install
pip install jammi-ai-platform
Wheel-only distribution. Python 3.9+ on Linux / macOS / Windows.
Quickstart
import jammi_ai_platform as jap
with jap.Connection(url="https://api.jammi.cloud", api_key="jt_…") as conn:
print(conn.tenant_id) # resolved via WhoAmI at connect time
print(conn.token_label) # label of the bearer in use
registry = jap.Registry(conn)
model_id = registry.register_model("recall-q4", task="embedding")
version_id = registry.register_version(
model_id,
jammi_model_id="bge-small-en-v1.5",
source=jap.ManualSource(metric_name="recall_at_k", metric_value=0.92),
)
jap.Gate(conn).check(
version_id,
jap.GateConfig(
gate_name="ship-gate",
source_id="patents",
golden_set="golden-1",
k=10,
rule=jap.ThresholdRule(
metric_name=jap.MetricName.RECALL_AT_K,
threshold=0.85,
op=jap.ThresholdOp.GE,
),
),
)
Use http://… / grpc://… instead of https://… / grpcs://… for local
insecure development.
Configuration is typed
Every control-plane config is a typed builder, not an untyped dict: enums for
the *_type/direction/op fields (so an invalid value is a construction
error), and tagged-union variants dispatched by type — MaxIterationsBudget /
WallClockBudget / NoImprovementBudget for an ExperimentConfig budget,
EmbeddingTarget / InferenceTarget for a MonitorConfig target,
ThresholdRule / RangeRule / WelchTTestRule / MannWhitneyURule /
ParetoDominatesRule / CompoundRule for a gate Rule, and
ExperimentIterationSource / ManualSource for a registry version source. The
open JSON/Struct payloads — an experiment's search_space, a validation's
perturbation_params, an evidence config_json — stay plain dicts.
Data plane (composed from jammi-client)
connect, RemoteDatabase, and BearerCredentials are re-exported from
jammi-client: the embed / search / sql data plane comes from there, the
control plane lives here, and both ride jammi-client's bearer transport.
The data plane and the control plane open separate sessions. A
jap.Connection is bearer-scoped — it resolves a tenant via WhoAmI and vends
the control-plane handles. jap.connect(target, credentials=...) opens its own
RemoteDatabase session (jammi-session-id scoped) for the data plane. They are
two independent connections, not one shared channel; open each explicitly.
Surface
Connection— control-plane gRPC channel + bearer auth, callsWhoAmIat connectconnect/RemoteDatabase— re-exported jammi-client data plane (embed / search / sql)Registry— model + version + evidence catalogGate— quality-gate checksMonitor— embedding / inference / divergence monitors + run streamingExperiment— Bayesian / Grid / Random experimentsDeploymentBlocks— block / unblock sources from production trafficResilience— perturbation-based validation runsAuth— issue / revoke / list API keys;WhoAmITenants— read-only tenant directory lookup
Errors
status_to_exception (in jammi_ai_platform.errors) maps every
gRPC status code to a typed Python exception. The hierarchy:
EnterpriseExceptionNotFoundErrorAlreadyExistsErrorTransitionNotAllowedErrorTenantUnboundErrorConfigErrorPermissionDeniedError
Docs
Full docs at https://docs.jammi.cloud.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
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 jammi_ai_platform-0.5.0-py3-none-any.whl.
File metadata
- Download URL: jammi_ai_platform-0.5.0-py3-none-any.whl
- Upload date:
- Size: 110.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51fa82e978f30e6eb627e9b211a3482ba8538bafd124edf8dc5de1734acf21bc
|
|
| MD5 |
e040f2448b5106d58449a15bc1cbf90a
|
|
| BLAKE2b-256 |
3d01cea803f6deed31aa71c05a28ae11d6dbd91185b89cfe1eaa13dfe65d6b6f
|
Provenance
The following attestation bundles were made for jammi_ai_platform-0.5.0-py3-none-any.whl:
Publisher:
sdk-pypi.yml on f-inverse/jammi-enterprise
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
jammi_ai_platform-0.5.0-py3-none-any.whl -
Subject digest:
51fa82e978f30e6eb627e9b211a3482ba8538bafd124edf8dc5de1734acf21bc - Sigstore transparency entry: 1750619971
- Sigstore integration time:
-
Permalink:
f-inverse/jammi-enterprise@95e7f37122547e7dd38c53741d26fe4123c43c3d -
Branch / Tag:
refs/tags/sdk-v0.5.0 - Owner: https://github.com/f-inverse
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
sdk-pypi.yml@95e7f37122547e7dd38c53741d26fe4123c43c3d -
Trigger Event:
push
-
Statement type: