Plugins & Plugin Packages
This document provides reference information for plugins and plugin packages in FoundationaLLM.
Overview
Plugins extend the functionality of the FoundationaLLM platform. Plugins can be used to add new features, integrate with external systems, or perform other tasks. Plugins can be managed using the FoundationaLLM Management Portal (interactively) or the FoundationaLLM Management API (programmatically).
Plugin Packages
A FoundationaLLM plugin package is a unit of versioning and deployment of one or more plugins.
Supported Package Types
| Platform | Package Type | Description |
|---|---|---|
| Python | ZIP package | Contains agent workflow and agent tool plugins. Scheduled to be replaced by Wheel packages. |
| .NET | NuGet package | Contains data source, data pipeline stage, content text extraction, and content text partitioning plugins. Fully supported by Management API. |
Package Naming Convention
Plugin package names must follow a strict naming convention: {platform}-{name}, where:
{platform}can beDotnetorPython{name}can only contain alphanumerical characters, underlines, or hyphens
Example: Dotnet-FoundationaLLMDataPipelinePlugins
Managing Plugin Packages via API
Create or Update a Plugin Package
POST /instances/{instanceId}/providers/FoundationaLLM.Plugin/pluginPackages/{packageName}
Request body:
- Must be of type
form-data - Must contain a file with the key
file(the NuGet package) - Must contain a text with key
resource:
{
"type": "plugin-package",
"name": "{packageName}"
}
List Plugin Packages
GET /instances/{instanceId}/providers/FoundationaLLM.Plugin/pluginPackages
Plugins
Plugin Types
| Platform | Category | Description |
|---|---|---|
| Python | Agent Workflow | Implements agent workflows running in LangChain API |
| Python | Agent Tool | Implements agent tools for LangChain workflow host |
| .NET | Data Source | Implements data sources for data pipelines |
| .NET | Data Pipeline Stage | Implements stages for data pipeline execution |
| .NET | Content Text Extraction | Implements text extraction from binary content |
| .NET | Content Text Partitioning | Implements text partitioning strategies |
Plugin Naming Convention
Plugin names must follow the format {platform}-{packageName}-{pluginName}, where:
{platform}can beDotnetorPython{packageName}is the plugin package name (alphanumerical, underlines, hyphens only){pluginName}is the plugin name (alphanumerical, underlines, hyphens only)
Example: Dotnet-FoundationaLLMDataPipelinePlugins-AzureAISearchIndexingDataPipelineStage
Plugin Definition Structure
{
"type": "plugin",
"name": "Dotnet-FoundationaLLMDataPipelinePlugins-AzureAISearchIndexingDataPipelineStage",
"object_id": "instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins/...",
"display_name": "Azure AI Search Indexing Data Pipeline Stage (FoundationaLLM)",
"description": "Provides the FoundationaLLM standard implementation for indexing data pipeline stages.",
"category": "Data Pipeline Stage",
"parameters": [...],
"parameter_selection_hints": {...},
"dependencies": [...]
}
Plugin Parameters
Each plugin has zero or more parameters. Supported parameter 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 |
resource-object-id |
A FoundationaLLM resource identifier |
Parameter Selection Hints
For resource-object-id parameters, the parameter_selection_hints property provides UI guidance:
"parameter_selection_hints": {
"APIEndpointConfigurationObjectId": {
"resourcePath": "providers/FoundationaLLM.Configuration/apiEndpointConfigurations",
"filterActionPayload": {
"Category": "General",
"Subcategory": "Indexing"
}
}
}
Plugin Dependencies
Plugins can have dependencies on other plugins. Dependency types:
- Single: Exactly one dependency plugin must be selected
- Multiple: One or more dependency plugins must be selected
"dependencies": [
{
"selection_type": "Single",
"dependency_plugin_names": [
"Dotnet-FoundationaLLMDataPipelinePlugins-TokenContentTextPartitioning",
"Dotnet-FoundationaLLMDataPipelinePlugins-SemanticContentTextPartitioning"
]
}
]
Managing Plugins via API
List All Plugins
GET /instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins
Filter Plugins by Category
POST /instances/{instanceId}/providers/FoundationaLLM.Plugin/plugins/filter
Request body:
{
"categories": [
"Data Source",
"Data Pipeline Stage"
]
}
Supported categories: Data Source, Data Pipeline Stage, Context Text Extraction, Content Text Partitioning