Python SDK for FAIM time-series forecasting with foundation AI models
Project description
FAIM SDK
Python SDK for FAIM time-series forecasting with foundation AI models.
Installation
pip install faim-sdk
Quick Start
import numpy as np
from faim_sdk import ForecastClient, FlowStateForecastRequest
from faim_client.models import ModelName
# Initialize client
client = ForecastClient(
base_url="http://localhost:8003",
timeout=60.0
)
# Prepare your time-series data
# Shape: (batch_size, sequence_length, features)
data = np.random.randn(1, 100, 1).astype(np.float32)
# Create forecast request
request = FlowStateForecastRequest(
x=data,
horizon=10,
model_version="1"
)
# Generate forecast
response = client.forecast(ModelName.FLOWSTATE, request)
# Access predictions
print(response.point) # Shape: (batch_size, horizon, features)
print(response.metadata) # Model metadata
Models
FlowState
Point forecasting model optimized for deterministic predictions.
from faim_sdk import FlowStateForecastRequest
request = FlowStateForecastRequest(
x=data,
horizon=10,
model_version="1",
output_type="point", # Options: "point", "quantiles", "samples"
scale_factor=1.0, # Optional normalization
prediction_type="mean" # Options: "mean", "median", "quantile"
)
ToTo
Probabilistic forecasting model with quantile and sample-based predictions.
from faim_sdk import ToToForecastRequest
# Quantile predictions
request = ToToForecastRequest(
x=data,
horizon=10,
model_version="1",
output_type="quantiles",
quantiles=[0.1, 0.5, 0.9] # 10th, 50th, 90th percentiles
)
# Sample-based predictions
request = ToToForecastRequest(
x=data,
horizon=10,
model_version="1",
output_type="samples",
num_samples=100
)
Response Format
All forecasts return a ForecastResponse object:
response = client.forecast(ModelName.TOTO, request)
# Access predictions based on output_type
if response.point is not None:
predictions = response.point # Shape: (batch_size, horizon, features)
if response.quantiles is not None:
quantiles = response.quantiles # Shape: (batch_size, horizon, num_quantiles)
if response.samples is not None:
samples = response.samples # Shape: (batch_size, horizon, num_samples)
# Access metadata
print(response.metadata) # {'model_name': 'toto', 'model_version': '1'}
Async Usage
async with ForecastClient(base_url="http://localhost:8003") as client:
response = await client.forecast_async(ModelName.FLOWSTATE, request)
print(response.point)
Examples
See the examples/ directory for complete notebook examples:
flowstate_simple_example.ipynb- Point forecasting with FlowStatetoto_simple_example.ipynb- Probabilistic forecasting with ToTo
Error Handling
The SDK provides specific exception types for different error scenarios:
from faim_sdk import (
ModelNotFoundError,
ValidationError,
TimeoutError,
NetworkError,
SerializationError
)
try:
response = client.forecast(ModelName.FLOWSTATE, request)
except ModelNotFoundError:
print("Model or version not found")
except ValidationError:
print("Invalid request parameters")
except TimeoutError:
print("Request timed out")
except NetworkError:
print("Network communication failed")
except SerializationError:
print("Failed to serialize/deserialize data")
Configuration
Client Options
# Without authentication
client = ForecastClient(
base_url="https://api.example.com",
timeout=120.0, # Request timeout in seconds
verify_ssl=True, # SSL certificate verification
**httpx_kwargs # Additional httpx.Client arguments
)
# With API key authentication
client = ForecastClient(
base_url="https://api.example.com",
api_key="your-secret-api-key", # API key for authentication
timeout=120.0,
verify_ssl=True
)
Request Options
request = FlowStateForecastRequest(
x=data,
horizon=10,
model_version="1",
compression="zstd", # Options: "zstd", "lz4", None
)
Requirements
- Python >= 3.10
- numpy >= 1.20.0
- pyarrow >= 10.0.0
- httpx >= 0.23.0
License
Apache 2.0
Project details
Release history Release notifications | RSS feed
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 faim_sdk-0.1.1.tar.gz.
File metadata
- Download URL: faim_sdk-0.1.1.tar.gz
- Upload date:
- Size: 16.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.13 Darwin/24.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d269eb76c04cb4f41a50107c310ebe4fc9ef1418913a56151f0d3c702a18ef70
|
|
| MD5 |
f927ad5a2c5377a9e6d92d49e0c53ca0
|
|
| BLAKE2b-256 |
1acfa8cdaa6a5faae1cd3447e7707ab67c1b9de7d0ef75b0fe37eeeef66edeb3
|
File details
Details for the file faim_sdk-0.1.1-py3-none-any.whl.
File metadata
- Download URL: faim_sdk-0.1.1-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.13 Darwin/24.6.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5cc0fbadb7b4585e816780f9619dfad1b1fcdcccad570a0afc7bee09173c9c49
|
|
| MD5 |
7426e13d2e59e3e00cbf053fc16ace3c
|
|
| BLAKE2b-256 |
ef6fc16c8a12b3b1adcdca4ec87826e7dc9db3d477d1170003fc1bd230540f8e
|