Skip to main content

Modzy's Python SDK queries models, submits inference jobs and returns results directly to your editor.

Project description

Modzy Python SDK

Modzy Logo

Modzy's Python SDK queries models, submits inference jobs, and returns results directly to your editor.

GitHub contributors GitHub last commit GitHub Release Date

The job lifecycle | API Keys | Samples | Documentation

Installation

installation

Use the package manager pip install the SDK:

  • $ pip install modzy-sdk

Usage

Initialize

Once you have a model and version identified, authenticate to Modzy with your API key:

from modzy import ApiClient, error
client = ApiClient(base_url='https://modzy.example.com/api', api_key='my_key.modzy')

Basic usage

The code below is applicable for text/plain input type.

Basic Usage

Submit a job providing the model, version, and input file:

job = client.jobs.submit_files('ed542963de', '0.0.27', {'input.txt': './some-file.txt'})

Hold until the inference is complete and results become available:

result = client.results.block_until_complete(job, timeout=None)

Get the output results:

results_json = result.get_first_outputs()['results.json']
print(results_json)

Fetch errors

Errors may arise for different reasons. Fetch errors to know what is their cause and how to fix them.

Error Description
NetworkError The SDK is unable to connect.
ResponseError The API returned an error code.
Timeout The model is not finished running before the timeout elapsed.
ResultsError The model returns an error during the inference job.

Submitting jobs: NetworkError, ResponseError

try:
    job = client.jobs.submit_files('ed542963de', '0.0.27', {'input.txt': './some-file.txt'})
except error.NetworkError as ex:
    print('Could not connect to the API:', ex)
    raise
except error.ResponseError as ex:
    print('We got an error response from the API:', ex)
    raise

While the model completes inference: NetworkError, ResponseError, Timeout

timeout = 600
try:
    result = client.results.block_until_complete(job, timeout=timeout)
except error.Timeout as ex:
    print('Job still not finished after %d seconds' % timeout)
    raise
except error.NetworkError as ex:
    print('Could not connect to the API:', ex)
    raise
except error.ResponseError as ex:
    print('We got an error response from the API:', ex)
    raise

Retrieving results: ResultsError

try:
    outputs = result.get_first_outputs()
except error.ResultsError as ex:
    print('the model returned an error:', ex)
    raise

results_json = outputs['results.json']
print(results_json)

Features

Currently we support the following API routes:

Feature Code Api route
Retrieve all models client.models.get_all() api/models
Retrieve some models client.models.get_models() api/models
Retrieve model details client.models.get() api/models/:model-id
Retrieve model by name client.models.get_by_name() api/models
Retrieve related models client.models.get_related() api/models/:model-id/related-models
Retrieve model versions client.models.get_versions() api/models/:model-id/versions
Retrieve model version details client.models.get_version() api/models/:model-id/versions/:version-id
Retrieve all tags client.tags.get_all() api/models/tags
Retrieve Tags and Models client.tags.get_tags_and_models() api/models/tags/:tag-id
Submit a Job (Single Text) client.jobs.submit_text() api/jobs
Submit a Job (Multiple Text) client.jobs.submit_text_bulk() api/jobs
Submit a Job (Single Embedded) client.jobs.submit_bytes() api/jobs
Submit a Job (Multiple Embedded) client.jobs.submit_bytes_bulk() api/jobs
Submit a Job (Single File) client.jobs.submit_files() api/jobs
Submit a Job (Multiple Files) client.jobs.submit_files_bulk() api/jobs
Submit a Job (Single AWS S3) client.jobs.submit_aws_s3() api/jobs
Submit a Job (Multiple AWS S3) client.jobs.submit_aws_s3_bulk() api/jobs
Submit a Job (JDBC) client.jobs.submit_jdbc() api/jobs
Cancel job job.cancel() api/jobs/:job-id
Hold until inference is complete job.block_until_complete() api/jobs
Get Job details client.jobs.get() api/jobs/:job-id
Retrieve results job.get_result() api/jobs/:job-id
Retrieve Job History client.jobs.get_history() api/jobs/history

Samples

Check out our samples for details on specific use cases.

To run samples:

Set the base url and api key in each sample file:

# TODO: set the base url of modzy api and you api key
client = ApiClient(base_url=BASE_URL, api_key=API_KEY)

Or follow the instructions here to learn more.

And then, you can:

`$ py samples/job_with_text_input_sample.py`

Contributing

We are happy to receive contributions from all of our users. Check out our contributing file to learn more.

Code of conduct

Contributor Covenant

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

modzy-sdk-0.5.3.tar.gz (26.3 kB view hashes)

Uploaded Source

Built Distribution

modzy_sdk-0.5.3-py2.py3-none-any.whl (24.3 kB view hashes)

Uploaded Python 2 Python 3

Supported by

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