AICentral 0.5.3-pullrequest0025-0043

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.5.3-pullrequest0025-0043                
NuGet\Install-Package AICentral -Version 0.5.3-pullrequest0025-0043                
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.5.3-pullrequest0025-0043" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AICentral --version 0.5.3-pullrequest0025-0043                
#r "nuget: AICentral, 0.5.3-pullrequest0025-0043"                
#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.
// Install AICentral as a Cake Addin
#addin nuget:?package=AICentral&version=0.5.3-pullrequest0025-0043&prerelease

// Install AICentral as a Cake Tool
#tool nuget:?package=AICentral&version=0.5.3-pullrequest0025-0043&prerelease                

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": {
          "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": "TokenBasedRateLimiting",
        "Name": "token-rate-limiter",
        "Properties": {
          "LimitType": "PerConsumer|PerAICentralEndpoint",
          "Window": 60,
          "PermitLimit": 1000
        }
      },
      {
        "Type": "AspNetCoreFixedWindowRateLimiting",
        "Name": "window-rate-limiter",
        "Properties": {
          "LimitType": "PerConsumer|PerAICentralEndpoint",
          "Options": {
            "Window": 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 net7.0 is compatible.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
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.20.3 45 9/5/2024
0.20.3-pullrequest0146-0005 34 9/5/2024
0.20.3-pullrequest0146-0004 38 9/5/2024
0.20.2 40 9/4/2024
0.20.2-pullrequest0145-0004 30 9/4/2024
0.20.0 72 8/17/2024
0.20.0-pullrequest0143-0013 55 8/17/2024
0.20.0-pullrequest0143-0012 55 8/17/2024
0.20.0-pullrequest0143-0011 57 8/17/2024
0.20.0-pullrequest0143-0010 53 8/17/2024
0.20.0-pullrequest0143-0009 55 8/17/2024
0.19.6-pullrequest0143-0008 59 8/17/2024
0.19.5 42 8/7/2024
0.19.5-pullrequest0141-0002 35 8/7/2024
0.19.4 43 8/1/2024
0.19.4-pullrequest0140-0003 34 8/1/2024
0.19.4-pullrequest0139-0001 35 7/29/2024
0.19.3 41 7/29/2024
0.19.2 44 7/29/2024
0.19.2-pullrequest0138-0004 33 7/29/2024
0.19.1 38 7/29/2024
0.19.1-pullrequest0137-0003 35 7/29/2024
0.19.0 35 7/29/2024
0.19.0-pullrequest0136-0014 33 7/29/2024
0.19.0-pullrequest0136-0013 33 7/29/2024
0.19.0-pullrequest0136-0012 120 7/29/2024
0.19.0-pullrequest0136-0011 36 7/29/2024
0.19.0-pullrequest0136-0010 33 7/29/2024
0.19.0-pullrequest0136-0009 48 7/27/2024
0.19.0-pullrequest0136-0008 39 7/27/2024
0.19.0-pullrequest0136-0007 40 7/27/2024
0.18.6 54 7/15/2024
0.18.6-pullrequest0135-0002 36 7/15/2024
0.18.5 40 7/15/2024
0.18.5-pullrequest0134-0003 32 7/15/2024
0.18.4 43 7/15/2024
0.18.4-pullrequest0133-0009 39 7/15/2024
0.18.4-pullrequest0133-0008 35 7/15/2024
0.18.4-pullrequest0133-0007 38 7/15/2024
0.18.3 42 7/12/2024
0.18.3-pullrequest0132-0005 36 7/12/2024
0.18.2 39 7/12/2024
0.18.2-pullrequest0131-0003 42 7/11/2024
0.18.2-pullrequest0130-0003 38 7/11/2024
0.18.1 43 7/10/2024
0.18.1-pullrequest0129-0007 35 7/10/2024
0.18.0 75 7/10/2024
0.18.0-pullrequest0125-0014 35 7/10/2024
0.18.0-pullrequest0125-0013 41 7/10/2024
0.18.0-pullrequest0125-0012 31 7/10/2024
0.18.0-pullrequest0125-0011 29 7/10/2024
0.18.0-pullrequest0125-0010 33 7/10/2024
0.18.0-pullrequest0125-0009 44 7/10/2024
0.17.2-pullrequest0125-0008 37 7/10/2024
0.17.2-pullrequest0125-0007 38 7/10/2024
0.17.2-pullrequest0125-0006 38 7/10/2024
0.17.2-pullrequest0125-0005 39 7/10/2024
0.17.2-pullrequest0125-0004 43 7/10/2024
0.17.2-pullrequest0125-0003 40 7/9/2024
0.17.1 43 7/9/2024
0.17.1-pullrequest0124-0005 41 7/9/2024
0.17.0 46 7/8/2024
0.17.0-pullrequest0123-0024 28 7/8/2024
0.17.0-pullrequest0123-0023 31 7/8/2024
0.17.0-pullrequest0123-0021 45 7/8/2024
0.17.0-pullrequest0123-0019 37 7/8/2024
0.17.0-pullrequest0123-0018 27 7/8/2024
0.17.0-pullrequest0123-0017 40 7/8/2024
0.17.0-pullrequest0123-0015 36 7/8/2024
0.17.0-pullrequest0123-0014 27 7/8/2024
0.17.0-pullrequest0123-0013 34 7/8/2024
0.17.0-pullrequest0123-0012 30 7/8/2024
0.17.0-pullrequest0123-0011 40 7/8/2024
0.17.0-pullrequest0123-0009 42 7/6/2024
0.17.0-pullrequest0123-0008 36 7/6/2024
0.17.0-pullrequest0123-0007 74 7/6/2024
0.16.23 47 6/12/2024
0.16.23-pullrequest0118-0005 44 6/12/2024
0.16.23-pullrequest0118-0004 39 6/12/2024
0.16.23-pullrequest0118-0003 40 6/12/2024
0.16.23-pullrequest0118-0002 39 6/12/2024
0.16.21 103 5/29/2024
0.16.21-pullrequest0114-0002 46 5/29/2024
0.16.20 46 5/28/2024
0.16.20-pullrequest0112-0002 39 5/28/2024
0.16.19 55 5/13/2024
0.16.19-pullrequest0110-0004 51 5/13/2024
0.16.19-pullrequest0110-0003 39 5/13/2024
0.16.17 75 4/22/2024
0.16.17-pullrequest0108-0005 57 4/19/2024
0.16.17-pullrequest0108-0004 40 4/19/2024
0.16.17-pullrequest0108-0003 41 4/19/2024
0.16.16 67 4/16/2024
0.16.16-pullrequest0107-0003 59 4/16/2024
0.16.15 58 4/16/2024
0.16.15-pullrequest0106-0004 39 4/16/2024
0.16.15-pullrequest0106-0003 43 4/16/2024
0.16.15-pullrequest0106-0002 56 4/16/2024
0.16.14 127 4/16/2024
0.16.13 70 3/23/2024
0.16.13-pullrequest0103-0003 64 3/23/2024
0.16.12 61 3/23/2024
0.16.12-pullrequest0102-0006 53 3/22/2024
0.16.11 60 3/21/2024
0.16.11-pullrequest0101-0004 44 3/21/2024
0.16.11-pullrequest0101-0003 43 3/21/2024
0.16.11-pullrequest0101-0002 45 3/21/2024
0.16.9 67 3/16/2024
0.16.9-pullrequest0098-0008 50 3/16/2024
0.16.9-pullrequest0098-0007 50 3/16/2024
0.16.8 85 3/15/2024
0.16.8-pullrequest0097-0002 49 3/15/2024
0.16.7 63 3/10/2024
0.16.7-pullrequest0095-0002 59 3/10/2024
0.16.6 146 3/9/2024
0.16.6-pullrequest0094-0003 49 3/9/2024
0.16.6-pullrequest0094-0002 47 3/9/2024
0.16.2 71 3/5/2024
0.16.2-pullrequest0089-0009 49 3/5/2024
0.16.1 70 3/3/2024
0.16.1-pullrequest0088-0003 45 3/2/2024
0.16.1-pullrequest0088-0002 42 3/2/2024
0.16.0 112 2/28/2024
0.16.0-pullrequest0087-0010 44 2/28/2024
0.16.0-pullrequest0087-0009 46 2/28/2024
0.16.0-pullrequest0087-0007 53 2/28/2024
0.16.0-pullrequest0087-0006 48 2/28/2024
0.16.0-pullrequest0087-0005 41 2/28/2024
0.16.0-pullrequest0087-0004 48 2/28/2024
0.16.0-pullrequest0087-0003 45 2/28/2024
0.15.2 56 2/26/2024
0.15.2-pullrequest0086-0007 45 2/26/2024
0.15.2-pullrequest0086-0006 37 2/26/2024
0.15.1 61 2/23/2024
0.15.1-pullrequest0085-0006 44 2/23/2024
0.15.0 60 2/22/2024
0.15.0-pullrequest0084-0004 45 2/22/2024
0.15.0-pullrequest0084-0003 73 2/22/2024
0.14.1-pullrequest0084-0002 54 2/22/2024
0.14.0 73 2/21/2024
0.14.0-pullrequest0083-0011 62 2/8/2024
0.14.0-pullrequest0083-0010 43 2/8/2024
0.14.0-pullrequest0083-0009 45 2/8/2024
0.13.7 78 2/8/2024
0.13.7-pullrequest0082-0002 56 2/8/2024
0.13.6-pullrequest0081-0006 46 2/8/2024
0.13.5 65 2/7/2024
0.13.5-pullrequest0080-0002 48 2/7/2024
0.13.4 59 2/7/2024
0.13.4-pullrequest0079-0003 45 2/7/2024
0.13.1 71 2/1/2024
0.13.1-pullrequest0076-0003 53 2/1/2024
0.13.1-pullrequest0076-0002 56 2/1/2024
0.13.0 83 2/1/2024
0.13.0-pullrequest0075-0005 54 2/1/2024
0.13.0-pullrequest0075-0004 45 2/1/2024
0.12.2-pullrequest0075-0003 50 2/1/2024
0.12.1 57 2/1/2024
0.12.1-pullrequest0074-0002 51 2/1/2024
0.12.0 59 2/1/2024
0.12.0-pullrequest0073-0002 49 2/1/2024
0.11.0 60 1/31/2024
0.11.0-pullrequest0072-0011 52 1/31/2024
0.11.0-pullrequest0072-0010 50 1/31/2024
0.11.0-pullrequest0072-0008 46 1/31/2024
0.10.0 61 1/31/2024
0.10.0-pullrequest0070-0005 54 1/29/2024
0.10.0-pullrequest0070-0004 49 1/29/2024
0.9.1-pullrequest0069-0001 52 1/29/2024
0.9.0 61 1/29/2024
0.9.0-pullrequest0069-0002 47 1/29/2024
0.8.7-pullrequest0068-0001 53 1/29/2024
0.8.6 62 1/29/2024
0.8.4 79 1/19/2024
0.8.4-pullrequest0066-0009 50 1/19/2024
0.8.4-pullrequest0066-0008 45 1/19/2024
0.8.4-pullrequest0066-0007 46 1/19/2024
0.8.4-pullrequest0066-0005 43 1/19/2024
0.8.4-pullrequest0066-0004 48 1/19/2024
0.8.4-pullrequest0066-0003 42 1/19/2024
0.8.3 54 1/19/2024
0.8.3-pullrequest0065-0003 51 1/19/2024
0.8.3-pullrequest0065-0002 48 1/19/2024
0.8.1 61 1/19/2024
0.8.1-pullrequest0063-0013 47 1/19/2024
0.8.1-pullrequest0063-0011 49 1/19/2024
0.7.16-pullrequest0063-0010 49 1/19/2024
0.7.15 64 1/18/2024
0.7.15-pullrequest0062-0002 47 1/18/2024
0.7.12 74 1/16/2024
0.7.12-pullrequest0059-0006 55 1/16/2024
0.7.10 68 1/15/2024
0.7.10-pullrequest0059-0007 50 1/16/2024
0.7.10-pullrequest0058-0004 46 1/15/2024
0.7.10-pullrequest0057-0002 52 1/15/2024
0.7.9 66 1/15/2024
0.7.9-pullrequest0057-0003 47 1/15/2024
0.7.7 63 1/15/2024
0.7.7-pullrequest0056-0003 53 1/15/2024
0.7.4 67 1/15/2024
0.7.4-pullrequest0055-0012 55 1/15/2024
0.7.4-pullrequest0055-0011 53 1/15/2024
0.7.4-pullrequest0055-0010 60 1/15/2024
0.7.4-pullrequest0055-0009 54 1/15/2024
0.7.4-pullrequest0055-0008 53 1/15/2024
0.7.4-pullrequest0055-0007 56 1/15/2024
0.7.4-pullrequest0054-0005 52 1/15/2024
0.7.4-pullrequest0053-0004 64 1/15/2024
0.7.4-pullrequest0052-0002 46 1/15/2024
0.7.2 59 1/15/2024
0.7.2-pullrequest0051-0013 55 1/15/2024
0.7.2-pullrequest0050-0010 47 1/15/2024
0.7.1 73 1/13/2024
0.7.0 71 1/13/2024
0.7.0-pullrequest0046-0079 63 1/13/2024
0.6.12 87 1/3/2024
0.6.12-pullrequest0045-0018 52 1/13/2024
0.6.12-pullrequest0042-0010 56 1/12/2024
0.6.12-pullrequest0041-0007 54 1/12/2024
0.6.12-pullrequest0039-0002 59 1/3/2024
0.6.10 84 12/22/2023
0.6.10-pullrequest0038-0007 65 1/2/2024
0.6.10-pullrequest0038-0006 60 1/2/2024
0.6.10-pullrequest0038-0005 59 1/2/2024
0.6.8 76 12/21/2023
0.6.6 76 12/18/2023
0.6.6-pullrequest0035-0007 65 12/21/2023
0.6.6-pullrequest0035-0006 66 12/21/2023
0.6.6-pullrequest0035-0005 61 12/21/2023
0.6.3 72 12/18/2023
0.6.3-pullrequest0034-0018 65 12/18/2023
0.6.1 63 12/15/2023
0.6.1-pullrequest0029-0008 60 12/15/2023
0.6.1-pullrequest0028-0006 66 12/15/2023
0.6.1-pullrequest0027-0004 46 12/15/2023
0.5.3 77 12/11/2023
0.5.3-pullrequest0025-0049 69 12/14/2023
0.5.3-pullrequest0025-0047 68 12/14/2023
0.5.3-pullrequest0025-0043 60 12/13/2023
0.5.3-pullrequest0022-0038 59 12/13/2023
0.5.1 70 12/7/2023
0.5.0 81 12/6/2023
0.4.3 86 12/4/2023
0.4.2 76 12/4/2023
0.4.1 83 12/4/2023
0.3.10 95 11/22/2023
0.3.10-pullrequest0022-0008 63 11/27/2023
0.3.10-pullrequest0021-0005 68 11/22/2023
0.3.9 72 11/20/2023
0.3.8 79 11/9/2023
0.3.8-pullrequest0020-0005 60 11/9/2023
0.3.6 71 11/9/2023
0.3.5 78 11/9/2023
0.3.4 72 11/8/2023
0.3.3 69 11/8/2023
0.3.1 75 11/8/2023
0.3.1-pullrequest0018-0004 64 11/8/2023
0.2.1 107 11/2/2023
0.2.1-pullrequest0017-0050 70 11/8/2023
0.2.1-pullrequest0016-0048 69 11/8/2023
0.2.1-pullrequest0015-0045 63 11/8/2023
0.2.1-pullrequest0014-0035 75 11/7/2023
0.2.1-pullrequest0013-0033 67 11/7/2023
0.2.1-pullrequest0012-0031 70 11/7/2023
0.2.1-pullrequest0011-0024 67 11/6/2023
0.2.1-pullrequest0010-0015 78 11/2/2023
0.2.1-pullrequest0009-0011 72 11/2/2023
0.2.1-pullrequest0008-0009 72 11/2/2023
0.2.1-pullrequest0007-0007 77 11/2/2023
0.2.1-pullrequest0006-0005 74 11/2/2023
0.2.1-pullrequest0005-0001 64 11/2/2023
0.1.0 97 10/27/2023
0.1.0-pullrequest0004-0024 74 11/1/2023
0.1.0-pullrequest0003-0022 69 11/1/2023
0.1.0-pullrequest0002-0019 68 11/1/2023
0.1.0-pullrequest0001-0017 72 11/1/2023
0.1.0-pullrequest0001-0010 73 10/30/2023