AICentral 0.13.0-pullrequest0075-0004

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.13.0-pullrequest0075-0004
                    
NuGet\Install-Package AICentral -Version 0.13.0-pullrequest0075-0004
                    
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.13.0-pullrequest0075-0004" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AICentral" Version="0.13.0-pullrequest0075-0004" />
                    
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.13.0-pullrequest0075-0004
                    
#r "nuget: AICentral, 0.13.0-pullrequest0075-0004"
                    
#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.13.0-pullrequest0075-0004
                    
#: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.13.0-pullrequest0075-0004&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=AICentral&version=0.13.0-pullrequest0075-0004&prerelease
                    
Install as a Cake Tool

AI Central

AI Central gives you control over your AI services.

  • 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
{
  "AICentral": {
    "Endpoints": [
      {
        "Type": "AzureOpenAIEndpoint",
        "Name": "openai-1",
        "Properties": {
          "LanguageEndpoint": "https://<my-ai>.openai.azure.com"
        }
      }
    ],
    "EndpointSelectors": [
      {
        "Type": "SingleEndpoint",
        "Name": "default",
        "Properties": {
          "Endpoint": "openai-1"
        }
      }
    ],
    "Pipelines": [
      {
        "Name": "OpenAIPipeline",
        "Host": "mypipeline.mydomain.com",
        "EndpointSelector": "default"
      }
    ]
  }
}

Full example

This pipeline will:

  • Present an Azure Open AI, and an Open AI downstream as a single upstream endpoint
    • 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
  • Add logging to Azure monitor
    • Logs quota, client caller information, and in this case the Prompt but not the response.
{
  "AICentral": {
    "Endpoints": [
      {
        "Type": "AzureOpenAIEndpoint",
        "Name": "openai-priority",
        "Properties": {
          "LanguageEndpoint": "https://<my-ai>.openai.azure.com",
          "AuthenticationType": "Entra|EntraPassThrough|ApiKey",
          "MaxConcurrency": 10
        }
      },
      {
        "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
        }
      },
      {
        "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"
        ]
      }
    ]
  }
}

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

releasenotes.md