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

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

releasenotes.md