Official EmberLM SDK for Python. Run versioned prompts, evaluate LLM responses, and ship AI with confidence.
Project description
emberlm
Official Python SDK for EmberLM. Run versioned prompts from your production code, evaluate LLM responses, and ship AI with confidence.
Install
pip install emberlm
Requires Python 3.8+. Zero third-party dependencies.
Quick start
Get an API key from Settings → API Keys
in the dashboard. Keys start with pk_live_.
from emberlm import Client
client = Client(api_key="pk_live_...")
result = client.run(
"summarize_docs",
variables={"document": doc_text},
)
print(result["text"])
print("passed_evals:", result["passed_evals"])
print("confidence:", result["confidence"])
print("cost_usd:", result["cost_usd"])
print("latency_ms:", result["latency_ms"])
API
Client(api_key, base_url=..., timeout=60)
client = Client(
api_key="pk_live_...",
base_url="https://emberlm.dev", # optional
timeout=60, # optional, seconds
)
client.list_prompts()
List every prompt in the API key's workspace.
data = client.list_prompts()
for p in data["prompts"]:
print(p["name"], p["current_version"])
client.get_prompt(name)
Fetch a single prompt by name. Returns the prod-tagged version if one exists,
otherwise the latest.
prompt = client.get_prompt("summarize_docs")
print(prompt["system_prompt"], prompt["user_prompt"])
client.run(prompt_name, variables=None, model=None)
Run a saved prompt. Variables are substituted into {{placeholders}}. All
workspace eval rules are applied to the output. The run is persisted and counts
toward the workspace's analytics.
result = client.run(
"classify_ticket",
variables={"body": ticket_body},
model="claude-haiku-4-5", # optional override
)
# result keys:
# run_id, prompt, version, model,
# text,
# input_tokens, output_tokens, total_tokens,
# cost_usd, latency_ms,
# passed_evals, confidence, evals,
# error
client.eval(response, rule_ids=None, prompt=None, variables=None)
Evaluate an arbitrary response against the workspace's active eval rules. Useful when the response was generated by a different SDK or model.
result = client.eval(
response=llm_response,
prompt=user_prompt, # optional
variables={"name": "Jane"}, # optional
rule_ids=["rule-id-1"], # optional, defaults to all active
)
print(result["passed"], result["confidence"])
An alias client.evaluate(...) is also available for users who prefer to
avoid the eval name.
Errors
Any non-2xx response raises EmberLMError:
from emberlm import Client, EmberLMError
try:
client.run("missing_prompt")
except EmberLMError as e:
print(e.status, str(e))
| Status | Meaning |
|---|---|
| 401 | Missing or invalid API key |
| 403 | API key's plan does not permit the SDK |
| 404 | Prompt not found in the workspace |
| 429 | Monthly call limit reached, or rate limited |
Rate limits
100 requests / minute per API key.
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 emberlm-0.1.0.tar.gz.
File metadata
- Download URL: emberlm-0.1.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a75880e403c9ff89a48aa7f3a6cdbba2b95b6a8204c220052697359897c5bccc
|
|
| MD5 |
df56cb46ba3bf9769146999b4aedf5af
|
|
| BLAKE2b-256 |
4d1d04656e076025101cd486f69f1f9db511a0bada9d1628fe073d468747f342
|
File details
Details for the file emberlm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: emberlm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
452687fe154108e1a38debd23f5a3164d0cdb824e7a8861a39363928011f55fa
|
|
| MD5 |
5dabd35730cb53eca254c47fd9e535b4
|
|
| BLAKE2b-256 |
3080172b709b6fb98808dd4ccb404643b7b8062ca356dbaa4ce6e8b1588c1479
|