Skip to main content

smarter.ai Python API

Project description

made-with-python PyPi version

Smarter API for Python

This API allows communication between any python based Component on the smarter.ai platform.

User Installation

The latest released version are available at the Python Package Index (PyPI).

To install using pip:

pip install smarterai

Usage

  • For starters an account needs to be created at our platform. So visit our website and create an account at smarter.ai.

  • Then in order for the python code to be accessible for the smarter.ai platform, follow these steps:

    1. Visit the Studio
    2. Start a new new Experiment
    3. Chose a Full Pipeline Template.
    4. Follow the wizard.
    5. Go to Build -> Experiment Editor.
    6. From Container: Environment Drag & drop a python component.
    7. From Blank: Starter Templates Drag & drop Python Code Template on top of the added Environment component.
    8. Double-click on the Python Code Template newly added Component.
    9. Edit/upload your code there.
  • You can then start building your code by copy-pasting the code found in the examples below.

  • The Python Component's interface needs to consist of the following:

    1. Imports:
    from typing import Optional
    from smarterai import SmarterApp, SmarterMessage, SmarterApi
    
    1. A class called SmarterComponent.
    2. SmarterComponent should inherit from SmarterApp:
    class SmarterComponent(SmarterApp):
    
    1. The class should have a method invoke with the following signature:
    def invoke(self, port: str, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
    

Example 1

This is the basic interface for a python based component.

from typing import Optional
from smarterai import SmarterApp, SmarterMessage, SmarterApi


class SmarterComponent(SmarterApp):
    def invoke(self, port: str, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        print(f"Received the message '{message}' on port '{port}'")
        return

Example 2

If your component needs initializing/booting before it starts running. Then a method boot needs to be defined.

from typing import Optional
from smarterai import SmarterApp, SmarterMessage, SmarterApi


class SmarterComponent(SmarterApp):
    def __init__(self):
        self.port_fn_mapper = {'boot': self.boot}

    def boot(self, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        # Write code here
        return

    def invoke(self, port: str, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        print(f"Received the message '{message}' on port '{port}'")
        if port in self.port_fn_mapper:
            self.port_fn_mapper[port](message, smarter_api)
        return

Example 3

If your component needs to send messages to other components, then you can use smarter_api.

from typing import Optional
from smarterai import SmarterApp, SmarterMessage, SmarterApi


class SmarterComponent(SmarterApp):
    def __init__(self):
        self.port_fn_mapper = {'boot': self.boot, 'start': self.start}

    def boot(self, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        # Write code here
        return

    def start(self, message: SmarterMessage, smarter_api: SmarterApi) -> None:
        port = 'out'
        user_id = message.get('userId')
        new_message = SmarterMessage({'name': f'Smarter AI Welcomes {user_id}'})
        smarter_api.send_message(message=new_message, port=port)

    def invoke(self, port: str, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        print(f"Received the message '{message}' on port '{port}'")
        if port in self.port_fn_mapper:
            self.port_fn_mapper[port](message, smarter_api)
        return

Example 4

If your component needs to set data to front-end patterns.

from typing import Optional
from smarterai import SmarterApp, SmarterMessage, SmarterApi


class SmarterComponent(SmarterApp):
    def __init__(self):
        self.port_fn_mapper = {'boot': self.boot, 'start': self.start}

    def boot(self, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        # Write code here
        return

    def start(self, message: SmarterMessage, smarter_api: SmarterApi) -> None:
        pattern = "text_field"
        data = 'some value'
        smarter_api.set_data(pattern=pattern, data=data)

    def invoke(self, port: str, message: SmarterMessage, smarter_api: SmarterApi) -> Optional[SmarterMessage]:
        print(f"Received the message '{message}' on port '{port}'")
        if port in self.port_fn_mapper:
            self.port_fn_mapper[port](message, smarter_api)
        return

Credits

Authored by Nevine Soliman and Carlos Medina (smarter.ai - All rights reserved)

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

smarterai-1.3.1.tar.gz (14.4 kB view details)

Uploaded Source

File details

Details for the file smarterai-1.3.1.tar.gz.

File metadata

  • Download URL: smarterai-1.3.1.tar.gz
  • Upload date:
  • Size: 14.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.6.0 requests/2.24.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.50.2 CPython/3.7.9

File hashes

Hashes for smarterai-1.3.1.tar.gz
Algorithm Hash digest
SHA256 e5f2e6e2fadf7987d9dc7f4f4f4e33dbcc1dcc4e13876488ccdddb4888c6bc6c
MD5 a85d8b3baa8e6760469e3bd4de8503c1
BLAKE2b-256 8b4f7c63b4171ef3bc47d896a7cb6d811f6d0d0809595ec990367265cf5afe31

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