Skip to main content

Python client for Agenlus model upload pipeline.

Project description

Agenlus Python Hub Client (agenlus-hub)

PyPI version Python versions License: MIT

agenlus-hub is the official Python client library for the Agenlus RL Platform. It provides a seamless interface to download custom RL environments, run local evaluations on your PyTorch models, and automatically export, build, upload, and register them onto the Agenlus leaderboards.


Key Features

  • Simple Authentication: Quick setup with single-line token authentication.
  • Environment Downloader: Easily fetch custom Gymnasium environment specifications and source code directly from the server.
  • Automatic Export: Exposes models to both PyTorch (.pt) and ONNX (.onnx) formats with dynamic batching.
  • Deterministic Evaluation: Validates model performance locally using reproducible seeds before uploading.
  • Hugging Face Hub Integration: Automates repositories creation and stacks model uploads into tidy subfolders.
  • Leaderboard Registration: Instant, automated registration of evaluated models to the Agenlus leaderboard.

Installation

Install the package and its dependencies via pip:

pip install agenlus-hub

Dependencies

Ensure you have the following prerequisites installed (or they will be installed automatically):

  • requests
  • torch
  • onnx
  • onnxscript
  • huggingface_hub
  • gymnasium (Required for local model evaluation)

Quick Start

Here is a quick walkthrough showing how to log in, download an environment, build/train your model, and upload it to the leaderboard:

import torch
import torch.nn as nn
import agenlus

# 1. Log in to your Agenlus account
agenlus.login(token="YOUR_AGENLUS_API_TOKEN")

# 2. Download the target environment (e.g., CartPole-v1)
# This downloads 'CartPole-v1.py' into your working directory
env_file_path = agenlus.download("system/CartPole-v1")

# 3. Define and train your PyTorch RL Model
class PolicyNet(nn.Module):
    def __init__(self, obs_dim=4, action_dim=2):
        super().__init__()
        self.fc = nn.Sequential(
            nn.Linear(obs_dim, 128),
            nn.ReLU(),
            nn.Linear(128, action_dim)
        )
        
    def forward(self, x):
        return self.fc(x)

# Instantiate your model (or load from disk)
model = PolicyNet()

# 4. Evaluate and Upload to Agenlus & Hugging Face
# This evaluates the model for 100 episodes, exports to ONNX/PyTorch, 
# uploads to Hugging Face, and registers the scores on the Leaderboard.
agenlus.upload(
    model=model,
    env_id="system/CartPole-v1",
    hf_token="YOUR_HUGGINGFACE_WRITE_TOKEN",
    model_name="my-first-cartpole-agent",
    episodes=100,
    seed=42
)

API Reference

agenlus.login

Authenticates your local client session.

agenlus.login(token: str, api_url: str = None)
  • token (str): Your Agenlus developer API token.
  • api_url (str, optional): Overrides the default platform backend URL.

agenlus.download

Downloads the source code of an environment registered on the platform.

save_path = agenlus.download(env_id: str, save_path: str = None)
  • env_id (str): The ID of the environment (e.g., system/CartPole-v1 or username/custom-env).
  • save_path (str, optional): Custom file path to save the code. Defaults to {env_name}.py in the current directory.
  • Returns: The path to the saved file.

agenlus.upload

Executes local evaluation, model export, Hugging Face upload, and platform leaderboard registration.

agenlus.upload(
    model: torch.nn.Module,
    env_id: str,
    hf_token: str,
    hf_repo: str = None,
    model_name: str = None,
    episodes: int = 100,
    seed: int = None
)
  • model (torch.nn.Module): The trained PyTorch model.
  • env_id (str): Target environment ID on the platform.
  • hf_token (str): Write access token for Hugging Face.
  • hf_repo (str, optional): The Hugging Face repo (e.g., username/repo-name). If omitted, checks your profile settings or defaults to username/agenlus-agents.
  • model_name (str, optional): Unique name for this model checkpoint. Subdirectories under the repository will be structured around this name.
  • episodes (int, optional): Number of episodes to run for scoring evaluation. (Default: 100).
  • seed (int, optional): Seed used to ensure deterministic environment evaluation. (Default: 42).

License

This project is licensed under the MIT License - see the LICENSE file for details.

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

agenlus_hub-0.1.4.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

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

agenlus_hub-0.1.4-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file agenlus_hub-0.1.4.tar.gz.

File metadata

  • Download URL: agenlus_hub-0.1.4.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for agenlus_hub-0.1.4.tar.gz
Algorithm Hash digest
SHA256 dfe8439244c13376fbb546ef83111e02159b670f3e628d9a6b9664ff88ad0a21
MD5 3b6fc28624c99719d61732f385d96bb3
BLAKE2b-256 3d3c7e0005e12758db609653d7bedfc7034ceb56f51f028beaa86e79561c2dd9

See more details on using hashes here.

File details

Details for the file agenlus_hub-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: agenlus_hub-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 8.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for agenlus_hub-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7e9e5586d6298c422068309ae45ddea65d4690bbc4d5764d41c30e00cd5cc825
MD5 c0c2ec8765835b0cc9e0062425a2d63a
BLAKE2b-256 876163940e5bd29fdc62eaaf3fe99286dc83a0fdc8fed61b4fdada5738788c4f

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