AICentral 0.18.5-pullrequest0134-0003

This is a prerelease version of AICentral.
There is a newer version of this package available.
See the version list below for details.
dotnet add package AICentral --version 0.18.5-pullrequest0134-0003
                    
NuGet\Install-Package AICentral -Version 0.18.5-pullrequest0134-0003
                    
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="AICentral" Version="0.18.5-pullrequest0134-0003" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AICentral" Version="0.18.5-pullrequest0134-0003" />
                    
Directory.Packages.props
<PackageReference Include="AICentral" />
                    
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 AICentral --version 0.18.5-pullrequest0134-0003
                    
#r "nuget: AICentral, 0.18.5-pullrequest0134-0003"
                    
#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.
#:package AICentral@0.18.5-pullrequest0134-0003
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AICentral&version=0.18.5-pullrequest0134-0003&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=AICentral&version=0.18.5-pullrequest0134-0003&prerelease
                    
Install as a Cake Tool

AI Central

AI Central gives you control over your AI services.

  • Lightweight out-the-box token logging using Open Telemetry
  • Intelligent Routing
  • Custom consumer OAuth2 authorisation
  • Fallback AI service
  • Round Robin AI services
  • Lowest Latency AI service
  • Circuit breakers, and backoff-retry over downstream AI services
  • Request based and Token based rate limiting
  • Prompt and usage logging
    • Works for streaming endpoints as-well as non streaming
  • Additional Open Telemetry Metrics and Traces

Configuration

See docs on Github for more details.

Minimal

This sample produces a AI-Central proxy that

  • Listens on a hostname of your choosing
  • Proxies directly through to a back-end Open AI server
  • Can be accessed using standard SDKs
  • Outputs open-telemetry metrics to capture usage information
{
  "AICentral": {
    "Endpoints": [
      {
        "Type": "AzureOpenAIEndpoint",
        "Name": "openai-1",
        "Properties": {
          "LanguageEndpoint": "https://<my-ai>.openai.azure.com",
          "AuthenticationType": "ApiKey",
          "ApiKey": "<key>"
        }
      }
    ],
    "EndpointSelectors": [
      {
        "Type": "SingleEndpoint",
        "Name": "default",
        "Properties": {
          "Endpoint": "openai-1"
        }
      }
    ],
    "AuthProviders": [
      {
        "Type": "ApiKey",
        "Name": "apikey",
        "Properties": {
          "Clients": [
            {
              "ClientName": "Consumer-1",
              "Key1": "<random-key>",
              "Key2": "<random-key>"
            }
          ]
        }
      }
    ],
    "Pipelines": [
      {
        "Name": "OpenAIPipeline",
        "Host": "mypipeline.mydomain.com",
        "EndpointSelector": "default",
        "AuthProvider": "apikey",
        "OpenTelemetryConfig": {
          "AddClientNameTag": true,
          "Transmit": true
        }
      }
    ]
  }
}

Full example

This pipeline will:

  • Present an Azure Open AI, and an Open AI downstream as a single upstream endpoint
    • maps the incoming deployment Name "GPT35Turbo0613" to the downstream Azure Open AI deployment "MyGptModel"
    • maps incoming Azure Open AI deployments to Open AI models
  • Present it as an Azure Open AI style endpoint
  • Protect the front-end by requiring an AAD token issued for your own AAD application
  • Put a local Asp.Net core rate-limiting policy over the endpoint
  • Emit Open Telemetry to be picked up by your OTel collector
  • Add rich logging to Azure monitor
    • Logs quota, client caller information (IP and identity name), and in this case the Prompt but not the response.
  • Publish the client-name as a tag in Open Telemetry
{
  "AICentral": {
    "Endpoints": [
      {
        "Type": "AzureOpenAIEndpoint",
        "Name": "openai-priority",
        "Properties": {
          "LanguageEndpoint": "https://<my-ai>.openai.azure.com",
          "AuthenticationType": "Entra|EntraPassThrough|ApiKey",
          "MaxConcurrency": 10,
          "ModelMappings": {
            "Gpt35Turbo0613": "MyGptModel"
          }
        }
      },
      {
        "Type": "OpenAIEndpoint",
        "Name": "openai-fallback",
        "Properties": {
          "LanguageEndpoint": "https://api.openai.com",
          "ModelMappings": {
            "Gpt35Turbo0613": "gpt-3.5-turbo",
            "Ada002Embedding": "text-embedding-ada-002"
          },
          "ApiKey": "<my-api-key>",
          "Organization": "<optional-organisation>"
        }
      }
    ],
    "AuthProviders": [
      {
        "Type": "Entra",
        "Name": "simple-aad",
        "Properties": {
          "Entra": {
            "ClientId": "<my-client-id>",
            "TenantId": "<my-tenant-id>",
            "Instance": "https://login.microsoftonline.com/",
            "Audience": "<custom-audience>"
          }
        }
      }
    ],
    "EndpointSelectors": [
      {
        "Type": "Prioritised",
        "Name": "my-endpoint-selector",
        "Properties": {
          "PriorityEndpoints": ["openai-1"],
          "FallbackEndpoints": ["openai-fallback"]
        }
      }
    ],
    "GenericSteps": [
      {
        "Type": "AspNetCoreFixedWindowRateLimiting",
        "Name": "token-rate-limiter",
        "Properties": {
          "LimitType": "PerConsumer|PerAICentralEndpoint",
          "MetricType": "Tokens",
          "Options": {
            "Window": "00:01:00",
            "PermitLimit": 1000
          }
        }
      },
      {
        "Type": "AspNetCoreFixedWindowRateLimiting",
        "Name": "window-rate-limiter",
        "Properties": {
          "LimitType": "PerConsumer|PerAICentralEndpoint",
          "MetricType": "Requests",
          "Options": {
            "Window": "00:00:10",
            "PermitLimit": 100
          }
        }
      },
      {
        "Type": "AzureMonitorLogger",
        "Name": "azure-monitor-logger",
        "Properties": {
          "WorkspaceId": "<workspace-id>",
          "Key": "<key>",
          "LogPrompt": true,
          "LogResponse": false,
          "LogClient": true
        }
      },
      {
        "Type": "BulkHead",
        "Name": "bulk-head",
        "Properties": {
          "MaxConcurrency": 20
        }
      }
    ],
    "Pipelines": [
      {
        "Name": "MyPipeline",
        "Host": "prioritypipeline.mydomain.com",
        "EndpointSelector": "my-endpoint-selector",
        "AuthProvider": "simple-aad",
        "Steps": [
          "window-rate-limiter",
          "bulk-head",
          "azure-monitor-logger"
        ],
        "OpenTelemetryConfig": {
          "AddClientNameTag": true,
          "Transmit": true
        }
      }
    ]
  }
}

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.21.6 1,136 9/9/2025
0.21.6-pullrequest0161-0009 130 9/9/2025
0.21.6-pullrequest0161-0006 125 9/9/2025
0.21.6-pullrequest0161-0005 135 9/9/2025
0.21.6-pullrequest0161-0004 128 9/9/2025
0.21.5 130 7/18/2025
0.21.4 2,737 2/21/2025
0.21.4-pullrequest0155-0003 86 2/21/2025
0.21.3 113 2/21/2025
0.21.3-pullrequest0155-0002 83 1/30/2025
0.21.1 634 1/14/2025
0.21.1-pullrequest0153-0003 73 1/14/2025
0.21.0 400 12/9/2024
0.21.0-pullrequest0152-0005 90 12/9/2024
0.21.0-pullrequest0152-0004 84 12/9/2024
0.21.0-pullrequest0152-0003 76 12/9/2024
0.21.0-pullrequest0152-0002 88 12/9/2024
0.20.7 262 11/26/2024
0.20.7-pullrequest0151-0002 84 11/26/2024
0.20.6 398 11/1/2024
0.20.6-pullrequest0150-0003 77 11/1/2024
0.20.5 372 9/30/2024
0.20.5-pullrequest0148-0004 97 9/30/2024
0.20.5-pullrequest0148-0003 87 9/30/2024
0.20.5-pullrequest0148-0002 110 9/30/2024
0.20.3 156 9/5/2024
0.20.3-pullrequest0146-0005 81 9/5/2024
0.20.3-pullrequest0146-0004 80 9/5/2024
0.20.2 110 9/4/2024
0.20.2-pullrequest0145-0004 79 9/4/2024
0.20.0 142 8/17/2024
0.20.0-pullrequest0143-0013 97 8/17/2024
0.20.0-pullrequest0143-0012 100 8/17/2024
0.20.0-pullrequest0143-0011 96 8/17/2024
0.20.0-pullrequest0143-0010 94 8/17/2024
0.20.0-pullrequest0143-0009 95 8/17/2024
0.19.6-pullrequest0143-0008 109 8/17/2024
0.19.5 106 8/7/2024
0.19.5-pullrequest0141-0002 78 8/7/2024
0.19.4 112 8/1/2024
0.19.4-pullrequest0140-0003 77 8/1/2024
0.19.4-pullrequest0139-0001 79 7/29/2024
0.19.3 108 7/29/2024
0.19.2 125 7/29/2024
0.19.2-pullrequest0138-0004 80 7/29/2024
0.19.1 106 7/29/2024
0.19.1-pullrequest0137-0003 83 7/29/2024
0.19.0 107 7/29/2024
0.19.0-pullrequest0136-0014 72 7/29/2024
0.19.0-pullrequest0136-0013 74 7/29/2024
0.19.0-pullrequest0136-0012 164 7/29/2024
0.19.0-pullrequest0136-0011 79 7/29/2024
0.19.0-pullrequest0136-0010 79 7/29/2024
0.19.0-pullrequest0136-0009 86 7/27/2024
0.19.0-pullrequest0136-0008 86 7/27/2024
0.19.0-pullrequest0136-0007 87 7/27/2024
0.18.6 127 7/15/2024
0.18.6-pullrequest0135-0002 81 7/15/2024
0.18.5 107 7/15/2024
0.18.5-pullrequest0134-0003 82 7/15/2024
0.18.4 108 7/15/2024
0.18.4-pullrequest0133-0009 80 7/15/2024
0.18.4-pullrequest0133-0008 84 7/15/2024
0.18.4-pullrequest0133-0007 83 7/15/2024
0.18.3 121 7/12/2024
0.18.3-pullrequest0132-0005 82 7/12/2024
0.18.2 112 7/12/2024
0.18.2-pullrequest0131-0003 84 7/11/2024
0.18.2-pullrequest0130-0003 82 7/11/2024
0.18.1 108 7/10/2024
0.18.1-pullrequest0129-0007 78 7/10/2024
0.18.0 157 7/10/2024
0.18.0-pullrequest0125-0014 79 7/10/2024
0.18.0-pullrequest0125-0013 87 7/10/2024
0.18.0-pullrequest0125-0012 80 7/10/2024
0.18.0-pullrequest0125-0011 82 7/10/2024
0.18.0-pullrequest0125-0010 80 7/10/2024
0.18.0-pullrequest0125-0009 91 7/10/2024
0.17.2-pullrequest0125-0008 84 7/10/2024
0.17.2-pullrequest0125-0007 90 7/10/2024
0.17.2-pullrequest0125-0006 78 7/10/2024
0.17.2-pullrequest0125-0005 81 7/10/2024
0.17.2-pullrequest0125-0004 88 7/10/2024
0.17.2-pullrequest0125-0003 82 7/9/2024
0.17.1 110 7/9/2024
0.17.1-pullrequest0124-0005 90 7/9/2024
0.17.0 113 7/8/2024
0.17.0-pullrequest0123-0024 71 7/8/2024
0.17.0-pullrequest0123-0023 73 7/8/2024
0.17.0-pullrequest0123-0021 88 7/8/2024
0.17.0-pullrequest0123-0019 79 7/8/2024
0.17.0-pullrequest0123-0018 67 7/8/2024
0.17.0-pullrequest0123-0017 83 7/8/2024
0.17.0-pullrequest0123-0015 78 7/8/2024
0.17.0-pullrequest0123-0014 77 7/8/2024
0.17.0-pullrequest0123-0013 79 7/8/2024
0.17.0-pullrequest0123-0012 78 7/8/2024
0.17.0-pullrequest0123-0011 81 7/8/2024
0.17.0-pullrequest0123-0009 85 7/6/2024
0.17.0-pullrequest0123-0008 80 7/6/2024
0.17.0-pullrequest0123-0007 115 7/6/2024
0.16.23 122 6/12/2024
0.16.23-pullrequest0118-0005 84 6/12/2024
0.16.23-pullrequest0118-0004 76 6/12/2024
0.16.23-pullrequest0118-0003 81 6/12/2024
0.16.23-pullrequest0118-0002 77 6/12/2024
0.16.21 167 5/29/2024
0.16.21-pullrequest0114-0002 86 5/29/2024
0.16.20 116 5/28/2024
0.16.20-pullrequest0112-0002 81 5/28/2024
0.16.19 117 5/13/2024
0.16.19-pullrequest0110-0004 94 5/13/2024
0.16.19-pullrequest0110-0003 81 5/13/2024
0.16.17 140 4/22/2024
0.16.17-pullrequest0108-0005 99 4/19/2024
0.16.17-pullrequest0108-0004 96 4/19/2024
0.16.17-pullrequest0108-0003 89 4/19/2024
0.16.16 128 4/16/2024
0.16.16-pullrequest0107-0003 98 4/16/2024
0.16.15 131 4/16/2024
0.16.15-pullrequest0106-0004 85 4/16/2024
0.16.15-pullrequest0106-0003 82 4/16/2024
0.16.15-pullrequest0106-0002 95 4/16/2024
0.16.14 192 4/16/2024
0.16.13 138 3/23/2024
0.16.13-pullrequest0103-0003 109 3/23/2024
0.16.12 124 3/23/2024
0.16.12-pullrequest0102-0006 96 3/22/2024
0.16.11 128 3/21/2024
0.16.11-pullrequest0101-0004 87 3/21/2024
0.16.11-pullrequest0101-0003 92 3/21/2024
0.16.11-pullrequest0101-0002 94 3/21/2024
0.16.9 131 3/16/2024
0.16.9-pullrequest0098-0008 92 3/16/2024
0.16.9-pullrequest0098-0007 92 3/16/2024
0.16.8 148 3/15/2024
0.16.8-pullrequest0097-0002 88 3/15/2024
0.16.7 127 3/10/2024
0.16.7-pullrequest0095-0002 103 3/10/2024
0.16.6 211 3/9/2024
0.16.6-pullrequest0094-0003 92 3/9/2024
0.16.6-pullrequest0094-0002 86 3/9/2024
0.16.2 133 3/5/2024
0.16.2-pullrequest0089-0009 94 3/5/2024
0.16.1 135 3/3/2024
0.16.1-pullrequest0088-0003 92 3/2/2024
0.16.1-pullrequest0088-0002 78 3/2/2024
0.16.0 179 2/28/2024
0.16.0-pullrequest0087-0010 86 2/28/2024
0.16.0-pullrequest0087-0009 88 2/28/2024
0.16.0-pullrequest0087-0007 99 2/28/2024
0.16.0-pullrequest0087-0006 90 2/28/2024
0.16.0-pullrequest0087-0005 85 2/28/2024
0.16.0-pullrequest0087-0004 96 2/28/2024
0.16.0-pullrequest0087-0003 92 2/28/2024
0.15.2 123 2/26/2024
0.15.2-pullrequest0086-0007 86 2/26/2024
0.15.2-pullrequest0086-0006 79 2/26/2024
0.15.1 129 2/23/2024
0.15.1-pullrequest0085-0006 86 2/23/2024
0.15.0 128 2/22/2024
0.15.0-pullrequest0084-0004 90 2/22/2024
0.15.0-pullrequest0084-0003 127 2/22/2024
0.14.1-pullrequest0084-0002 104 2/22/2024
0.14.0 144 2/21/2024
0.14.0-pullrequest0083-0011 107 2/8/2024
0.14.0-pullrequest0083-0010 86 2/8/2024
0.14.0-pullrequest0083-0009 91 2/8/2024
0.13.7 141 2/8/2024
0.13.7-pullrequest0082-0002 98 2/8/2024
0.13.6-pullrequest0081-0006 89 2/8/2024
0.13.5 151 2/7/2024
0.13.5-pullrequest0080-0002 92 2/7/2024
0.13.4 117 2/7/2024
0.13.4-pullrequest0079-0003 84 2/7/2024
0.13.1 126 2/1/2024
0.13.1-pullrequest0076-0003 96 2/1/2024
0.13.1-pullrequest0076-0002 94 2/1/2024
0.13.0 146 2/1/2024
0.13.0-pullrequest0075-0005 93 2/1/2024
0.13.0-pullrequest0075-0004 91 2/1/2024
0.12.2-pullrequest0075-0003 93 2/1/2024
0.12.1 123 2/1/2024
0.12.1-pullrequest0074-0002 89 2/1/2024
0.12.0 124 2/1/2024
0.12.0-pullrequest0073-0002 89 2/1/2024
0.11.0 124 1/31/2024
0.11.0-pullrequest0072-0011 98 1/31/2024
0.11.0-pullrequest0072-0010 88 1/31/2024
0.11.0-pullrequest0072-0008 82 1/31/2024
0.10.0 122 1/31/2024
0.10.0-pullrequest0070-0005 97 1/29/2024
0.10.0-pullrequest0070-0004 90 1/29/2024
0.9.1-pullrequest0069-0001 84 1/29/2024
0.9.0 119 1/29/2024
0.9.0-pullrequest0069-0002 85 1/29/2024
0.8.7-pullrequest0068-0001 90 1/29/2024
0.8.6 122 1/29/2024
0.8.4 139 1/19/2024
0.8.4-pullrequest0066-0009 84 1/19/2024
0.8.4-pullrequest0066-0008 82 1/19/2024
0.8.4-pullrequest0066-0007 91 1/19/2024
0.8.4-pullrequest0066-0005 80 1/19/2024
0.8.4-pullrequest0066-0004 91 1/19/2024
0.8.4-pullrequest0066-0003 85 1/19/2024
0.8.3 122 1/19/2024
0.8.3-pullrequest0065-0003 89 1/19/2024
0.8.3-pullrequest0065-0002 86 1/19/2024
0.8.1 118 1/19/2024
0.8.1-pullrequest0063-0013 90 1/19/2024
0.8.1-pullrequest0063-0011 85 1/19/2024
0.7.16-pullrequest0063-0010 92 1/19/2024
0.7.15 125 1/18/2024
0.7.15-pullrequest0062-0002 88 1/18/2024
0.7.12 132 1/16/2024
0.7.12-pullrequest0059-0006 91 1/16/2024
0.7.10 127 1/15/2024
0.7.10-pullrequest0059-0007 86 1/16/2024
0.7.10-pullrequest0058-0004 88 1/15/2024
0.7.10-pullrequest0057-0002 90 1/15/2024
0.7.9 128 1/15/2024
0.7.9-pullrequest0057-0003 83 1/15/2024
0.7.7 124 1/15/2024
0.7.7-pullrequest0056-0003 99 1/15/2024
0.7.4 128 1/15/2024
0.7.4-pullrequest0055-0012 90 1/15/2024
0.7.4-pullrequest0055-0011 95 1/15/2024
0.7.4-pullrequest0055-0010 99 1/15/2024
0.7.4-pullrequest0055-0009 96 1/15/2024
0.7.4-pullrequest0055-0008 94 1/15/2024
0.7.4-pullrequest0055-0007 98 1/15/2024
0.7.4-pullrequest0054-0005 93 1/15/2024
0.7.4-pullrequest0053-0004 103 1/15/2024
0.7.4-pullrequest0052-0002 81 1/15/2024
0.7.2 120 1/15/2024
0.7.2-pullrequest0051-0013 96 1/15/2024
0.7.2-pullrequest0050-0010 87 1/15/2024
0.7.1 135 1/13/2024
0.7.0 129 1/13/2024
0.7.0-pullrequest0046-0079 103 1/13/2024
0.6.12 153 1/3/2024
0.6.12-pullrequest0045-0018 84 1/13/2024
0.6.12-pullrequest0042-0010 98 1/12/2024
0.6.12-pullrequest0041-0007 96 1/12/2024
0.6.12-pullrequest0039-0002 99 1/3/2024
0.6.10 145 12/22/2023
0.6.10-pullrequest0038-0007 115 1/2/2024
0.6.10-pullrequest0038-0006 102 1/2/2024
0.6.10-pullrequest0038-0005 101 1/2/2024
0.6.8 140 12/21/2023
0.6.6 131 12/18/2023
0.6.6-pullrequest0035-0007 102 12/21/2023
0.6.6-pullrequest0035-0006 107 12/21/2023
0.6.6-pullrequest0035-0005 100 12/21/2023
0.6.3 137 12/18/2023
0.6.3-pullrequest0034-0018 103 12/18/2023
0.6.1 130 12/15/2023
0.6.1-pullrequest0029-0008 106 12/15/2023
0.6.1-pullrequest0028-0006 110 12/15/2023
0.6.1-pullrequest0027-0004 89 12/15/2023
0.5.3 135 12/11/2023
0.5.3-pullrequest0025-0049 108 12/14/2023
0.5.3-pullrequest0025-0047 107 12/14/2023
0.5.3-pullrequest0025-0043 108 12/13/2023
0.5.3-pullrequest0022-0038 104 12/13/2023
0.5.1 113 12/7/2023
0.5.0 120 12/6/2023
0.4.3 127 12/4/2023
0.4.2 119 12/4/2023
0.4.1 126 12/4/2023
0.3.10 133 11/22/2023
0.3.10-pullrequest0022-0008 99 11/27/2023
0.3.10-pullrequest0021-0005 102 11/22/2023
0.3.9 114 11/20/2023
0.3.8 124 11/9/2023
0.3.8-pullrequest0020-0005 98 11/9/2023
0.3.6 120 11/9/2023
0.3.5 122 11/9/2023
0.3.4 114 11/8/2023
0.3.3 118 11/8/2023
0.3.1 121 11/8/2023
0.3.1-pullrequest0018-0004 110 11/8/2023
0.2.1 155 11/2/2023
0.2.1-pullrequest0017-0050 120 11/8/2023
0.2.1-pullrequest0016-0048 119 11/8/2023
0.2.1-pullrequest0015-0045 110 11/8/2023
0.2.1-pullrequest0014-0035 120 11/7/2023
0.2.1-pullrequest0013-0033 112 11/7/2023
0.2.1-pullrequest0012-0031 111 11/7/2023
0.2.1-pullrequest0011-0024 111 11/6/2023
0.2.1-pullrequest0010-0015 128 11/2/2023
0.2.1-pullrequest0009-0011 114 11/2/2023
0.2.1-pullrequest0008-0009 119 11/2/2023
0.2.1-pullrequest0007-0007 127 11/2/2023
0.2.1-pullrequest0006-0005 117 11/2/2023
0.2.1-pullrequest0005-0001 111 11/2/2023
0.1.0 151 10/27/2023
0.1.0-pullrequest0004-0024 121 11/1/2023
0.1.0-pullrequest0003-0022 121 11/1/2023
0.1.0-pullrequest0002-0019 117 11/1/2023
0.1.0-pullrequest0001-0017 119 11/1/2023
0.1.0-pullrequest0001-0010 121 10/30/2023

releasenotes.md