Metadata-Version: 2.4
Name: strata-forge
Version: 0.0.1
Summary: Typed, async-first baseline for AI/LLM experiments across major foundation-model providers.
Project-URL: Homepage, https://github.com/GemovicNemanja/strata-forge
Project-URL: Repository, https://github.com/GemovicNemanja/strata-forge
Project-URL: Issues, https://github.com/GemovicNemanja/strata-forge/issues
Author-email: Nemanja Gemovic <nemanja.gemovic@wonder.so>
License-Expression: Apache-2.0
License-File: LICENSE
License-File: NOTICE
Keywords: agents,ai,async,evaluation,fine-tuning,llm,rag
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.14
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Typing :: Typed
Requires-Python: >=3.14
Requires-Dist: anyio>=4.6
Requires-Dist: jinja2>=3.1
Requires-Dist: litellm>=1.55
Requires-Dist: pydantic-settings>=2.6
Requires-Dist: pydantic>=2.10
Requires-Dist: python-dotenv>=1.0
Requires-Dist: pyyaml>=6.0
Requires-Dist: rich>=13.9
Requires-Dist: structlog>=24.4
Requires-Dist: tenacity>=9.0
Requires-Dist: typer>=0.15
Provides-Extra: all
Requires-Dist: accelerate>=1.1; extra == 'all'
Requires-Dist: adlfs>=2024.7; extra == 'all'
Requires-Dist: asyncssh>=2.18; extra == 'all'
Requires-Dist: boto3>=1.35; extra == 'all'
Requires-Dist: cohere>=5.13; extra == 'all'
Requires-Dist: datasets>=3.1; extra == 'all'
Requires-Dist: fsspec>=2024.10; extra == 'all'
Requires-Dist: gcsfs>=2024.10; extra == 'all'
Requires-Dist: huggingface-hub>=0.27; extra == 'all'
Requires-Dist: inspect-ai>=0.3; extra == 'all'
Requires-Dist: langfuse>=2.50; extra == 'all'
Requires-Dist: nltk>=3.9; extra == 'all'
Requires-Dist: peft>=0.13; extra == 'all'
Requires-Dist: pillow>=11.0; extra == 'all'
Requires-Dist: qdrant-client>=1.13; extra == 'all'
Requires-Dist: rank-bm25>=0.2.2; extra == 'all'
Requires-Dist: redis>=5.2; extra == 'all'
Requires-Dist: rouge-score>=0.1.2; extra == 'all'
Requires-Dist: s3fs>=2024.10; extra == 'all'
Requires-Dist: skypilot>=0.7; extra == 'all'
Requires-Dist: torch>=2.5; extra == 'all'
Requires-Dist: transformers>=4.46; extra == 'all'
Requires-Dist: trl>=0.13; extra == 'all'
Requires-Dist: vllm>=0.7; extra == 'all'
Provides-Extra: bedrock
Requires-Dist: boto3>=1.35; extra == 'bedrock'
Provides-Extra: compute
Requires-Dist: asyncssh>=2.18; extra == 'compute'
Requires-Dist: skypilot>=0.7; extra == 'compute'
Provides-Extra: evals
Requires-Dist: nltk>=3.9; extra == 'evals'
Requires-Dist: rouge-score>=0.1.2; extra == 'evals'
Provides-Extra: finetuning
Requires-Dist: accelerate>=1.1; extra == 'finetuning'
Requires-Dist: datasets>=3.1; extra == 'finetuning'
Requires-Dist: peft>=0.13; extra == 'finetuning'
Requires-Dist: torch>=2.5; extra == 'finetuning'
Requires-Dist: transformers>=4.46; extra == 'finetuning'
Requires-Dist: trl>=0.13; extra == 'finetuning'
Provides-Extra: hf
Requires-Dist: datasets>=3.1; extra == 'hf'
Provides-Extra: inspect
Requires-Dist: inspect-ai>=0.3; extra == 'inspect'
Provides-Extra: langfuse
Requires-Dist: langfuse>=2.50; extra == 'langfuse'
Provides-Extra: multimodal
Requires-Dist: pillow>=11.0; extra == 'multimodal'
Provides-Extra: rag
Requires-Dist: cohere>=5.13; extra == 'rag'
Requires-Dist: qdrant-client>=1.13; extra == 'rag'
Requires-Dist: rank-bm25>=0.2.2; extra == 'rag'
Provides-Extra: redis
Requires-Dist: redis>=5.2; extra == 'redis'
Provides-Extra: serving
Requires-Dist: vllm>=0.7; extra == 'serving'
Provides-Extra: storage
Requires-Dist: adlfs>=2024.7; extra == 'storage'
Requires-Dist: fsspec>=2024.10; extra == 'storage'
Requires-Dist: gcsfs>=2024.10; extra == 'storage'
Requires-Dist: huggingface-hub>=0.27; extra == 'storage'
Requires-Dist: s3fs>=2024.10; extra == 'storage'
Description-Content-Type: text/markdown

# strata-forge

Typed, async-first toolkit for AI/LLM work — inference, evaluation, fine-tuning, retrieval, and
remote compute orchestration across the major foundation-model providers.

Built on **LiteLLM** for provider breadth and **Pydantic v2** for strict typing. The public API is
async, with sync wrappers in `strata_forge.sync` for CLI and notebook ergonomics. Heavy optional
dependencies (training, serving, remote compute) live behind extras, so the base install stays light.

## Install

```bash
pip install strata-forge
```

Requires **Python 3.14+**.

Optional extras pull in the heavy dependencies only when you need them:

```bash
pip install "strata-forge[rag]"        # embeddings, vector store, reranking
pip install "strata-forge[compute]"    # SkyPilot + SSH remote execution
pip install "strata-forge[serving]"    # vLLM
pip install "strata-forge[finetuning]" # torch, transformers, trl, peft
pip install "strata-forge[all]"        # everything
```

Full set: `redis`, `multimodal`, `inspect`, `langfuse`, `hf`, `evals`, `rag`, `compute`, `serving`,
`bedrock`, `storage`, `finetuning`, `all`.

## Quickstart

```python
import asyncio

from strata_forge.llm import LLMClient, Message


async def main() -> None:
    client = LLMClient("gpt-5.5", provider="openai")
    response = await client.complete([Message.user("Say hello in one short sentence.")])
    print(response.text)


asyncio.run(main())
```

Provider credentials are read from the environment (for example `OPENAI_API_KEY`). A CLI is
installed as `strata-forge`.

## What's in it

| Module | Purpose |
|---|---|
| `strata_forge.llm` | Provider abstraction, structured output, tool calling, two-axis fallback |
| `strata_forge.core` | Cross-cutting errors, retry, logging, budget ceilings, reproducibility |
| `strata_forge.config` | Pydantic Settings root with YAML overlays and `.env` support |
| `strata_forge.prompts` | Jinja2 and Langfuse-backed prompt registry |
| `strata_forge.tracing` | Langfuse observability |
| `strata_forge.datasets` | Dataset CRUD with a Hugging Face bridge |
| `strata_forge.evals` | Experiment runner, graders, metrics |
| `strata_forge.agents` | Agent runtime, memory, multi-agent composition |
| `strata_forge.rag` | Embed, chunk, store, retrieve, rerank |
| `strata_forge.storage` | fsspec gateway and Hugging Face Hub |
| `strata_forge.compute` | SkyPilot and SSH backends, serving, batch inference |
| `strata_forge.training` | SFT / DPO / ORPO / KTO / GRPO with PEFT |
| `strata_forge.pipelines` | Runnable entrypoints executed on a compute target |

## Documentation

Reference docs live in the repository:

- [Architecture overview](https://github.com/GemovicNemanja/strata-forge/blob/main/docs/architecture/overview.md)
- [Architecture Decision Records](https://github.com/GemovicNemanja/strata-forge/tree/main/docs/architecture/adr)
- [Per-module API reference](https://github.com/GemovicNemanja/strata-forge/tree/main/docs/modules)

## Development

```bash
uv sync        # materialize the venv + lockfile
make check     # lint (ruff) + type-check (pyright strict)
make test      # unit tests
```

## License

[Apache License 2.0](https://github.com/GemovicNemanja/strata-forge/blob/main/LICENSE).
