Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Introduction

To expose AI services to our system, we need an API to be exposed for the MediaHaven installation. When creating new Plugins having of the following https://mediahaven.atlassian.net/wiki/spaces/CS/pages/edit-v2/4438884395#Categories

  • Embedding

  • Generative

Then then MediaHaven will connect to this plugin using REST API calls, which must implement the following methods depending on the category.

Methods

GET /config-rules
Status
colourBlue
titleALL CATEGORIES

It gives the possible configuration parameters for this connector

...

Code Block
languagejson
{
  "Rules": [
    {
      "Name": "TextModel",
      "Type": "String|Integer|Boolean",
      "Required": false,
      "Default" : "ada2"
    }
  ]
}

POST /text-embedding
Status
colourBlue
titleEMBEDDING

Expected parameters

...

Text as JSON body in Textproperty and Config based on config rules

...

Code Block
languagejson
{
  "Text": "Given me pictures of lamas",
  "Config": {
    "TextModel" : "ada2"
  }
}

Expected headers

...

Code Block
x-api-key: <optional api key>

Output

Array of float (vector) with size equal to dimensions. The vector is normalized

POST /embedding
Status
colourBlue
titleEMBEDDING

Expected parameters

...

Record as JSON body in Metadata property and Config based on config rules

...

Code Block
languagejson
{
  "Config": {
    "TextModel" : "ada2"
  },
  "Metadata": {
    "RightsManagement": {
        "Permissions": {...},
        "RecordPhase": "Concept",
        "ExpiryDate": null,
        "ExpiryStatus": null,
        "Zone": {}
    }
  }
}

Expected headers

...

Code Block
x-api-key: <optional api key>

Output

Array of float (vector) with size equal to dimensions. The vector is normalized

...

Code Block
languagejson
{
  "Embedding": [ 
    -0.006929283495992422,
    -0.005336422007530928,
    ... (omitted for spacing)
    -4.547132266452536e-05,
    -0.024047505110502243]
}

POST /describe
POST /generative-metadata/description
Status
colourBlue
titleGENERATIVE

Expected parameters

...

Record as JSON body in Metadata property and Config based on config rules

...

Code Block
languagejson
{
  "Config": {
    "TextModel" : "ada2"
  },
  "Metadata": {
    "RightsManagement": {
        "Permissions": {...},
        "RecordPhase": "Concept",
        "ExpiryDate": null,
        "ExpiryStatus": null,
        "Zone": {}
    }
  }
}

Expected headers

...

Code Block
x-api-key: <optional api key>

Output

Textual string

Ex.

Code Block
languagejson
{
  "Description": "This is an image of a cat"
}

POST /generative-metadata
Status
colourBlue
titleGENERATIVE

Record as JSON body in Metadata property, Fields with as items dotted keys and AI hint as value, Locale as the requested target locale for the output and finally Config based on config rules

...

Code Block
languagejson
{
  "Fields": { 
    "Descriptive.Description": "Give a description for the image"
  },
  "Locale": "en_US",
  "Config": {
    "TextModel" : "ada2"
  },
  "Metadata": {
    "RightsManagement": {
        "Permissions": {...},
        "RecordPhase": "Concept",
        "ExpiryDate": null,
        "ExpiryStatus": null,
        "Zone": {}
    }
  }
}

Expected headers

...

Code Block
x-api-key: <optional api key>

Output

Follow the input fields, the same structure should be returned

...