Metadata-Version: 2.4
Name: shapleycut-api
Version: 0.2.4
Summary: ShapleyCut service
Requires-Python: >=3.11
Requires-Dist: fastapi>=0.115
Requires-Dist: httpx>=0.27
Requires-Dist: shapleycut-core
Requires-Dist: uvicorn[standard]>=0.32
Description-Content-Type: text/markdown

# ShapleyCut API

Dedicated service for the ShapleyCut compression engine. This package exposes HTTP endpoints for optimizing memory and running the gateway mode.

Core engine: https://pypi.org/project/shapleycut-core/

## Install

```bash
pip install shapleycut-api
```

## Quickstart

```bash
python -m uvicorn shapleycut_api.main:app --host 0.0.0.0 --port 8000
```

If you are on Python 3.14 and see `httptools` errors, use:

```bash
python -m uvicorn shapleycut_api.main:app --host 0.0.0.0 --port 8000 --http h11
```

## SDK snippet (Python)

```python
from shapleycut import MemoryMessage, optimize_messages

messages = [
	MemoryMessage(role="system", content="You are a helpful assistant."),
	MemoryMessage(role="user", content="Summarize the project status."),
	MemoryMessage(role="assistant", content="We shipped MVP and added gateway mode."),
]

out = optimize_messages(messages, max_output_tokens=512)
print(out.optimized_memory)
```

## Endpoints

- `GET /health`
- `POST /v1/optimize`
- `POST /v1/chat/completions`
- `POST /v1/responses`
- `GET /v1/metrics`
- `GET /v1/metrics/export`

## Environment

LLM credentials (server side only):

- `GITHUB_TOKEN` or `GH_TOKEN`
- `GITHUB_INFERENCE_BASE_URL` (default: `https://models.github.ai/inference`)
- `OPENAI_API_KEY`
- `OPENAI_BASE_URL` (default: `https://api.openai.com/v1`)

Gateway settings:

- `SHAPLEYCUT_GATEWAY_PROVIDER` (`github_azure`, `openai`, `anthropic`)
- `SHAPLEYCUT_GATEWAY_BASE_URL`
- `SHAPLEYCUT_GATEWAY_API_KEY_ENV`
- `SHAPLEYCUT_GATEWAY_API_KEY`
- `SHAPLEYCUT_GATEWAY_REQUIRE_KEY`
- `SHAPLEYCUT_GATEWAY_ALLOW_OVERRIDE`
- `SHAPLEYCUT_GATEWAY_LOG`
- `SHAPLEYCUT_GATEWAY_DB`
- `SHAPLEYCUT_GATEWAY_METRICS_MAX`
- `SHAPLEYCUT_GATEWAY_CACHE_MAX`
- `SHAPLEYCUT_GATEWAY_CACHE_TTL_S`

## Notes

- `/v1/responses` is not supported when `SHAPLEYCUT_GATEWAY_PROVIDER=github_azure`. Use `/v1/chat/completions` or set the provider to `openai`.
