Skip to main content

SingTown AI Python Client

Project description

SingTown AI Python SDK

This SDK is designed to interact with SingTown AI Cloud Service or SingTown AI Standalone(self-hosted).

Installation

pip install singtown_ai

Usage

Login Configuration

  • SingTown AI Cloud Service: The host is "https://ai.singtown.com".
  • SingTown AI Standalone (self-hosted): The host is something like "http://127.0.0.1:8000".

You can obtain the token and task_id from Project -> Information.

Environment Variables:

export SINGTOWN_AI_HOST="https://ai.singtown.com"  # Or the cloud service URL
export SINGTOWN_AI_TOKEN="your token"            # Your token
export SINGTOWN_AI_TASK_ID="your id"             # Your task ID

Alternatively, set them directly in code:

from singtown_ai import SingTownAiClient
client = SingTownAiClient(
  host="https://ai.singtown.com",  # Or the cloud service URL
  token="your token",            # Your token
  task_id="your id"              # Your task ID
)

Basic Usage

import time
from singtown_ai import SingTownAiClient
client = SingTownAiClient()
print(client.task)
client.export_class_folder(export_path) # or client.export_yolo(export_path)

metrics = []
for i in range(10):
    print("Train:", i)
    metrics.append({"epoch": i, "accuracy": i * 10})
    client.update_metrics(metrics)
    time.sleep(1)

client.upload_results_zip(uploadfile)

Update Metrics

metrics = [
    {"epoch": 0, "accuracy": 0.8, "loss": 0.2},
    {"epoch": 1, "accuracy": 0.9, "loss": 0.1},
]
client = SingTownAiClient()
client.update_metrics(metrics)
  • The field names in metrics are not restricted, and they will appear on the Metrics page in SingTown AI.

Watching metrics.csv

from singtown_ai import file_watcher

client = SingTownAiClient()

@file_watcher("path/to/metrics.csv", interval=3)
def file_on_change(content: str):
    import csv
    from io import StringIO

    metrics = list(csv.DictReader(StringIO(content)))
    if not metrics:
        return
    client.update_metrics(metrics)
  • Every 1 seconds, the SDK will parse the metrics.csv and upload metrics.

Logging

client = SingTownAiClient()
client.log("line")

Logging sys.stdout and stderror

from singtown_ai import stdout_watcher

client = SingTownAiClient()

@stdout_watcher(interval=1)
def on_stdout_write(content: str):
    client.log(content, end="")
  • Every 1 seconds, the SDK will upload messages to logging.

Uploading Result Files

client = SingTownAiClient()
client.upload_results_zip("your.zip")
  • This method uploads a .zip result file.

Mock

  • mock_task.json
{
  "project": {
    "labels": ["cat", "dog"],
    "type": "CLASSIFICATION"
  },
  "device": "openmv-cam-h7-plus",
  "model_name": "mobilenet_v2_0.35_128",
  "freeze_backbone": true,
  "batch_size": 16,
  "epochs": 1,
  "learning_rate": 0.001,
  "early_stopping": 3,
  "export_width": 128,
  "export_height": 128
}
  • mock_dataset.json
[
  {
    "url": "https://github.com/singtown-ai/singtown-ai-datasets/raw/main/images/cat.0.jpg",
    "subset": "TRAIN",
    "classification": "cat"
  },
  {
    "url": "https://github.com/singtown-ai/singtown-ai-datasets/raw/main/images/cat.1.jpg",
    "subset": "VALID",
    "classification": "cat"
  },
  {
    "url": "https://github.com/singtown-ai/singtown-ai-datasets/raw/main/images/cat.2.jpg",
    "subset": "TEST",
    "classification": "cat"
  },
  {
    "url": "https://github.com/singtown-ai/singtown-ai-datasets/raw/main/images/dog.0.jpg",
    "subset": "TRAIN",
    "classification": "dog"
  },
  {
    "url": "https://github.com/singtown-ai/singtown-ai-datasets/raw/main/images/dog.1.jpg",
    "subset": "VALID",
    "classification": "dog"
  },
  {
    "url": "https://github.com/singtown-ai/singtown-ai-datasets/raw/main/images/dog.2.jpg",
    "subset": "TEST",
    "classification": "dog"
  }
]
  • The JSON keys may use either snake_case or camelCase.

Environment Variables:

export SINGTOWN_AI_MOCK_TASK_PATH="mock_task.json"
export SINGTOWN_AI_MOCK_DATASET_PATH="mock_dataset.json"

Alternatively, set them directly in code:

client = SingTownAiClient(
    mock_task_path="mock_task.json",
    mock_dataset_path="mock_dataset.json",
)
  • Set mock_data, Will mock demo task and dataset, this is useful for debugging.

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

singtown_ai-1.9.3.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

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

singtown_ai-1.9.3-py3-none-any.whl (6.7 kB view details)

Uploaded Python 3

File details

Details for the file singtown_ai-1.9.3.tar.gz.

File metadata

  • Download URL: singtown_ai-1.9.3.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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

Hashes for singtown_ai-1.9.3.tar.gz
Algorithm Hash digest
SHA256 05e17cbfa0e6da9f82a45e45e4cdb537180b3adc68fa54fa7e988ee4a1e07de8
MD5 c45ad6ad757882218ef42ed90e07ee9a
BLAKE2b-256 8a25c5414c810030ed8f4807c95f6264b68923b8bb17839f8de2c47baf41297b

See more details on using hashes here.

File details

Details for the file singtown_ai-1.9.3-py3-none-any.whl.

File metadata

  • Download URL: singtown_ai-1.9.3-py3-none-any.whl
  • Upload date:
  • Size: 6.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","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

Hashes for singtown_ai-1.9.3-py3-none-any.whl
Algorithm Hash digest
SHA256 c356289bade85cb4433b1b7d251104d39ae3c81a29b1193b48903a9a5bd99d86
MD5 d5a04dfdc3f77cd1d04ccf40ecc76402
BLAKE2b-256 ec40b94057d9b66c1ccf082653e7edea2b3f8400a42b55f5faf62c749758c2e8

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