Skip to main content

Python library for NXP Edge AI Industrial Platform

Project description

AI Box Library

Python library for the NXP Edge AI Industrial Platform.

Overview

ai-box-lib provides thin clients for component-to-component communication:

  • DataCollectorClient for publishing data collector payloads
  • PreProcessorClient for subscribing data collector payloads and publishing features
  • ContextEngineClient for publishing context messages
  • ChannelClient for generic pub/sub communication between any components

Installation

Install from PyPI:

pip install ai-box-lib

Quick Start

1) Publish data from a data collector

from ai_box_lib.data_collector_client import DataCollectorClient

client = DataCollectorClient[dict]()
client.connect()
client.publish_timestream({"random_number": "42"})

2) Subscribe and publish from a pre-processor

from ai_box_lib.pre_processor_client import PreProcessorClient

client = PreProcessorClient[dict, dict]()
client.connect()

def handle_raw(message: dict) -> None:
	processed = {"feature_a": [1.0, 2.0, 3.0]}
	client.publish_data(processed)

unsubscribe = client.subscribe_timestream(handle_raw)

3) Publish and subscribe to context data

from ai_box_lib.context_engine_client import ContextEngineClient

client = ContextEngineClient[dict]()
client.connect()
client.publish_data({"state": "ok"})
from ai_box_lib.context_engine_client import ContextEngineClient
client = ContextEngineClient[dict]()
client.connect()
client.subscribe()

client.context  # Access the latest context value at any time

def handle_context(message: dict) -> None:
	print(f"Context update: {message}")

client.subscribe(handle_context) # Subscribe with a handler to receive real-time updates

Optionally you can pass custom_asset_id to subscribe to a Context Engine on a different asset, as long as it's connected to the same Box.

4) Communicate over a generic channel

A channel lets any two components exchange messages without being tied to a specific pipeline stage. You define the channel by providing a channel_id string. Both publisher and subscriber must use the same channel_id.

Messages are delivered on the topic {asset_id}/channel/{channel_id}.

Publisher:

from ai_box_lib.channel_client import ChannelClient

client: ChannelClient[None, dict] = ChannelClient("my-alerts")
client.connect()
client.publish({"severity": "high", "value": 42.0})

Subscriber:

from ai_box_lib.channel_client import ChannelClient

client: ChannelClient[dict, None] = ChannelClient("my-alerts")
client.connect()

def handle_alert(message: dict) -> None:
    print(f"Alert received: {message}")

unsubscribe = client.subscribe(handle_alert)
# call unsubscribe() when done

A single client instance can both publish and subscribe on the same channel.

API Summary

All clients must call connect() before any publish or subscribe operation.

  • DataCollectorClient.connect()
  • DataCollectorClient.publish_timestream(data)
  • DataCollectorClient.publish_audio(data)
  • PreProcessorClient.connect()
  • PreProcessorClient.subscribe_timestream(handler)
  • PreProcessorClient.subscribe_audio(handler)
  • PreProcessorClient.publish_data(data)
  • ContextEngineClient.connect()
  • ContextEngineClient.publish_data(data)
  • ContextEngineClient.subscribe(handler?, custom_asset_id?)
  • ContextEngineClient.context — latest received context value (read-only)
  • ChannelClient(channel_id).connect()
  • ChannelClient(channel_id).publish(data)
  • ChannelClient(channel_id).subscribe(handler)

Validation and Limits

  • DataCollectorClient validates message keys against CHANNELS.
  • PreProcessorClient validates feature keys and feature shapes against FEATURES.
  • Maximum publish payload size is 2 MB.

License

See LICENSE.

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

ai_box_lib-0.2.0.tar.gz (12.1 kB view details)

Uploaded Source

Built Distribution

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

ai_box_lib-0.2.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file ai_box_lib-0.2.0.tar.gz.

File metadata

  • Download URL: ai_box_lib-0.2.0.tar.gz
  • Upload date:
  • Size: 12.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ai_box_lib-0.2.0.tar.gz
Algorithm Hash digest
SHA256 f6e3be172e9bf34f4c2aa6c36ce76a9b30a0014749a4b7e8a4e6ce41c0a06f04
MD5 8b04f31eba435ab99da0b2c6059197df
BLAKE2b-256 be6a45a85dcdc2c4c21dbbef2effbb755c9edbc7218a0cf66ed25e618c35f7d9

See more details on using hashes here.

File details

Details for the file ai_box_lib-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: ai_box_lib-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for ai_box_lib-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 351feca3fe41c182e4d37d22ea434e8dd26669d0e22f83e034bd1d9d2ce2418e
MD5 a71615ff694fcf7e11b11d010ef1fab8
BLAKE2b-256 8cec414f378d80d7097985d1c0577377941159ed9382d7a2c8a5607e02ddfc57

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