Metadata-Version: 2.4
Name: ai-auto-router-client
Version: 1.1.0
Summary: Thin, zero-dependency BYOK Python client for AI Auto Router
Author-email: AI Auto Router Team <dev@ai-auto-router.io>
License-Expression: Apache-2.0
Keywords: llm,ai,router,byok,openai,anthropic,gemini,groq
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
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: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# ai-auto-router-client

A lightweight, zero-external-dependency Python client for the **AI Auto Router** BYOK gateway.

Connects your application directly to your AI Auto Router instance using standard library primitives (`urllib`). Completely decouples client-side request orchestration from your private routing algorithms, Jev decision trees, and provider quality scoring.

## Installation

```bash
pip install ai-auto-router-client
```

## Quick Start (3-Line Drop-in)

```python
from ai_auto_router_client import AutoRouterClient

# Defaults to the hosted API (https://api.sentiogate.dev). Self-hosting? Pass base_url="http://localhost:8000".
router = AutoRouterClient(api_key="sg_live_...")
resp = router.chat(
    messages=[{"role": "user", "content": "Explain raft consensus in 2 sentences"}],
    provider_keys={"openai": "sk-...", "anthropic": "sk-ant-..."}
)
print(resp["choices"][0]["message"]["content"])
```

## Streaming Support

```python
for chunk in router.stream_chat(
    messages=[{"role": "user", "content": "Write a quicksort in Python"}],
    provider_keys={"openai": "sk-..."}
):
    delta = chunk.get("choices", [{}])[0].get("delta", {}).get("content", "")
    print(delta, end="", flush=True)
```

## Batch Queue & Overflow

Enqueue non-urgent tasks or absorb capacity limits asynchronously:

```python
# 1. Enqueue batch job
enq = router.enqueue_batch(
    messages=[{"role": "user", "content": "Generate 10 synthetic test cases"}],
    model="sentiogate-community"
)
print(f"Enqueued job: {enq['job_id']}")

# 2. Poll result
status = router.poll_batch(enq["job_id"])
if status.get("status") == "completed":
    print(status["response"]["choices"][0]["message"]["content"])
```

## Key Benefits

- **Zero Third-Party Dependencies**: Written entirely in pure Python standard library (`urllib`, `json`). No `httpx`, `requests`, or heavy runtime bloat.
- **Strict Privacy / Core Isolation**: Client never contains internal scoring logic or proprietary provider decision weights. All routing decisions are executed server-side.
- **Provider Key Forwarding**: Passes keys transiently via HTTPS to your router; zero persistence of keys on disk.
- **Telemetry Outcome Reporting**: Report user accept/reject outcomes to power your adaptive router learning.

## License

Apache-2.0
