Metadata-Version: 2.4
Name: emberlm
Version: 0.1.1
Summary: Official EmberLM SDK for Python. Run versioned prompts, evaluate LLM responses, and ship AI with confidence.
Author: EmberLM
License: MIT
Project-URL: Homepage, https://emberlm.dev
Project-URL: Documentation, https://emberlm.dev/docs
Project-URL: Source, https://github.com/MSaiRam10/emberlm-python
Keywords: emberlm,llm,prompt,ai,evaluation,openai,anthropic
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# emberlm

Official Python SDK for [EmberLM](https://emberlm.dev). Run versioned prompts
from your production code, evaluate LLM responses, and ship AI with confidence.

## Install

```bash
pip install emberlm
```

Requires Python 3.8+. Zero third-party dependencies.

## Quick start

Get an API key from [Settings → API Keys](https://emberlm.dev/dashboard/settings)
in the dashboard. Keys start with `pk_live_`.

```python
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)`

```python
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.

```python
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.

```python
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.

```python
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.

```python
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`:

```python
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
