Python wrapper for the GWDG SAIA platform REST API
Project description
saia-python
A Python wrapper for the GWDG SAIA (Scalable AI Accelerator) platform REST API.
SAIA provides self-hosted, OpenAI-compatible AI services at GWDG, including chat completions, voice transcription/translation, document conversion, and RAG (ARCANA). This library wraps the REST API so you can use it from Python — both as an object-oriented client and as standalone functions.
Installation
pip install saia-python
Or from source:
git clone https://github.com/fschwar4/saia_python.git
cd saia_python
pip install -e .
Quick Start
from saia_python import SAIAClient
# API key auto-discovered from SAIA_API_KEY env var, .saia_api, or .env file
client = SAIAClient()
# List available models
print(client.models.list_ids())
# Chat completion
response = client.chat.completions(
model="meta-llama-3.1-8b-instruct",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response["choices"][0]["message"]["content"])
# Check your rate limits
print(client.get_rate_limits())
All services are also available as standalone functions:
from saia_python import list_model_ids, chat_completion
list_model_ids()
chat_completion(model="meta-llama-3.1-8b-instruct", messages=[...])
Supported Services
| Service | Description | GWDG Docs |
|---|---|---|
| Chat AI | Chat completions with streaming and tool calling | Chat AI |
| Voice AI | Audio transcription and translation (Whisper) | Voice AI |
| ARCANA | RAG — knowledge base management and retrieval-augmented chat | ARCANA |
| Documents | PDF/document conversion via Docling | SAIA API |
| Models | List available models, probe tool-calling support | SAIA API |
| Rate Limits | Inspect current quota and usage | SAIA API |
Repository Structure
saia-python/
├── saia_python/ # Main package
│ ├── __init__.py # Public API, version, functional wrappers
│ ├── client.py # SAIAClient — composes all services
│ ├── chat.py # ChatService — completions + streaming
│ ├── voice.py # VoiceService — transcribe + translate
│ ├── arcana.py # ArcanaService — RAG / knowledge bases
│ ├── models.py # ModelsService — list available models
│ ├── documents.py # DocumentService — Docling conversion
│ ├── openai_compat.py # OpenAI SDK compatibility layer
│ ├── auth.py # Credential and config discovery
│ ├── rate_limits.py # RateLimitInfo dataclass + parser
│ ├── exceptions.py # SAIAError hierarchy + raise_for_status
│ ├── _streaming.py # Shared SSE iterator
│ └── py.typed # PEP 561 typing marker
├── docs/ # Sphinx documentation (PyData theme)
│ ├── conf.py
│ ├── index.rst
│ ├── quickstart.rst
│ ├── explanations.rst
│ ├── architecture.rst
│ ├── implementation.rst
│ ├── configuration.rst
│ ├── api/ # API reference (one page per module)
│ ├── development.rst
│ ├── dev_notes.rst
│ ├── testing.rst
│ ├── roadmap.rst
│ └── CHANGELOG.md
├── tests/ # Unit tests
├── examples/
│ ├── saia_python_demo.ipynb # Interactive demo
│ ├── openai_compatible_proxy.ipynb # OpenAI-compatible proxy example
│ ├── config.toml.example # Template for structured config
│ └── .env.example # Template for secrets (.env)
├── .github/workflows/ # CI/CD (tests, docs, PyPI publish)
├── pyproject.toml # Package metadata + dependencies
├── CITATION.cff # Citation metadata (CFF 1.2.0)
├── .gitignore
└── README.md
Documentation
Online documentation: https://fschwar4.github.io/saia_python/
Build the docs locally:
pip install -e ".[docs]"
sphinx-build -b html -w warnings_sphinx_build.txt docs docs/_build/html
python3 -m http.server 8000 --directory docs/_build/html
Citation
If you use saia-python in your work, please cite it. Citation metadata lives in
CITATION.cff; GitHub's "Cite this repository" button renders it
as APA or BibTeX. A Zenodo DOI will be added here once the first release is
archived.
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file saia_python-0.5.0.tar.gz.
File metadata
- Download URL: saia_python-0.5.0.tar.gz
- Upload date:
- Size: 64.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1866bf70fc4777d5dabe172ca45ee54075bd0fae2458710a6f98e6cb2b590e84
|
|
| MD5 |
707d5a141c8c901169e97220efb3a5a9
|
|
| BLAKE2b-256 |
77cfec9357ac5756bc981783326021509d4dab7c72a3f77a4b826c32e1f4bbdc
|
Provenance
The following attestation bundles were made for saia_python-0.5.0.tar.gz:
Publisher:
publish.yml on fschwar4/saia_python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
saia_python-0.5.0.tar.gz -
Subject digest:
1866bf70fc4777d5dabe172ca45ee54075bd0fae2458710a6f98e6cb2b590e84 - Sigstore transparency entry: 1697980868
- Sigstore integration time:
-
Permalink:
fschwar4/saia_python@bbff5a7c64312a9ebaabe4821fcc44e843936a49 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/fschwar4
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bbff5a7c64312a9ebaabe4821fcc44e843936a49 -
Trigger Event:
release
-
Statement type:
File details
Details for the file saia_python-0.5.0-py3-none-any.whl.
File metadata
- Download URL: saia_python-0.5.0-py3-none-any.whl
- Upload date:
- Size: 56.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
acd81d90351fdd8e87f31b1eb8d203d76fbca6c6d9fb65d9c6ef12eb9994a70a
|
|
| MD5 |
ec7b8b416ad158776cce8c164eb7c1b2
|
|
| BLAKE2b-256 |
8845792b583e429519a9e4ec2d1cfc1862d9d722bd8c6a91156ed4233282b741
|
Provenance
The following attestation bundles were made for saia_python-0.5.0-py3-none-any.whl:
Publisher:
publish.yml on fschwar4/saia_python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
saia_python-0.5.0-py3-none-any.whl -
Subject digest:
acd81d90351fdd8e87f31b1eb8d203d76fbca6c6d9fb65d9c6ef12eb9994a70a - Sigstore transparency entry: 1697980954
- Sigstore integration time:
-
Permalink:
fschwar4/saia_python@bbff5a7c64312a9ebaabe4821fcc44e843936a49 -
Branch / Tag:
refs/tags/v0.5.0 - Owner: https://github.com/fschwar4
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@bbff5a7c64312a9ebaabe4821fcc44e843936a49 -
Trigger Event:
release
-
Statement type: