Metadata-Version: 2.4
Name: llm-obscurify
Version: 0.1.0
Summary: LLM plugin for Obscurify.ai, a private AI API with 200+ models
Author-email: "Obscurify.ai" <contact@obscurify.ai>
License-Expression: MIT
Project-URL: Homepage, https://obscurify.ai/?utm_source=llm-obscurify
Project-URL: Documentation, https://github.com/Obscurify-ai/llm-obscurify#readme
Project-URL: Repository, https://github.com/Obscurify-ai/llm-obscurify
Project-URL: Issues, https://github.com/Obscurify-ai/llm-obscurify/issues
Project-URL: API docs, https://obscurify.ai/api-docs
Keywords: llm,obscurify,privacy,ai,openai-compatible
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: llm>=0.34
Requires-Dist: httpx
Requires-Dist: openai>=1.0
Dynamic: license-file

# llm-obscurify

[![PyPI](https://img.shields.io/pypi/v/llm-obscurify.svg)](https://pypi.org/project/llm-obscurify/)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Obscurify-ai/llm-obscurify/blob/main/LICENSE)

[LLM](https://llm.datasette.io/) plugin for [Obscurify.ai](https://obscurify.ai/?utm_source=llm-obscurify), a private AI service with an OpenAI-compatible API and 200+ models.

Obscurify.ai doesn't store prompts or responses, scrambles identities before requests reach model providers, and sends text requests only over zero-data-retention routes. Accounts are a random account number: no email, username or phone.

## Installation

```bash
llm install llm-obscurify
```

## Configuration

1. Create an account at [obscurify.ai](https://obscurify.ai/?utm_source=llm-obscurify) and add a balance. The API works on every plan with a positive balance. New accounts get $1 of starter credit (limits apply; see https://obscurify.ai/pricing).
2. Open https://obscurify.ai/account and click **Show API Key**. Keys look like `sk-obs1_...`.
3. Give the key to LLM:

```bash
llm keys set obscurify
# Paste key here
```

Or set the `OBSCURIFY_API_KEY` environment variable.

Models show up in `llm models` once a key is set.

## Usage

```bash
llm -m obscurify/deepseek/deepseek-v4-flash "Five names for a privacy-minded pet hedgehog"
```

Chat:

```bash
llm chat -m obscurify/meta-llama/llama-3.3-70b-instruct
```

Set a default:

```bash
llm models default obscurify/deepseek/deepseek-v4-flash
```

### Reasoning

Every model accepts the `reasoning_effort` option (`none`, `minimal`, `low`, `medium`, `high`, `xhigh`, `max`; which levels a model honours depends on the model). Reasoning text is shown as it streams; hide it with `-R`.

```bash
llm -m obscurify/z-ai/glm-5.3-flash -o reasoning_effort low "Is 221 prime?"
```

### Tools and schemas

Models that support tool calling work with `--tool`/`--functions` and `--schema`:

```bash
llm -m obscurify/deepseek/deepseek-v4-flash --functions '
def multiply(x: int, y: int) -> int:
    """Multiply two numbers."""
    return x * y
' "What is 34234 * 213345?" --td

llm -m obscurify/deepseek/deepseek-v4-flash --schema 'name, age int, bio' "Invent a dog"
```

### Python

```python
import llm

model = llm.get_model("obscurify/deepseek/deepseek-v4-flash")
print(model.prompt("Write a haiku about privacy.").text())
```

## Models

List the models, with context length, tool support and price per million tokens:

```bash
llm obscurify models
llm obscurify models -q qwen          # filter
llm obscurify models --json
```

The list is cached for an hour. Refresh it with `llm obscurify refresh`. Frontier models need the Casual plan and uncensored models need Pro; per-model prices are at https://obscurify.ai/model_cards.

## Development

```bash
git clone https://github.com/Obscurify-ai/llm-obscurify
cd llm-obscurify
uv run --group test pytest   # live tests, needs OBSCURIFY_API_KEY
```

## Links

- API docs: https://obscurify.ai/api-docs
- Privacy policy: https://obscurify.ai/privacy
- Contact: https://obscurify.ai/contact

MIT licensed.
