This contract is currently in the Proof-of-concept stage and still subject to change
Introduction
To expose AI services to our system, we need an API to be exposed for the MediaHaven installation. When creating new Module Plugins having of the following https://mediahaven.atlassian.net/wiki/spaces/CS/pages/edit-v2/4438884395#Categories
Embedding
GenerativeGenerativeMetadata
then MediaHaven will connect to this plugin using REST API calls, which must implement the following methods depending on the category.
...
Code Block | ||
---|---|---|
| ||
{ "Text": "Given me pictures of lamas", "Dimensions": 1536, "Config": { "TextModel" : "ada2" } } |
...
Array of float (vector) with size equal to dimensions. The vector is normalizedMUST BE normalized. When the provided dimensions
are 0
, the embedding should be in the natural dimensions used by the embedding. If the embeddings cannot be provided in the requested dimensions
, then a 400
HTTP error code should be returned.
Ex.
Code Block | ||
---|---|---|
| ||
{
"Embedding": [
-0.006929283495992422,
-0.005336422007530928,
... (omitted for spacing)
-4.547132266452536e-05,
-0.024047505110502243]
} |
POST /embedding
Status | ||||
---|---|---|---|---|
|
...
Code Block | ||
---|---|---|
| ||
{
"Config": {
"TextModel" : "ada2"
},
"Metadata": {
"RightsManagement": {
"Permissions": {...},
"RecordPhase": "Concept",
"ExpiryDate": null,
"ExpiryStatus": null,
"Zone": {}
},
"Dimensions": 1536
}
} |
Expected headers
Code Block |
---|
x-api-key: <optional api key> |
...
Array of float (vector) with size equal to dimensions. The vector is normalizedMUST BE normalized. When the provided dimensions
are 0
, the embedding should be in the natural dimensions used by the embedding. If the embeddings cannot be provided in the requested dimensions
, then a 400
HTTP error code should be returned.
Ex.
Code Block | ||
---|---|---|
| ||
{ "Embedding": [ -0.006929283495992422, -0.005336422007530928, ... (omitted for spacing) -4.547132266452536e-05, -0.024047505110502243] } |
...
Code Block | ||
---|---|---|
| ||
{ "Fields": { "Descriptive.Description": { "Hint": "Give a description for the image" }, "Descriptive.Keywords.Keyword": { "Hint": "Give a list of keywords. Generate around 10.", "Type": "array" } }, "Locale": "en_US", "Config": { "TextModel" : "ada2" }, "Metadata": { "RightsManagement": { "Permissions": {...}, "RecordPhase": "Concept", "ExpiryDate": null, "ExpiryStatus": null, "Zone": {} } } } |
...
Code Block |
---|
x-api-key: <optional api key> |
Output
Follow the input fields, the same structure should be returned A JSON object of generated fields with as keys dotted keys and as value the AI's generated value.
Ex:
Code Block | ||
---|---|---|
| ||
{ "MetadataGeneratedFields": { "Descriptive.Description": "This is an image of a cat", "Descriptive.Keywords.Keyword": ["Animal", "Cat", ...] } } |