Tropass SDK helps you develop and manage your models for Tropass platform
Project description
tropass-sdk — это инструмент для разработки и управления ML-моделями на платформе Тропасс.
📦 Установка
# Для pip
pip install tropass-sdk[server]
# Для uv
uv add tropass-sdk[server]
# Для poetry
poetry add tropass-sdk[server]
🛠 Подготовка приложения
Для инициализации сервера достаточно передать функцию предсказания в класс ModelServer.
Ключевые требования:
- Функция предсказания обязана принимать три аргумента
model_input,common_resourcesиrequest_metadata. - Метаданные запроса передаются внутри
model_input["request_metadata"]; аргументrequest_metadataсохранен для совместимости. - Функция предсказания обязана возвращать схему ответа модели
MLModelResponseSchema. - Инстанс
ModelServerобязан находиться в файлеmain.pyв корне проекта.
from tropass_sdk.server import ModelServer
from tropass_sdk.schemas.model_contract_schema import MLModelRequestMetadataSchema, MLModelResponseSchema
def predict_handler(
model_input: dict[str, typing.Any],
common_resources: dict[str, typing.Any],
) -> MLModelResponseSchema:
# Логика инференса модели
return MLModelResponseSchema(panel_items=[])
server = ModelServer(
model_func=predict_handler,
model_name="my_model",
model_description="Production model description",
model_version="1.0.0",
debug=False
)
Метаданные запроса
ModelServer автоматически извлекает метаданные из HTTP-заголовков запроса к /prediction и добавляет их в
model_input по ключу request_metadata.
Поддерживаемые заголовки:
X-User-ID— идентификатор пользователя. Доступен какmodel_input["request_metadata"]["user_id"].X-User-Locale— локаль пользователя. Доступна какmodel_input["request_metadata"]["locale"], значение по умолчанию —ru.X-User-Api-Token— API-токен пользователя. Доступен какmodel_input["request_metadata"]["user_api_token"].
Пример использования:
def predict_handler(
model_input: dict[str, typing.Any],
common_resources: dict[str, typing.Any],
) -> MLModelResponseSchema:
request_metadata = model_input["request_metadata"]
user_id = request_metadata["user_id"]
locale = request_metadata["locale"]
# Логика инференса модели с учетом пользователя и локали
return MLModelResponseSchema(panel_items=[])
После обработки заголовков model_input получает такой вид:
{
"input_name": ["input_value"],
"request_metadata": {
"user_id": "user_id",
"locale": "ru",
"user_api_token": "token",
},
}
⚡ Варианты запуска
Для запуска создайте экземпляр приложения c помощью метода build_application. Важно! Имя приложения обязательно должно быть application:
application = server.build_application()
Запуск: uvicorn main:application --host 0.0.0.0 --port 8000 --workers 4
🌉 Клиент для вызова моделей через Gateway
GatewayClient — асинхронный клиент для вызова моделей через Gateway. Клиент сам создает HTTP-соединение,
добавляет приватный токен в заголовок Authorization: Bearer ..., выполняет retry через stamina и защищает вызов circuit breaker
через circuitbreaker.
import typing
import uuid
from tropass_sdk.client import GatewayClient
async def call_gateway_model() -> dict[str, typing.Any]:
async with GatewayClient(
gateway_url="https://api.tropass.me",
gateway_api_token="private-token",
) as gateway_client:
return await gateway_client.call_model(
model_id=uuid.UUID("00000000-0000-0000-0000-000000000123"),
model_request_data={
"input_name": ["input-value"]
},
)
call_model отправляет запрос на api/rpc/call-model в формате:
{
"model_id": "00000000-0000-0000-0000-000000000123",
"model_request_data": {
"input_name": ["input-value"]
},
}
Для настройки клиента можно передать GatewayClientConfig в аргумент client_config.
Параметры конфигурации:
timeout_seconds— HTTP timeout одного запроса к Gateway.retry_attempts— максимальное количество попыток выполнить запрос.retry_timeout_seconds— общий лимит времени на retry-цикл.retry_wait_exp_base— база экспоненциального роста паузы между retry.circuit_failure_threshold— количество неуспешных вызовов до открытия circuit breaker.circuit_recovery_seconds— время до попытки восстановить circuit breaker.circuit_success_threshold— зарезервирован для совместимости конфигурации.
Метод возвращает dict с ответом Gateway или выбрасывает GatewayCallError.
Оригинальная причина ошибки доступна через __cause__: например открытый circuit breaker, некорректный JSON,
HTTP-ошибка или ошибка транспорта после всех retry.
🔍 Мониторинг и наблюдаемость
Благодаря интеграции с microbootstrap, сервис из коробки поддерживает:
- Метрики: Доступны по эндпоинту
/metricsв формате Prometheus. - Health Checks: Проверка состояния сервиса доступна по пути
/health. - Логирование: Структурированные логи готовы к сбору в ELK/Loki.
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 tropass_sdk-1.5.0.tar.gz.
File metadata
- Download URL: tropass_sdk-1.5.0.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5dfa9d1946ec67a93be53e216d68eea8867ea9d8d95a41a820b443b91c32d6b
|
|
| MD5 |
30567a85fabc488e5325df1507347dfe
|
|
| BLAKE2b-256 |
19b678eb499d9822ca6803710dbf66513602ae950b8d993a3966362b97ea63c9
|
File details
Details for the file tropass_sdk-1.5.0-py3-none-any.whl.
File metadata
- Download URL: tropass_sdk-1.5.0-py3-none-any.whl
- Upload date:
- Size: 14.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.28 {"installer":{"name":"uv","version":"0.11.28","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d5c64784a6e2875b885239185d2f44a3bf9a1acecb6e98536e8f2414283eeb7
|
|
| MD5 |
baae6cecc449b4ca4624cfdc03538a64
|
|
| BLAKE2b-256 |
95a2fe3ff352afe7a14e975f1cd31774d094b2d80f11c866f5cdef314d70bf79
|