The Anatomy of an Agent

In AI, an agent is a single, self-contained and independent artificial intelligence (either weak or strong) that performs a task.

In Agency, each alert you create is powered by an agent.

Each agent has several key parts…

Inputs

The inputs to your agent is the live data pulled from ARDI. An agent requires one or more inputs to function. You can combine properties from any assets that you like.

Algorithm

The algorithm is the 'brain' of the AI - this will point to a weak or a strong AI that will make any decisions the AI needs to make (ie. if the alert condition has been met).

Although you can create your own, most users can use one of the standard algorithms.

Data/Settings

These are the options used to control the behaviour of the algorithm. In a weak (rules-based) AI, these will be the rules you want to follow, the setpoints and thresholds you want to use as the basis for your alert.

In machine-learning AIs, these will be the options to control the creation of your ML model, the place to save the trained AI, and other options that effect the generation and use of your artificial intelligence.

Outputs

Most Agents have a single alert output, but it is possible for a single agent to have several different outputs if required.

Attachment

The attachment controls how your AI attaches to ARDI assets.

There are several styles of attachment, each of which connects your new Agent to your ARDI assets in different ways.

An agent may attach to a single asset, or may instead make hundreds of copies of itself and attach them to every asset of a particular type, across your entire ARDI database.

Bindings

Rules for how ARDI can connect the inputs to the properties of the attached asset.

Format

Each of these are set in an agent file - this is an XML file containing values for each of the sections covered above.

An empty Agent file looks like this…

{
   "name": "Agent Name",
   "style": "Algorithm Name",
   "data": { },
   "inputs": [ ],
   "outputs": [ ],
   "binding": { },
   "attachment": [ { } ]
}

Next, we'll design a new agent and walk through the steps of creating one.