Modzy's Python SDK queries models, submits inference jobs and returns results directly to your editor.
Project description
Modzy Python SDK
Modzy's Python SDK queries models, submits inference jobs, and returns results directly to your editor.
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.
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
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.