Skip to main content

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


Download files

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

Source Distribution

emberlm-0.1.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

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

emberlm-0.1.0-py3-none-any.whl (5.7 kB view details)

Uploaded Python 3

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

Hashes for emberlm-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a75880e403c9ff89a48aa7f3a6cdbba2b95b6a8204c220052697359897c5bccc
MD5 df56cb46ba3bf9769146999b4aedf5af
BLAKE2b-256 4d1d04656e076025101cd486f69f1f9db511a0bada9d1628fe073d468747f342

See more details on using hashes here.

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

Hashes for emberlm-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 452687fe154108e1a38debd23f5a3164d0cdb824e7a8861a39363928011f55fa
MD5 5dabd35730cb53eca254c47fd9e535b4
BLAKE2b-256 3080172b709b6fb98808dd4ccb404643b7b8062ca356dbaa4ce6e8b1588c1479

See more details on using hashes here.

Supported by

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