Skip to main content

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 FlowState
  • toto_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

faim_sdk-0.1.1.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

faim_sdk-0.1.1-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

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

Hashes for faim_sdk-0.1.1.tar.gz
Algorithm Hash digest
SHA256 d269eb76c04cb4f41a50107c310ebe4fc9ef1418913a56151f0d3c702a18ef70
MD5 f927ad5a2c5377a9e6d92d49e0c53ca0
BLAKE2b-256 1acfa8cdaa6a5faae1cd3447e7707ab67c1b9de7d0ef75b0fe37eeeef66edeb3

See more details on using hashes here.

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

Hashes for faim_sdk-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5cc0fbadb7b4585e816780f9619dfad1b1fcdcccad570a0afc7bee09173c9c49
MD5 7426e13d2e59e3e00cbf053fc16ace3c
BLAKE2b-256 ef6fc16c8a12b3b1adcdca4ec87826e7dc9db3d477d1170003fc1bd230540f8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page