Observed since 21 Oct, 11:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
AI Model Integration for python
AI Model Integration for Python 2.7/3

There are several built-in modes for testing:
ai_integration is a community project developed under the free Apache 2.0 license. We welcome any new modes, integrations, bugfixes, and your ideas.
(An older version of this library required the user to expose their model as an inference function, but this caused pain in users and is no longer needed.)
Run a "while True:" loop in your code and call "get_next_input" to get inputs.
Pass an inputs_schema (see full docs below) to "get_next_input".
See the specification below for "Inputs Dicts"
"get_next_input" needs to be called using a "with" block as demonstrated below.
Then process the data. Format the result or error as described under "Results Dicts"
Then send the result (or error back) with "send_result".
This example takes an image and returns a constant string without even looking at the input. It is a very bad AI algorithm for sure!
import ai_integration
while True:
with ai_integration.get_next_input(inputs_schema={"image": {"type": "image"}}) as inputs_dict:
# If an exception happens in this 'with' block, it will be sent back to the ai_integration library
result_data = {
"content-type": 'text/plain',
"data": "Fake output",
"success": True
}
ai_integration.send_result(result_data)
Use the ai_integration library
You install this library with pip (or pip3)
ENTRYPOINT is used to set your python code as the entry point into the container.
No command line arguments will be passed to your python entrypoint. (Unless using the command line interface mode)
Do not use argparse in your program as this will conflict with command line mode.
To test your finished container's integration, run: * nvidia-docker run --rm -it -e MODE=test_model_integration YOUR_DOCKER_IMAGE_NAME * use docker instead of nvidia-docker if you aren't using NVIDIA... * You should see a bunch of happy messages. Any sad messages or exceptions indicate an error. * It will try inference a few times. If you don't see this happening, something is not integrated right.
inputs_dict is a regular python dictionary.
Content-type, a MIME type, inspired by HTTP, helps to inform the type of the "data" field
success is a boolean.
"error" should be the error message if success is False.
{
'content-type': 'application/json', # or image/jpeg
'data': "{JSON data or image data as byte buffer}",
'success': True,
'error': 'the error message (only if failed)'
}
If there's an error that you can catch:
An inputs schema is a simple python dict {} that documents the inputs required by your inference function.
Not every integration mode looks at the inputs schema - think of it as a hint for telling the mode what data it needs to provide your function.
All mentioned inputs are assumed required by default.
The keys are names, the values specify properties of the input.
By convention, name your input "image" if you accept a single image input
{
"image": {
"type": "image"
}
}
For example, imagine a style transfer model that needs two input images.
{
"style": {
"type": "image"
},
"content": {
"type": "image"
},
}
{
"sentence": {
"type": "text"
}
}
A mode is a function that lives in a file in the modes folder of this library.
To create a new mode:
Add a python file in this folder
Add a python function to your file that takes two args:
def http(inference_function=None, inputs_schema=None):
Attach a hint to your function
At the end of the file, declare the modes from your file (each python file could export multiple modes), for example:
MODULE_MODES = {
'http': http
}
Your mode will be called with the inference function and inference schema, the rest is up to you!
The sky is the limit, you can integrate with pretty much anything.
See existing modes for examples.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.16 | 7 Oct 2020 | 2 |
This describes our collected data; it is not a security assessment.
Observed since 21 Oct, 11:03 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:ce1dc37ec1d867fa733f7af4e833bb62620d85d43c4509b417843b9defb739c8