Plugins
Overview
Plugin naming convention
All plugins must follow a strict naming convention. The name must be in the format {platform}-{packageName}-{pluginName}, where:
{platform}can be one ofDotnetorPython.{packageName}is the name of the plugin package that provides the plugin and can only contain alphanumerical characters, underlines, or hyphens.{pluginName}is the name of the plugin and can only contain alphanumerical characters, underlines, or hyphens.
For example, the plugin name of the FoundationaLLM Azure AI Search data pipeline stage plugin is Dotnet-FoundationaLLMDataPipelinePlugins-AzureAISearchIndexingDataPipelineStage.
Plugin properties
Here is an example of a plugin definition:
{
"type": "plugin",
"name": "Dotnet-FoundationaLLMDataPipelinePlugins-AzureAISearchIndexingDataPipelineStage",
"object_id": "instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins/Dotnet-FoundationaLLMDataPipelinePlugins-AzureAISearchIndexingDataPipelineStage",
"display_name": "Azure AI Search Indexing Data Pipeline Stage (FoundationaLLM)",
"description": "Provides the FoundationaLLM standard implementation for indexing data pipeline stages that use Azure AI Search.",
"cost_center": null,
"category": "Data Pipeline Stage",
"parameters": [
{
"name": "APIEndpointConfigurationObjectId",
"type": "resource-object-id",
"description": "The FoundationaLLM resource identifier of the API Endpoint Configuration resource that identifies the Azure AI Search instance."
},
{
"name": "IndexName",
"type": "string",
"description": "The name of the Azure AI Search index."
},
{
"name": "IndexPartitionName",
"type": "string",
"description": "The name of the Azure AI Search index partition (to be added as a metadata entry and used for logical separation within a given physical index)."
}
],
"parameter_selection_hints": {
"APIEndpointConfigurationObjectId": {
"resourcePath": "providers/FoundationaLLM.Configuration/apiEndpointConfigurations",
"filterActionPayload": {
"Category": "General",
"Subcategory": "Indexing"
}
}
},
"dependencies": [],
"properties": null,
"created_on": "2025-03-09T19:59:41.110155+00:00",
"updated_on": "0001-01-01T00:00:00+00:00",
"created_by": "ciprian@foundationaLLM.ai",
"updated_by": null,
"deleted": false,
"expiration_date": null
}
Parameters
Each plugin has zero, one, or more parameters that are required for its execution. Parameters can be of the following types:
| Type | Description |
|---|---|
string |
A single string value. |
int |
A single integer value. |
float |
A single floating-point value. |
bool |
A single boolean value. |
datetime |
A single date and time value. |
array |
An array of values (individual items in the array can be of any type). |
resource-object-id |
A FoundationaLLM resource identifier that references another resource in the system. |
Note
When working with resource-object-id parameters, the parameter_selection_hints property can be used to provide additional information about the resource that the parameter references. This information is used by the Management Portal to provide a user-friendly selection experience when configuring the plugin. The parameter_selection_hints property contains a dictionary where the keys are parameter names of type resource-object-id and the values are objects with the following properties:
resourcePath: The path to the resource type that the parameter references.filterActionPayload: A JSON object that can be used to filter the resources of the specified type. The object can contain any number of properties that are used to filter the resources and it depends on the specific resource type.
User interface developers can use the resourcePath and filterActionPayload properties to build a resource filtering request for the Management API. Using the exemple above, the following filtering request can be built: POST /instances/{instanceId}/providers/FoundationaLLM.Configuration/apiEndpointConfigurations/filter. The request body must be the JSON object specified in the filterActionPayload property.
Dependencies
Each plugin can have zero, one, or more dependencies. A dependency is a reference to another plugin that must be installed in the system in order for the plugin to work correctly.
When configuring plugins in the Management Portal, the dependency plugins must also be selected and configured. The dependencies section provides the information needed to determine which plugins are required. The section contains a list of plugin selections that are required for the plugin to work correctly. Plugin selections can be either Single (meaning exactly one dependency plugin must be selected) or Multiple (meaning one or more dependency plugins must be selected).
Here is an example of a plugin with single selection dependencies:
{
"type": "plugin",
"name": "Dotnet-FoundationaLLMDataPipelinePlugins-TextPartitioningDataPipelineStage",
"object_id": "instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins/Dotnet-FoundationaLLMDataPipelinePlugins-TextPartitioningDataPipelineStage",
"display_name": "Text Partitioning Data Pipeline Stage (FoundationaLLM)",
"description": "Provides the FoundationaLLM standard implementation for text partitioning data pipeline stages.",
"cost_center": null,
"category": "Data Pipeline Stage",
"parameters": [
{
"name": "PartitioningStrategy",
"type": "string",
"description": "Strategy used to partition text (can be Token or Semantic)."
}
],
"parameter_selection_hints": {},
"dependencies": [
{
"selection_type": "Single",
"dependency_plugin_names": [
"Dotnet-FoundationaLLMDataPipelinePlugins-TokenContentTextPartitioning",
"Dotnet-FoundationaLLMDataPipelinePlugins-SemanticContentTextPartitioning"
]
}
],
"properties": null,
"created_on": "2025-03-09T19:59:36.9258434+00:00",
"updated_on": "0001-01-01T00:00:00+00:00",
"created_by": "ciprian@foundationaLLM.ai",
"updated_by": null,
"deleted": false,
"expiration_date": null
}
Here is an example of a plugin with multiple selection dependencies:
{
"type": "plugin",
"name": "Dotnet-FoundationaLLMDataPipelinePlugins-AzureDataLakeDataSource",
"object_id": "instances/8ac6074c-bdde-43cb-a140-ec0002d96d2b/providers/FoundationaLLM.Plugin/plugins/Dotnet-FoundationaLLMDataPipelinePlugins-AzureDataLakeDataSource",
"display_name": "Azure Data Lake Data Source (FoundationaLLM)",
"description": "Provides the FoundationaLLM standard implementation for Azure Data Lake data sources.",
"cost_center": null,
"category": "Data Source",
"parameters": [
{
"name": "Folders",
"type": "array",
"description": "List of strings defining data lake folders (the first part identifies the container name)."
}
],
"parameter_selection_hints": {},
"dependencies": [
{
"selection_type": "Multiple",
"dependency_plugin_names": [
"Dotnet-FoundationaLLMDataPipelinePlugins-PDFContentTextExtraction",
"Dotnet-FoundationaLLMDataPipelinePlugins-DOCXContentTextExtraction",
"Dotnet-FoundationaLLMDataPipelinePlugins-PPTXContentTextExtraction",
"Dotnet-FoundationaLLMDataPipelinePlugins-XSLXContentTextExtraction",
"Dotnet-FoundationaLLMDataPipelinePlugins-ImageContentTextExtraction",
"Dotnet-FoundationaLLMDataPipelinePlugins-ImageMetadataTextExtraction"
]
}
],
"properties": null,
"created_on": "2025-03-09T19:59:32.3378998+00:00",
"updated_on": "0001-01-01T00:00:00+00:00",
"created_by": "ciprian@foundationaLLM.ai",
"updated_by": null,
"deleted": false,
"expiration_date": null
}
Managing plugins using the FoundationaLLM Management API
List all plugins
Management API endpoint: GET /instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins
Filter plugins by category
Management API endpoint: POST /instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins/filter.
The request body must contain a JSON object with the following content:
{
"categories": [
"Data Source",
"Data Pipeline Stage"
]
}
Note
The following plugin categories are supported for use in the filter: Data Source, Data Pipeline Stage, Context Text Extraction, Content Text Partitioning.