AICentral 0.7.4-pullrequest0055-0011

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

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

releasenotes.md