Metadata-Version: 2.4
Name: highrize
Version: 0.1.0
Summary: Universal AI token & cost compressor — works with any API or local model
License: MIT
Keywords: llm,tokens,compression,openai,anthropic,ai,cost
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Provides-Extra: text
Provides-Extra: image
Requires-Dist: Pillow>=10.0; extra == "image"
Provides-Extra: video
Requires-Dist: opencv-python-headless>=4.8; extra == "video"
Requires-Dist: Pillow>=10.0; extra == "video"
Provides-Extra: audio
Requires-Dist: openai-whisper; extra == "audio"
Requires-Dist: pydub; extra == "audio"
Provides-Extra: audio-fast
Requires-Dist: faster-whisper; extra == "audio-fast"
Requires-Dist: pydub; extra == "audio-fast"
Provides-Extra: document
Requires-Dist: pdfplumber; extra == "document"
Requires-Dist: beautifulsoup4; extra == "document"
Requires-Dist: python-docx; extra == "document"
Provides-Extra: openai
Requires-Dist: openai>=1.0; extra == "openai"
Provides-Extra: anthropic
Requires-Dist: anthropic>=0.25; extra == "anthropic"
Provides-Extra: soft
Requires-Dist: transformers>=4.35; extra == "soft"
Requires-Dist: torch>=2.0; extra == "soft"
Provides-Extra: cache-redis
Requires-Dist: redis>=5.0; extra == "cache-redis"
Provides-Extra: middleware
Requires-Dist: fastapi>=0.100; extra == "middleware"
Requires-Dist: starlette>=0.27; extra == "middleware"
Provides-Extra: tokens
Requires-Dist: tiktoken>=0.5; extra == "tokens"
Provides-Extra: all
Requires-Dist: Pillow>=10.0; extra == "all"
Requires-Dist: opencv-python-headless>=4.8; extra == "all"
Requires-Dist: pdfplumber; extra == "all"
Requires-Dist: beautifulsoup4; extra == "all"
Requires-Dist: python-docx; extra == "all"
Requires-Dist: openai>=1.0; extra == "all"
Requires-Dist: anthropic>=0.25; extra == "all"
Requires-Dist: tiktoken>=0.5; extra == "all"
Requires-Dist: fastapi>=0.100; extra == "all"
Requires-Dist: starlette>=0.27; extra == "all"
Dynamic: license-file

# HighRize 🗜️

**Universal AI token & cost compressor** — works with any LLM API or locally hosted model.  
Supports text, images, video, audio, and documents. Zero mandatory dependencies.

```
pip install highrize
```

---

## Why

Every token costs money. Long prompts, high-res images, raw audio — they all bloat your bills.  
`highrize` sits between your code and the AI API, compresses everything automatically, and tells you exactly how much you saved.

---

## Quick start

```python
from highrize import HighRize

tp = HighRize(model="gpt-4o", provider="openai")

result = tp.compress("Please note that I would like to ask you kindly to summarize " * 20)
print(result)
# CompressionResult(text: 740 → 160 tokens, 78.4% saved)

print(tp.report.summary())
```

---

## Drop-in client wrapper (recommended)

No changes to your existing code — just wrap your client:

```python
# OpenAI
from openai import OpenAI
from highrize import CompressedClient

client = CompressedClient(OpenAI(), model="gpt-4o")
response = client.chat.completions.create(
    model="gpt-4o",
    messages=[{"role": "user", "content": "Your long prompt here..."}]
)
print(client.tp.report.summary())
```

```python
# Anthropic
from anthropic import Anthropic
from highrize import CompressedClient

client = CompressedClient(Anthropic(), provider="anthropic", model="claude-3-5-sonnet")
response = client.messages.create(
    model="claude-3-5-sonnet-20241022",
    max_tokens=1024,
    messages=[{"role": "user", "content": "..."}]
)
```

```python
# Ollama (or any OpenAI-compatible local model)
from openai import OpenAI
from highrize import CompressedClient

ollama = OpenAI(base_url="http://localhost:11434/v1", api_key="ollama")
client = CompressedClient(ollama, model="llama3.2")
```

---

## Compress by modality

### Text

```python
from highrize.compressors import TextCompressor

tc = TextCompressor(
    remove_fillers=True,   # strip "please note that", "as an AI", etc.
    deduplicate=True,      # remove repeated sentences
    max_examples=3,        # keep at most 3 few-shot examples
)
result = tc.compress("Your prompt...")
print(result.compressed)
print(f"Saved {result.savings_pct}%")
```

### Images (vision APIs)

```python
from highrize.compressors import ImageCompressor

ic = ImageCompressor(
    max_size=(1024, 1024),  # resize to max dimensions
    quality=75,              # JPEG quality
    provider="openai",       # for token cost estimation
    low_detail=True,         # OpenAI low-detail mode (85 tokens flat)
)
result = ic.compress("photo.jpg")         # file path
result = ic.compress("data:image/...")    # base64 string
result = ic.compress(pil_image)           # PIL Image object
result = ic.compress(raw_bytes)           # bytes

print(result.compressed)  # base64 string ready for API
```

### Video

```python
from highrize.compressors import VideoCompressor

vc = VideoCompressor(
    max_frames=10,       # extract at most 10 frames
    frame_size=(768, 768),
    scene_change=True,   # pick frames where scene changes (smarter sampling)
)
result = vc.compress("video.mp4")
frames = result.compressed  # list of base64 image strings
```

### Audio

```python
from highrize.compressors import AudioCompressor

ac = AudioCompressor(
    backend="whisper_local",  # "whisper_local" | "whisper_api" | "faster_whisper"
    model_size="base",        # tiny / base / small / medium / large
    remove_silence=True,      # strip silent segments before transcription
    compress_transcript=True, # run TextCompressor on transcript
)
result = ac.compress("recording.mp3")
print(result.compressed)  # transcript text, ready to put in your prompt
```

### Documents (PDF, HTML, DOCX)

```python
from highrize.compressors import DocumentCompressor

dc = DocumentCompressor(
    token_budget=2000,           # max tokens to return
    query="What is the pricing?", # relevance ranking query (optional)
)
result = dc.compress("contract.pdf")
result = dc.compress("page.html")
result = dc.compress("report.docx")
print(result.compressed)  # most relevant chunks within budget
```

---

## Multi-modal messages

```python
tp = HighRize(model="gpt-4o")
messages = [
    {"role": "system", "content": "You are a helpful assistant. Please note that..."},
    {"role": "user", "content": [
        {"type": "text", "text": "What's in this image?"},
        {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,..."}}
    ]}
]

compressed, report = tp.compress_messages(messages)
print(report.summary())
```

---

## Savings report

```python
tp = HighRize(model="gpt-4o")

# ... make many compress() calls ...

print(tp.report.summary())
# HighRize session summary
#   Requests     : 42
#   Tokens       : 128,400 → 31,200
#   Saved        : 97,200 tokens (75.7%)
#   Cost saved   : $0.4860 USD
```

---

## Install extras

```bash
pip install highrize                          # text only (zero deps)
pip install "highrize[image]"                 # + image compression (Pillow)
pip install "highrize[video]"                 # + video (OpenCV + Pillow)
pip install "highrize[audio]"                 # + audio (Whisper + pydub)
pip install "highrize[audio-fast]"            # + faster-whisper (CPU-fast)
pip install "highrize[document]"              # + PDF/HTML/DOCX
pip install "highrize[all]"                   # everything
```

---

## Supported providers & models

| Provider | Client | `provider=` |
|---|---|---|
| OpenAI | `openai.OpenAI` | `"openai"` |
| Anthropic | `anthropic.Anthropic` | `"anthropic"` |
| Google Gemini | `google.generativeai` | `"gemini"` |
| Ollama | OpenAI compat | `"openai"` |
| LM Studio | OpenAI compat | `"openai"` |
| Any OpenAI-compat | `openai.OpenAI(base_url=...)` | `"openai"` |

---

## License

MIT
