Python SDK for VitaAI self-hosted LLM endpoints — drop-in Gemini API replacement
Project description
vitaai · Python SDK
Drop-in Python SDK for VitaAI self-hosted LLM endpoints.
Designed to mirror the Google Gemini SDK interface — so migrating existing Gemini projects takes changing one import.
Install
pip install vitaai
Quick start
from vitaai import VitaAI
client = VitaAI(
api_key="your-api-key",
base_url="http://your-server-ip:8000"
)
response = client.models.generate_content(
model="gemma-2b-it",
contents="What is AI?",
max_output_tokens=100
)
print(response.text)
print("Tokens:", response.usage_metadata.total_token_count)
All endpoints
1. Generate content
response = client.models.generate_content(
model="gemma-2b-it",
contents="What is machine learning?",
max_output_tokens=150
)
print(response.text)
print(response.usage_metadata.total_token_count)
2. Generate with config
response = client.models.generate_content(
model="gemma-2b-it",
contents="Explain deep learning",
config={
"system_instruction": "You are a teacher. Explain simply.",
"temperature": 0.7,
"top_p": 0.9,
"max_output_tokens": 200
}
)
print(response.text)
3. Multi-turn conversation
response = client.models.generate_content(
model="gemma-2b-it",
contents=[
{"role": "user", "parts": [{"text": "My name is Alex."}]},
{"role": "model", "parts": [{"text": "Nice to meet you, Alex!"}]},
{"role": "user", "parts": [{"text": "What is my name?"}]},
]
)
print(response.text)
4. Streaming
for chunk in client.models.generate_content_stream(
model="gemma-2b-it",
contents="Write a short poem about AI",
max_output_tokens=100
):
print(chunk.text, end="", flush=True)
print()
5. Embeddings
response = client.models.embed_content(
contents="Artificial intelligence is transforming the world"
)
print("Dimensions:", len(response.embedding.values))
print("Values :", response.embedding.values)
6. Summarize
response = client.models.summarize(
contents="Long text you want to summarize...",
format="bullets", # "paragraph" or "bullets"
max_output_tokens=150
)
print(response.summary)
print("Tokens:", response.usage_metadata.total_token_count)
7. List available models
for model in client.models.list():
print(model["name"])
print(model["displayName"])
Error handling
from vitaai.transport import AuthenticationError, RateLimitError, ServerError
try:
response = client.models.generate_content(
model="gemma-2b-it",
contents="Hello"
)
print(response.text)
except AuthenticationError:
print("Invalid API key")
except RateLimitError:
print("Too many requests")
except ServerError:
print("Server error")
except Exception as e:
print(f"Error: {e}")
Client parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
api_key |
str | — | Your API key. Or set VITAAI_API_KEY env var |
base_url |
str | https://api.vitaai-api.com |
Your server URL |
timeout |
int | 120 |
Request timeout in seconds. Increase for slow CPU servers |
client = VitaAI(
api_key="your-key",
base_url="http://your-server:8000",
timeout=300
)
config options
| Key | Type | Default | Description |
|---|---|---|---|
system_instruction |
str | None | Sets model behaviour |
temperature |
float | 0.7 | Randomness (0 = focused, 1 = creative) |
top_p |
float | 0.9 | Diversity of responses |
max_output_tokens |
int | 100 | Maximum length of response |
Migration from Google Gemini
| Before (google.genai) | After (vitaai) |
|---|---|
from google import genai |
from vitaai import VitaAI |
client = genai.Client() |
client = VitaAI() |
client.models.generate_content(...) |
client.models.generate_content(...) |
response.text |
response.text ✅ same |
response.usage_metadata |
response.usage_metadata ✅ same |
Endpoint contract
Your self-hosted backend must expose these routes:
| Method | Path | Purpose |
|---|---|---|
| POST | /v1/models/generate |
Text generation |
| POST | /v1/models/generate?stream=true |
Streaming |
| POST | /v1/models/embed |
Embeddings |
| POST | /v1/models/summarize |
Summarization |
| GET | /v1/models/list |
List models |
Environment variables
| Variable | Description |
|---|---|
VITAAI_API_KEY |
API key (alternative to passing api_key=) |
VITAAI_BASE_URL |
Override base URL |
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
vitaai-0.4.0.tar.gz
(23.9 kB
view details)
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
vitaai-0.4.0-py3-none-any.whl
(32.9 kB
view details)
File details
Details for the file vitaai-0.4.0.tar.gz.
File metadata
- Download URL: vitaai-0.4.0.tar.gz
- Upload date:
- Size: 23.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
236c3adcd8af2b32f70e05880d8961e15a62b9d2d8f350f0a124af91b7c50df9
|
|
| MD5 |
9340ba9d23f4e0c10899870298c6e41c
|
|
| BLAKE2b-256 |
eedcd0e367d1813031e74693f8091952e22a1109fc16e6c1ecb94da18044cf13
|
File details
Details for the file vitaai-0.4.0-py3-none-any.whl.
File metadata
- Download URL: vitaai-0.4.0-py3-none-any.whl
- Upload date:
- Size: 32.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6c9a0e320e84c0a36901e85a2dad74ba7753a2bd1a301bbf988e0ece98e8262e
|
|
| MD5 |
5d403a5a639e8f539e7a4019b60b121a
|
|
| BLAKE2b-256 |
803f1dfcaf0c41ada0d39e47e0618697528c54b7a4e5102025e6739a398eb47f
|