FoundationaLLM.Client.Management 0.9.7-rc141

This is a prerelease version of FoundationaLLM.Client.Management.
There is a newer prerelease version of this package available.
See the version list below for details.
dotnet add package FoundationaLLM.Client.Management --version 0.9.7-rc141
                    
NuGet\Install-Package FoundationaLLM.Client.Management -Version 0.9.7-rc141
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="FoundationaLLM.Client.Management" Version="0.9.7-rc141" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="FoundationaLLM.Client.Management" Version="0.9.7-rc141" />
                    
Directory.Packages.props
<PackageReference Include="FoundationaLLM.Client.Management" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add FoundationaLLM.Client.Management --version 0.9.7-rc141
                    
#r "nuget: FoundationaLLM.Client.Management, 0.9.7-rc141"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#addin nuget:?package=FoundationaLLM.Client.Management&version=0.9.7-rc141&prerelease
                    
Install FoundationaLLM.Client.Management as a Cake Addin
#tool nuget:?package=FoundationaLLM.Client.Management&version=0.9.7-rc141&prerelease
                    
Install FoundationaLLM.Client.Management as a Cake Tool

FoundationaLLM Management Client

The FoundationaLLM Management Client is a .NET client library that simplifies the process of interacting with the FoundationaLLM Management API. The client library provides a set of classes and methods that allow you to interact with the FoundationaLLM Management API in a more intuitive way.

This library contains two primary classes:

  • ManagementRESTClient: A class that provides a set of methods for interacting with the FoundationaLLM Management API using REST. This is considered the low-level client and provides direct access to all Management API endpoints.
  • ManagementClient: A class that provides a set of methods for interacting with the FoundationaLLM Management API using a higher-level abstraction. This class is designed to simplify the process of interacting with the Management API by providing a more intuitive interface. It does not contain all the methods available in the ManagementRESTClient class, but it provides a more user-friendly way to interact with the Management API.

These two classes are mutually exclusive, and you should choose one based on your requirements. If you need direct access to all Management API endpoints, use the ManagementRESTClient class. If you need a more user-friendly interface, use the ManagementClient class.

Getting started

If you do not have FoundationaLLM deployed, follow the Quick Start Deployment instructions to get FoundationaLLM deployed in your Azure subscription.

Install the NuGet package:

dotnet add package FoundationaLLM.Client.Management

Manual service instantiation

Complete the following steps if you do not want to use dependency injection:

  1. Create a new instance of the ManagementRESTClient and ManagementClient classes:

    var managementUri = "<YOUR_MANAGEMENT_API_URL>"; // e.g., "https://myfoundationallmmanagementapi.com"
    var instanceId = "<YOUR_INSTANCE_ID>"; // Each FoundationaLLM deployment has a unique (GUID) ID. Locate this value in the FoundationaLLM Management Portal or in Azure App Config (FoundationaLLM:Instance:Id key)
    
    var credential = new AzureCliCredential(); // Can use any TokenCredential implementation, such as ManagedIdentityCredential or AzureCliCredential.
    var options = new APIClientSettings // Optional settings parameter. Default timeout is 900 seconds.
    {
        Timeout = TimeSpan.FromSeconds(600)
    };
    
    var managementRestClient = new ManagementRESTClient(
        managementUri,
        credential,
        instanceId,
        options);
    var managementClient = new ManagementClient(
        managementUri,
        credential,
        instanceId,
        options);
    
  2. Make a request to the Management API with the ManagementRESTClient class:

    var status = await managementRestClient.Status.GetServiceStatusAsync();
    
  3. Make a request to the Management API with the ManagementClient class:

    await managementClient.DataSources.DeleteDataSourceAsync("<DATASOURCE_NAME>");
    // Purge the data source so we can reuse the name.
    await managementClient.DataSources.PurgeDataSourceAsync("<DATASOURCE_NAME>");
    

You can use the FoundationaLLM.Common.Authentication.DefaultAuthentication class to generate the TokenCredential. This class sets the AzureCredential property using the ManagedIdentityCredential when running in a production environment (production parameter of the Initialize method) and the AzureCliCredential when running in a development environment.

Example:

DefaultAuthentication.Initialize(false, "Test"); var credentials = DefaultAuthentication.AzureCredential;

Use dependency injection with a configuration file

Rather than manually instantiating the ManagementRESTClient and ManagementClient classes, you can use dependency injection to manage the instances. This approach is more flexible and allows you to easily switch between different implementations of the IManagementClient and IManagementRESTClient interfaces.

  1. Create a configuration file (e.g., appsettings.json) with the following content:

    {
        "FoundationaLLM": {
            "APIEndpoints": {
     	        "ManagementAPI": {
     	            "Essentials": {
                        "APIUrl": "https://localhost:63267/"
                    }
                }
            },
            "Instance": {
                "Id": "00000000-0000-0000-0000-000000000000"
            }
        }
    }
    
  2. Read the configuration file:

    var configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
        .Build();
    
  3. Use the ManagementClient extension method to add the ManagementClient and ManagementRESTClient to the service collection:

    var services = new ServiceCollection();
    var credential = new AzureCliCredential(); // Can use any TokenCredential implementation, such as ManagedIdentityCredential or AzureCliCredential.
    services.AddManagementClient(
        configuration[AppConfigurationKeys.FoundationaLLM_APIEndpoints_ManagementAPI_Essentials_APIUrl]!,
        credential,
        configuration[AppConfigurationKeys.FoundationaLLM_Instance_Id]!);
    
    var serviceProvider = services.BuildServiceProvider();
    
  4. Retrieve the ManagementClient and ManagementRESTClient instances from the service provider:

    var managementClient = serviceProvider.GetRequiredService<IManagementClient>();
    var managementRestClient = serviceProvider.GetRequiredService<IManagementRESTClient>();
    

Alternately, you can inject the ManagementClient and ManagementRESTClient instances directly into your classes using dependency injection.

public class MyService
{
    private readonly IManagementClient _managementClient;
    private readonly IManagementRESTClient _managementRestClient;

    public MyService(IManagementClient managementClient, IManagementRESTClient managementRestClient)
    {
        _managementClient = managementClient;
        _managementRestClient = managementRestClient;
    }
}

Use dependency injection with Azure App Configuration

If you prefer to retrieve the configuration settings from Azure App Configuration, you can use the Microsoft.Azure.AppConfiguration.AspNetCore or Microsoft.Extensions.Configuration.AzureAppConfiguration package to retrieve the configuration settings from Azure App Configuration.

  1. Connect to Azure App Configuration:

    var configuration = new ConfigurationBuilder()
        .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
        .AddEnvironmentVariables()
        .AddAzureAppConfiguration(options =>
        {
            options.Connect("<connection-string>");
            options.ConfigureKeyVault(kv =>
            {
                kv.SetCredential(Credentials);
            });
            options.Select(AppConfigurationKeyFilters.FoundationaLLM_Instance);
            options.Select(AppConfigurationKeyFilters.FoundationaLLM_APIEndpoints_ManagementAPI_Essentials);
        })
        .Build();
    

    If you have configured your local development environment, you can obtain the App Config connection string from an environment variable (Environment.GetEnvironmentVariable(EnvironmentVariables.FoundationaLLM_AppConfig_ConnectionString)) when developing locally.

  2. Use the ManagementClient extension method to add the ManagementClient and ManagementRESTClient to the service collection:

    var services = new ServiceCollection();
    var credential = new AzureCliCredential(); // Can use any TokenCredential implementation, such as ManagedIdentityCredential or AzureCliCredential.
    
    services.AddManagementClient(
        configuration[AppConfigurationKeys.FoundationaLLM_APIEndpoints_ManagementAPI_Essentials_APIUrl]!,
        credential,
        configuration[AppConfigurationKeys.FoundationaLLM_Instance_Id]!);
    
  3. Retrieve the ManagementClient and ManagementRESTClient instances from the service provider:

    var managementClient = serviceProvider.GetRequiredService<IManagementClient>();
    var managementRestClient = serviceProvider.GetRequiredService<IManagementRESTClient>();
    

Example projects

The Core.Examples test project contains several examples that demonstrate how to use the ManagementClient and ManagementRESTClient classes to interact with the Management API through a series of end-to-end tests.

FoundationaLLM: The platform for deploying, scaling, securing and governing generative AI in the enterprises 🚀

License

FoundationaLLM provides the platform for deploying, scaling, securing and governing generative AI in the enterprise. With FoundationaLLM you can:

  • Create AI agents that are grounded in your enterprise data, be that text, semi-structured or structured data.
  • Make AI agents available to your users through a branded chat interface or integrate the REST API to the AI agent into your application for a copilot experience or integrate the Agent API in a machine-to-machine automated process.
  • Experiment building agents that can use a variety of large language models including OpenAI GPT-4, Mistral and Llama 2 or any models pulled from the Hugging Face model catalog that provide a REST completions endpoint.
  • Centrally manage, configure and secure your AI agents AND their underlying assets including prompts, data sources, vectorization data pipelines, vector databases and large language models using the management portal.
  • Enable everyone in your enterprise to create their own AI agents. Your non-developer users can create and deploy their own agents in a self-service fashion from the management portal, but we don't get in the way of your advanced AI developers who can deploy their own orchestrations built in LangChain, Semantic Kernel, Prompt Flow or any orchestration that exposes a completions endpoint.
  • Deploy and manage scalable vectorization data pipelines that can ingest millions of documents to provide knowledge to your model.
  • Empower your users with as many task-focused AI agents as desired.
  • Control access to the AI agents and the resources they access using role-based access controls (RBAC).
  • Harness the rapidly evolving capabilities from Azure AI and Azure OpenAI from one integrated stack.

FoundationaLLM is not a large language model. It enables you to use the large language models of your choice (e.g., OpenAI GPT-4, Mistral, LLama 2, etc.)

FoundationaLLM deploys a secure, comprehensive and highly configurable copilot platform to your Azure cloud environment:

  • Simplifies integration with enterprise data sources used by agent for in-context learning (e.g., enabling RAG, CoT, ReAct and inner monologue patterns).
  • Provides defense in depth with fine-grain security controls over data used by agent and pre/post completion filters that guard against attack.
  • Hardened solution attacked by an LLM red team from inception.
  • Scalable solution load balances across multiple LLM endpoints.
  • Extensible to new data sources, new LLM orchestrators and LLMs.

Why is FoundationaLLM Needed?

Simply put we saw a lot of folks reinventing the wheel just to get a customized copilot or AI agent that was grounded and bases its responses in their own data as opposed to the trained parametric knowledge of the model. Many of the solutions we saw made for great demos, but were effectively toys wrapping calls to OpenAI endpoints- they were not something intended or ready to take into production at enterprise scale. We built FoundationaLLM to provide a continuous journey, one that was quick to get started with so folks could experiment quickly with LLM's but not fall off a cliff after that with a solution that would be insecure, unlicensed, inflexible and not fully featured enough to grow from the prototype into a production solution without having to start all over.

The core problems to deliver enterprise copilots or AI agents are:

  • Enterprise grade copilots or AI agents are complex and have lots of moving parts (not to mention infrastructure).
  • The industry has a skills gap when it comes to filling the roles needed to deliver these complex copilot solutions.
  • The top AI risks (inaccuracy, cybersecurity, compliance, explainability, privacy) are not being mitigated by individual tools.
  • Delivery of a copilot or AI agent solution is time consuming, expensive and frustrating when starting from scratch.

Documentation

Get up to speed with FoundationaLLM by reading the documentation. This includes deployment instructions, quickstarts, architecture, and API references.

Getting Started

FoundationaLLM provides a simple command line driven approach to getting your first deployment up and running. Basically, it's two commands. After that, you can customize the solution, run it locally on your machine and update the deployment with your customizations.

Follow the Quick Start Deployment instructions to get FoundationaLLM deployed in your Azure subscription.

Reporting Issues and Support

If you encounter any issues with FoundationaLLM, please open an issue on GitHub. We will respond to your issue as soon as possible. Please use the Labels (bug, documentation, general question, release x.x.x) to categorize your issue and provide as much detail as possible to help us understand and resolve the issue.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
0.9.7-rc181 0 6/23/2025
0.9.7-rc180 0 6/23/2025
0.9.7-rc179 6 6/23/2025
0.9.7-rc178 9 6/23/2025
0.9.7-rc177 38 6/20/2025
0.9.7-rc176 37 6/20/2025
0.9.7-rc175 36 6/20/2025
0.9.7-rc174 40 6/20/2025
0.9.7-rc173 41 6/20/2025
0.9.7-rc172 101 6/19/2025
0.9.7-rc171 105 6/19/2025
0.9.7-rc170 104 6/19/2025
0.9.7-rc169 108 6/19/2025
0.9.7-rc168 105 6/19/2025
0.9.7-rc167 103 6/19/2025
0.9.7-rc166 100 6/17/2025
0.9.7-rc165 100 6/17/2025
0.9.7-rc164 123 6/16/2025
0.9.7-rc163 122 6/16/2025
0.9.7-rc162 117 6/16/2025
0.9.7-rc161 130 6/15/2025
0.9.7-rc160 191 6/13/2025
0.9.7-rc159 210 6/13/2025
0.9.7-rc158 265 6/12/2025
0.9.7-rc157 267 6/11/2025
0.9.7-rc156 269 6/11/2025
0.9.7-rc155 266 6/10/2025
0.9.7-rc154 275 6/10/2025
0.9.7-rc153 270 6/10/2025
0.9.7-rc152 271 6/10/2025
0.9.7-rc151 267 6/10/2025
0.9.7-rc150.2 0 6/23/2025
0.9.7-rc150 269 6/10/2025
0.9.7-rc149 257 6/9/2025
0.9.7-rc148 247 6/9/2025
0.9.7-rc147 246 6/9/2025
0.9.7-rc146 246 6/9/2025
0.9.7-rc145 250 6/9/2025
0.9.7-rc144 222 6/9/2025
0.9.7-rc143 182 6/8/2025
0.9.7-rc142 183 6/8/2025
0.9.7-rc141 106 6/8/2025
0.9.7-rc140 98 6/7/2025
0.9.7-rc139 89 6/6/2025
0.9.7-rc138 91 6/6/2025
0.9.7-rc137 90 6/6/2025
0.9.7-rc136 122 6/5/2025
0.9.7-rc135 127 6/5/2025
0.9.7-rc134 128 6/5/2025
0.9.7-rc133 126 6/5/2025
0.9.7-rc132 125 6/5/2025
0.9.7-rc131 131 6/5/2025
0.9.7-rc130 130 6/5/2025
0.9.7-rc129 127 6/5/2025
0.9.7-rc128 128 6/4/2025
0.9.7-rc127 127 6/4/2025
0.9.7-rc126 112 6/4/2025
0.9.7-rc125 126 6/4/2025
0.9.7-rc124 128 6/3/2025
0.9.7-rc123 124 6/3/2025
0.9.7-rc122 125 6/3/2025
0.9.7-rc121 125 6/3/2025
0.9.7-rc120 131 6/3/2025
0.9.7-rc119 122 6/2/2025
0.9.7-rc118 122 6/2/2025
0.9.7-rc117 124 6/2/2025
0.9.7-rc116 91 5/30/2025
0.9.7-rc115 125 5/30/2025
0.9.7-rc114 125 5/29/2025
0.9.7-rc113 133 5/29/2025
0.9.7-rc112 125 5/29/2025
0.9.7-rc111 131 5/29/2025
0.9.7-rc110 132 5/29/2025
0.9.7-rc109 127 5/28/2025
0.9.7-rc108 123 5/28/2025
0.9.7-rc107 125 5/27/2025
0.9.7-rc106 128 5/27/2025
0.9.7-rc105 132 5/27/2025
0.9.7-rc104 130 5/26/2025
0.9.7-rc103 133 5/25/2025
0.9.7-rc102 135 5/25/2025
0.9.7-rc101 53 5/24/2025
0.9.7-rc100 85 5/23/2025
0.9.7-beta159 132 5/20/2025
0.9.7-beta158 161 5/16/2025
0.9.7-beta157 215 5/13/2025
0.9.7-beta156 200 5/12/2025
0.9.7-beta155 133 5/6/2025
0.9.7-beta154 130 5/6/2025
0.9.7-beta153 133 5/5/2025
0.9.7-beta152 136 4/30/2025
0.9.7-beta151 147 4/21/2025
0.9.7-beta150 153 4/21/2025
0.9.7-beta149 153 4/20/2025
0.9.7-beta148 133 4/18/2025
0.9.7-beta147 179 4/17/2025
0.9.7-beta146 181 4/17/2025
0.9.7-beta145 95 4/11/2025
0.9.7-beta144 120 4/11/2025
0.9.7-beta143 129 4/11/2025
0.9.7-beta142 123 4/11/2025
0.9.7-beta141 116 4/11/2025
0.9.7-beta140 159 4/10/2025
0.9.7-beta139 156 4/10/2025
0.9.7-beta138 161 4/9/2025
0.9.7-beta137 147 4/3/2025
0.9.7-beta136 146 4/2/2025
0.9.7-beta135 144 4/2/2025
0.9.7-beta134 143 4/2/2025
0.9.7-beta133 148 4/2/2025
0.9.7-beta132 149 4/2/2025
0.9.7-beta131 156 4/1/2025
0.9.7-beta130 148 4/1/2025
0.9.7-beta129 156 3/31/2025
0.9.7-beta128 152 3/31/2025
0.9.7-beta127 146 3/30/2025
0.9.7-beta126 149 3/30/2025
0.9.7-beta125 462 3/26/2025
0.9.7-beta124 473 3/26/2025
0.9.7-beta123 464 3/26/2025
0.9.7-beta122 466 3/25/2025
0.9.7-beta121 466 3/25/2025
0.9.7-beta120 464 3/25/2025
0.9.7-beta119 477 3/25/2025
0.9.7-beta118 473 3/25/2025
0.9.7-beta117 487 3/25/2025
0.9.7-beta116 483 3/24/2025
0.9.7-beta115 399 3/24/2025
0.9.7-beta114 258 3/23/2025
0.9.7-beta113 81 3/21/2025
0.9.7-beta112 109 3/21/2025
0.9.7-beta111 143 3/19/2025
0.9.7-beta110 140 3/19/2025
0.9.7-beta109 141 3/18/2025
0.9.7-beta108 139 3/17/2025
0.9.7-beta107 138 3/17/2025
0.9.7-beta106 152 3/17/2025
0.9.7-beta105 144 3/13/2025
0.9.7-beta104 148 3/12/2025
0.9.7-beta103 149 3/11/2025
0.9.7-beta102 156 3/9/2025
0.9.7-beta101 208 3/7/2025
0.9.7-beta100 204 3/5/2025
0.9.6 206 3/3/2025
0.9.6-rc100 92 2/28/2025
0.9.5 111 2/26/2025
0.9.5-rc102 92 2/25/2025
0.9.5-rc101 84 2/24/2025
0.9.5-rc100 107 2/23/2025
0.9.4 109 2/21/2025
0.9.3 114 2/17/2025
0.9.3-rc018 97 2/17/2025
0.9.3-rc017 107 2/12/2025
0.9.3-rc016 100 2/12/2025
0.9.3-rc015 99 2/7/2025
0.9.3-rc014 93 2/6/2025
0.9.3-rc013 101 2/5/2025
0.9.3-rc012 106 2/5/2025
0.9.3-rc011 95 2/5/2025
0.9.3-rc010 98 2/5/2025
0.9.3-rc009 107 2/4/2025
0.9.3-rc008 100 2/4/2025
0.9.3-rc007 97 2/4/2025
0.9.3-rc006 91 2/3/2025
0.9.3-rc005 95 2/3/2025
0.9.3-rc004 92 1/31/2025
0.9.3-rc003 97 1/30/2025
0.9.3-rc002 91 1/29/2025
0.9.3-rc001 94 1/29/2025
0.9.2 111 1/24/2025
0.9.2-rc007 89 1/24/2025
0.9.2-rc006 97 1/23/2025
0.9.2-rc005 98 1/23/2025
0.9.2-rc004 100 1/23/2025
0.9.2-rc003 92 1/23/2025
0.9.2-rc002 94 1/23/2025
0.9.2-rc001 94 1/22/2025
0.9.2-a001 99 1/21/2025
0.9.1 106 1/21/2025
0.9.1-rc131 91 1/19/2025
0.9.1-rc130 89 1/19/2025
0.9.1-rc129 81 1/19/2025
0.9.1-rc128 89 1/18/2025
0.9.1-rc127 96 1/18/2025
0.9.1-rc126 99 1/17/2025
0.9.1-rc125 97 1/17/2025
0.9.1-rc124 89 1/16/2025
0.9.1-rc123 88 1/15/2025
0.9.1-rc122 90 1/14/2025
0.9.1-rc121 85 1/14/2025
0.9.1-rc120 90 1/14/2025
0.9.1-rc118 92 1/13/2025
0.9.1-rc117 86 1/13/2025
0.9.1-rc116 91 1/8/2025
0.9.1-rc115 108 1/2/2025
0.9.1-rc114 91 12/24/2024
0.9.1-rc113 98 12/23/2024
0.9.1-rc112 103 12/22/2024
0.9.1-rc111 100 12/22/2024
0.9.1-rc110 89 12/21/2024
0.9.1-rc109 97 12/21/2024
0.9.1-rc108 95 12/21/2024
0.9.1-rc107 103 12/20/2024
0.9.1-rc106 99 12/20/2024
0.9.1-rc105 95 12/19/2024
0.9.1-rc104 102 12/19/2024
0.9.1-rc100 100 12/16/2024
0.9.1-alpha4 111 12/15/2024
0.9.1-alpha3 97 12/15/2024
0.9.0-rc3 90 12/9/2024
0.9.0-rc2 96 12/9/2024
0.9.0-alpha5 93 11/28/2024
0.9.0-alpha1 93 11/27/2024
0.8.4 120 11/20/2024
0.8.3 132 9/18/2024
0.8.2 146 9/3/2024
0.8.2-alpha2 116 9/23/2024
0.8.1 150 8/23/2024
0.8.1-alpha2 114 9/18/2024