AICentral 0.8.3-pullrequest0065-0002

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.8.3-pullrequest0065-0002
                    
NuGet\Install-Package AICentral -Version 0.8.3-pullrequest0065-0002
                    
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.8.3-pullrequest0065-0002" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AICentral" Version="0.8.3-pullrequest0065-0002" />
                    
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.8.3-pullrequest0065-0002
                    
#r "nuget: AICentral, 0.8.3-pullrequest0065-0002"
                    
#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.8.3-pullrequest0065-0002
                    
#: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.8.3-pullrequest0065-0002&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=AICentral&version=0.8.3-pullrequest0065-0002&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 970 9/9/2025
0.21.6-pullrequest0161-0009 129 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 89 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 86 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 98 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 111 8/1/2024
0.19.4-pullrequest0140-0003 76 8/1/2024
0.19.4-pullrequest0139-0001 78 7/29/2024
0.19.3 106 7/29/2024
0.19.2 123 7/29/2024
0.19.2-pullrequest0138-0004 79 7/29/2024
0.19.1 105 7/29/2024
0.19.1-pullrequest0137-0003 80 7/29/2024
0.19.0 105 7/29/2024
0.19.0-pullrequest0136-0014 71 7/29/2024
0.19.0-pullrequest0136-0013 73 7/29/2024
0.19.0-pullrequest0136-0012 162 7/29/2024
0.19.0-pullrequest0136-0011 78 7/29/2024
0.19.0-pullrequest0136-0010 78 7/29/2024
0.19.0-pullrequest0136-0009 85 7/27/2024
0.19.0-pullrequest0136-0008 85 7/27/2024
0.19.0-pullrequest0136-0007 86 7/27/2024
0.18.6 126 7/15/2024
0.18.6-pullrequest0135-0002 80 7/15/2024
0.18.5 106 7/15/2024
0.18.5-pullrequest0134-0003 81 7/15/2024
0.18.4 107 7/15/2024
0.18.4-pullrequest0133-0009 79 7/15/2024
0.18.4-pullrequest0133-0008 82 7/15/2024
0.18.4-pullrequest0133-0007 82 7/15/2024
0.18.3 120 7/12/2024
0.18.3-pullrequest0132-0005 81 7/12/2024
0.18.2 111 7/12/2024
0.18.2-pullrequest0131-0003 83 7/11/2024
0.18.2-pullrequest0130-0003 81 7/11/2024
0.18.1 107 7/10/2024
0.18.1-pullrequest0129-0007 77 7/10/2024
0.18.0 156 7/10/2024
0.18.0-pullrequest0125-0014 78 7/10/2024
0.18.0-pullrequest0125-0013 86 7/10/2024
0.18.0-pullrequest0125-0012 79 7/10/2024
0.18.0-pullrequest0125-0011 81 7/10/2024
0.18.0-pullrequest0125-0010 79 7/10/2024
0.18.0-pullrequest0125-0009 90 7/10/2024
0.17.2-pullrequest0125-0008 83 7/10/2024
0.17.2-pullrequest0125-0007 89 7/10/2024
0.17.2-pullrequest0125-0006 77 7/10/2024
0.17.2-pullrequest0125-0005 80 7/10/2024
0.17.2-pullrequest0125-0004 87 7/10/2024
0.17.2-pullrequest0125-0003 81 7/9/2024
0.17.1 109 7/9/2024
0.17.1-pullrequest0124-0005 89 7/9/2024
0.17.0 112 7/8/2024
0.17.0-pullrequest0123-0024 69 7/8/2024
0.17.0-pullrequest0123-0023 72 7/8/2024
0.17.0-pullrequest0123-0021 87 7/8/2024
0.17.0-pullrequest0123-0019 78 7/8/2024
0.17.0-pullrequest0123-0018 66 7/8/2024
0.17.0-pullrequest0123-0017 81 7/8/2024
0.17.0-pullrequest0123-0015 76 7/8/2024
0.17.0-pullrequest0123-0014 75 7/8/2024
0.17.0-pullrequest0123-0013 78 7/8/2024
0.17.0-pullrequest0123-0012 77 7/8/2024
0.17.0-pullrequest0123-0011 80 7/8/2024
0.17.0-pullrequest0123-0009 84 7/6/2024
0.17.0-pullrequest0123-0008 79 7/6/2024
0.17.0-pullrequest0123-0007 114 7/6/2024
0.16.23 121 6/12/2024
0.16.23-pullrequest0118-0005 83 6/12/2024
0.16.23-pullrequest0118-0004 75 6/12/2024
0.16.23-pullrequest0118-0003 80 6/12/2024
0.16.23-pullrequest0118-0002 76 6/12/2024
0.16.21 166 5/29/2024
0.16.21-pullrequest0114-0002 85 5/29/2024
0.16.20 115 5/28/2024
0.16.20-pullrequest0112-0002 80 5/28/2024
0.16.19 116 5/13/2024
0.16.19-pullrequest0110-0004 94 5/13/2024
0.16.19-pullrequest0110-0003 81 5/13/2024
0.16.17 138 4/22/2024
0.16.17-pullrequest0108-0005 97 4/19/2024
0.16.17-pullrequest0108-0004 92 4/19/2024
0.16.17-pullrequest0108-0003 87 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 94 4/16/2024
0.16.14 192 4/16/2024
0.16.13 136 3/23/2024
0.16.13-pullrequest0103-0003 108 3/23/2024
0.16.12 123 3/23/2024
0.16.12-pullrequest0102-0006 94 3/22/2024
0.16.11 126 3/21/2024
0.16.11-pullrequest0101-0004 86 3/21/2024
0.16.11-pullrequest0101-0003 91 3/21/2024
0.16.11-pullrequest0101-0002 92 3/21/2024
0.16.9 130 3/16/2024
0.16.9-pullrequest0098-0008 91 3/16/2024
0.16.9-pullrequest0098-0007 91 3/16/2024
0.16.8 147 3/15/2024
0.16.8-pullrequest0097-0002 87 3/15/2024
0.16.7 126 3/10/2024
0.16.7-pullrequest0095-0002 102 3/10/2024
0.16.6 210 3/9/2024
0.16.6-pullrequest0094-0003 91 3/9/2024
0.16.6-pullrequest0094-0002 85 3/9/2024
0.16.2 132 3/5/2024
0.16.2-pullrequest0089-0009 93 3/5/2024
0.16.1 133 3/3/2024
0.16.1-pullrequest0088-0003 91 3/2/2024
0.16.1-pullrequest0088-0002 77 3/2/2024
0.16.0 178 2/28/2024
0.16.0-pullrequest0087-0010 84 2/28/2024
0.16.0-pullrequest0087-0009 87 2/28/2024
0.16.0-pullrequest0087-0007 98 2/28/2024
0.16.0-pullrequest0087-0006 88 2/28/2024
0.16.0-pullrequest0087-0005 84 2/28/2024
0.16.0-pullrequest0087-0004 94 2/28/2024
0.16.0-pullrequest0087-0003 91 2/28/2024
0.15.2 122 2/26/2024
0.15.2-pullrequest0086-0007 85 2/26/2024
0.15.2-pullrequest0086-0006 78 2/26/2024
0.15.1 127 2/23/2024
0.15.1-pullrequest0085-0006 84 2/23/2024
0.15.0 126 2/22/2024
0.15.0-pullrequest0084-0004 88 2/22/2024
0.15.0-pullrequest0084-0003 124 2/22/2024
0.14.1-pullrequest0084-0002 102 2/22/2024
0.14.0 142 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 90 2/7/2024
0.13.4 117 2/7/2024
0.13.4-pullrequest0079-0003 84 2/7/2024
0.13.1 123 2/1/2024
0.13.1-pullrequest0076-0003 94 2/1/2024
0.13.1-pullrequest0076-0002 92 2/1/2024
0.13.0 145 2/1/2024
0.13.0-pullrequest0075-0005 92 2/1/2024
0.13.0-pullrequest0075-0004 90 2/1/2024
0.12.2-pullrequest0075-0003 92 2/1/2024
0.12.1 122 2/1/2024
0.12.1-pullrequest0074-0002 88 2/1/2024
0.12.0 123 2/1/2024
0.12.0-pullrequest0073-0002 88 2/1/2024
0.11.0 122 1/31/2024
0.11.0-pullrequest0072-0011 96 1/31/2024
0.11.0-pullrequest0072-0010 86 1/31/2024
0.11.0-pullrequest0072-0008 80 1/31/2024
0.10.0 119 1/31/2024
0.10.0-pullrequest0070-0005 95 1/29/2024
0.10.0-pullrequest0070-0004 88 1/29/2024
0.9.1-pullrequest0069-0001 82 1/29/2024
0.9.0 116 1/29/2024
0.9.0-pullrequest0069-0002 83 1/29/2024
0.8.7-pullrequest0068-0001 88 1/29/2024
0.8.6 120 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 88 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 84 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 126 1/15/2024
0.7.10-pullrequest0059-0007 86 1/16/2024
0.7.10-pullrequest0058-0004 87 1/15/2024
0.7.10-pullrequest0057-0002 89 1/15/2024
0.7.9 127 1/15/2024
0.7.9-pullrequest0057-0003 82 1/15/2024
0.7.7 123 1/15/2024
0.7.7-pullrequest0056-0003 98 1/15/2024
0.7.4 127 1/15/2024
0.7.4-pullrequest0055-0012 89 1/15/2024
0.7.4-pullrequest0055-0011 94 1/15/2024
0.7.4-pullrequest0055-0010 98 1/15/2024
0.7.4-pullrequest0055-0009 95 1/15/2024
0.7.4-pullrequest0055-0008 93 1/15/2024
0.7.4-pullrequest0055-0007 97 1/15/2024
0.7.4-pullrequest0054-0005 91 1/15/2024
0.7.4-pullrequest0053-0004 102 1/15/2024
0.7.4-pullrequest0052-0002 80 1/15/2024
0.7.2 119 1/15/2024
0.7.2-pullrequest0051-0013 95 1/15/2024
0.7.2-pullrequest0050-0010 85 1/15/2024
0.7.1 134 1/13/2024
0.7.0 128 1/13/2024
0.7.0-pullrequest0046-0079 102 1/13/2024
0.6.12 151 1/3/2024
0.6.12-pullrequest0045-0018 83 1/13/2024
0.6.12-pullrequest0042-0010 97 1/12/2024
0.6.12-pullrequest0041-0007 95 1/12/2024
0.6.12-pullrequest0039-0002 96 1/3/2024
0.6.10 143 12/22/2023
0.6.10-pullrequest0038-0007 113 1/2/2024
0.6.10-pullrequest0038-0006 100 1/2/2024
0.6.10-pullrequest0038-0005 98 1/2/2024
0.6.8 139 12/21/2023
0.6.6 130 12/18/2023
0.6.6-pullrequest0035-0007 101 12/21/2023
0.6.6-pullrequest0035-0006 105 12/21/2023
0.6.6-pullrequest0035-0005 99 12/21/2023
0.6.3 135 12/18/2023
0.6.3-pullrequest0034-0018 101 12/18/2023
0.6.1 128 12/15/2023
0.6.1-pullrequest0029-0008 105 12/15/2023
0.6.1-pullrequest0028-0006 108 12/15/2023
0.6.1-pullrequest0027-0004 88 12/15/2023
0.5.3 134 12/11/2023
0.5.3-pullrequest0025-0049 107 12/14/2023
0.5.3-pullrequest0025-0047 106 12/14/2023
0.5.3-pullrequest0025-0043 107 12/13/2023
0.5.3-pullrequest0022-0038 103 12/13/2023
0.5.1 112 12/7/2023
0.5.0 119 12/6/2023
0.4.3 126 12/4/2023
0.4.2 118 12/4/2023
0.4.1 125 12/4/2023
0.3.10 131 11/22/2023
0.3.10-pullrequest0022-0008 98 11/27/2023
0.3.10-pullrequest0021-0005 99 11/22/2023
0.3.9 113 11/20/2023
0.3.8 123 11/9/2023
0.3.8-pullrequest0020-0005 97 11/9/2023
0.3.6 119 11/9/2023
0.3.5 121 11/9/2023
0.3.4 113 11/8/2023
0.3.3 117 11/8/2023
0.3.1 120 11/8/2023
0.3.1-pullrequest0018-0004 109 11/8/2023
0.2.1 154 11/2/2023
0.2.1-pullrequest0017-0050 119 11/8/2023
0.2.1-pullrequest0016-0048 118 11/8/2023
0.2.1-pullrequest0015-0045 109 11/8/2023
0.2.1-pullrequest0014-0035 119 11/7/2023
0.2.1-pullrequest0013-0033 111 11/7/2023
0.2.1-pullrequest0012-0031 110 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 126 11/2/2023
0.2.1-pullrequest0006-0005 117 11/2/2023
0.2.1-pullrequest0005-0001 111 11/2/2023
0.1.0 150 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