This document describes the structure of the ai-support.json file. The JSON file is utilized by an automation to update our documentation with the AI libraries/abstractions/gateways that we support.
The general structure of the JSON file is that of an object who's keys
map to a descriptor for a supported AI thing. Each descriptor has a kind
property that indicates what sort of AI thing is being described.
An abstraction is a module that provides a single common interface to many LLMs or gateways. An abstraction descriptor has the following fields:
title(string): A human readable name for the abstraction.featuresPreamble(string): An optional block of text that should be added to the document prior to the features table.providersPreamble(string): An optional block of text that should be added to the document prior to the providers table.features(object[]): An array of feature entities.providers(object[]): An array of provider entities.
A gateway is a service that provides access to multiple large language models (LLMs) through a single API. A gateway descriptor has the following fields:
title(string): A human readable name for the gateway.preamble(string): An optional block of text that should be added to the document prior to the models table.footnote(string): An optional block of text that should be added to the document subsequent to the models table.models(object[]): An array of model entities.
A SDK is a module that provides an API that is specific to a single LLM. An SDK descriptor has the following fields:
title(string): A human readable name for the SDK.featuresPreamble(string): An optional block of text that should be added to the document prior to the features table.features(object[]): An array of feature entities.
Describes an LLM feature. It is an object with the following fields:
title(string): A human readable name for the feature.supported(boolean): Indicates if our instrumentation supports the feature or not.
Describes an LLM, the features it supports, and the features we instrument. It is an object with the following fields:
name(string): A human readable name for the LLM.features(object[]): An array of feature entities.
Describes an LLM or gateway that is supported by an abstraction. It is an object with the following fields:
name(string): A human readable name for the LLM or gateway.supported(boolean): Indicates if we instrument this provider within the context of the abstraction.transitively(boolean): Indicates if we instrument this provider directly in the instrumentation for the abstraction (false), or if we rely on a transitive instrumentation (true).