Skip to main content

A library used to build custom functions in Cozy Creator's serverless function platform.

Project description

gen-worker

Python SDK for writing endpoints that run on Cozy's worker pool. You write a decorated Python function; the SDK handles discovery, scheduling, model loading, cancellation, file I/O, and reporting to the control plane.

Three endpoint kinds:

  • Inference — request/response (optionally streaming).
  • Training — long-running, stateful, can publish checkpoints back to a repo.
  • Conversion — produces weight artifacts on a destination repo.

Install

uv add gen-worker          # core
uv add gen-worker[torch]   # with PyTorch

Quick start

import msgspec
from gen_worker import RequestContext, inference_function

class Input(msgspec.Struct):
    prompt: str

class Output(msgspec.Struct):
    text: str

@inference_function
def hello(ctx: RequestContext, payload: Input) -> Output:
    return Output(text=f"Hello, {payload.prompt}!")

Pair it with an endpoint.toml:

schema_version = 1
name = "hello"
main = "my_pkg.main"   # import path that contains your @inference_function

[resources]
ram_gb = 2
cpu_cores = 1

…and a Dockerfile:

FROM python:3.12-slim
WORKDIR /app
COPY . /app
RUN pip install uv && uv sync --frozen
RUN mkdir -p /app/.tensorhub && \
    uv run python -m gen_worker.discovery > /app/.tensorhub/endpoint.lock
ENTRYPOINT ["uv", "run", "python", "-m", "gen_worker.entrypoint"]

Publish with cozyctl endpoint deploy (or via the platform UI). The control plane reads /app/.tensorhub/endpoint.lock from the image and routes invocations.

Reference

See docs/endpoint-authoring.md for the full authoring guide: model injection, streaming, file uploads, training/conversion contracts, error types, and local testing.

Public surface

The top-level gen_worker module exports only what endpoint authors need:

  • Decorators: inference_function, realtime_function, ResourceRequirements
  • Injection: ModelRef, ModelRefSource
  • Context: RequestContext, RealtimeSocket
  • Types: Asset, Tensors, Compute, LoraSpec
  • Errors: ValidationError, RetryableError, FatalError, ResourceError, AuthError, CanceledError, OutputTooLargeError, WorkerError
  • Helpers: Clamp, iter_transformers_text_deltas, load_loras, apply_low_vram_config, with_oom_retry

Training and conversion live in their own submodules: gen_worker.trainer, gen_worker.conversion, gen_worker.clone.

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

gen_worker-0.5.14.tar.gz (352.6 kB view details)

Uploaded Source

Built Distribution

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

gen_worker-0.5.14-py3-none-any.whl (402.6 kB view details)

Uploaded Python 3

File details

Details for the file gen_worker-0.5.14.tar.gz.

File metadata

  • Download URL: gen_worker-0.5.14.tar.gz
  • Upload date:
  • Size: 352.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • 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":null}

File hashes

Hashes for gen_worker-0.5.14.tar.gz
Algorithm Hash digest
SHA256 4c9f84e463f3984829311ed3b617472dfc221a8dbaa52a11dfe4399edad7dc81
MD5 088bb6a80aa079f26c4af85a43b7f306
BLAKE2b-256 8be22f060327b6dfc1538e0af9947a7f85ff3aac006e4a08d6a6c7c11c240a74

See more details on using hashes here.

File details

Details for the file gen_worker-0.5.14-py3-none-any.whl.

File metadata

  • Download URL: gen_worker-0.5.14-py3-none-any.whl
  • Upload date:
  • Size: 402.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • 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":null}

File hashes

Hashes for gen_worker-0.5.14-py3-none-any.whl
Algorithm Hash digest
SHA256 9dfbad2e807e5a8eb3b37ace64ed37b7addaedab06a0883a86f9cb7d03547228
MD5 96755a09a7a6846f5f6aadc7196f12a8
BLAKE2b-256 47dc53d7fe1e59b4490ccb3b4da904733580aa77c2e1dab36b8d9fd50ddb53ef

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