AICentral 0.5.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package AICentral --version 0.5.3                
NuGet\Install-Package AICentral -Version 0.5.3                
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" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AICentral --version 0.5.3                
#r "nuget: AICentral, 0.5.3"                
#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

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

AI Central

AI Central gives you control over your AI services.

  • Intelligent Routing
  • Custom consumer OAuth2 authorisation
  • Fallback AI service
  • Round Robin AI services
  • Circuit breakers, and backoff-retry over downstream AI services
  • 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 44 9/5/2024
0.20.3-pullrequest0146-0005 33 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 71 8/17/2024
0.20.0-pullrequest0143-0013 54 8/17/2024
0.20.0-pullrequest0143-0012 55 8/17/2024
0.20.0-pullrequest0143-0011 56 8/17/2024
0.20.0-pullrequest0143-0010 53 8/17/2024
0.20.0-pullrequest0143-0009 54 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 42 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 43 7/29/2024
0.19.2-pullrequest0138-0004 33 7/29/2024
0.19.1 37 7/29/2024
0.19.1-pullrequest0137-0003 34 7/29/2024
0.19.0 34 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 114 7/29/2024
0.19.0-pullrequest0136-0011 35 7/29/2024
0.19.0-pullrequest0136-0010 32 7/29/2024
0.19.0-pullrequest0136-0009 47 7/27/2024
0.19.0-pullrequest0136-0008 38 7/27/2024
0.19.0-pullrequest0136-0007 40 7/27/2024
0.18.6 53 7/15/2024
0.18.6-pullrequest0135-0002 35 7/15/2024
0.18.5 39 7/15/2024
0.18.5-pullrequest0134-0003 32 7/15/2024
0.18.4 43 7/15/2024
0.18.4-pullrequest0133-0009 38 7/15/2024
0.18.4-pullrequest0133-0008 34 7/15/2024
0.18.4-pullrequest0133-0007 37 7/15/2024
0.18.3 41 7/12/2024
0.18.3-pullrequest0132-0005 36 7/12/2024
0.18.2 39 7/12/2024
0.18.2-pullrequest0131-0003 41 7/11/2024
0.18.2-pullrequest0130-0003 37 7/11/2024
0.18.1 43 7/10/2024
0.18.1-pullrequest0129-0007 34 7/10/2024
0.18.0 74 7/10/2024
0.18.0-pullrequest0125-0014 34 7/10/2024
0.18.0-pullrequest0125-0013 40 7/10/2024
0.18.0-pullrequest0125-0012 31 7/10/2024
0.18.0-pullrequest0125-0011 28 7/10/2024
0.18.0-pullrequest0125-0010 32 7/10/2024
0.18.0-pullrequest0125-0009 43 7/10/2024
0.17.2-pullrequest0125-0008 36 7/10/2024
0.17.2-pullrequest0125-0007 38 7/10/2024
0.17.2-pullrequest0125-0006 37 7/10/2024
0.17.2-pullrequest0125-0005 38 7/10/2024
0.17.2-pullrequest0125-0004 42 7/10/2024
0.17.2-pullrequest0125-0003 39 7/9/2024
0.17.1 42 7/9/2024
0.17.1-pullrequest0124-0005 41 7/9/2024
0.17.0 45 7/8/2024
0.17.0-pullrequest0123-0024 27 7/8/2024
0.17.0-pullrequest0123-0023 30 7/8/2024
0.17.0-pullrequest0123-0021 45 7/8/2024
0.17.0-pullrequest0123-0019 36 7/8/2024
0.17.0-pullrequest0123-0018 27 7/8/2024
0.17.0-pullrequest0123-0017 39 7/8/2024
0.17.0-pullrequest0123-0015 35 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 29 7/8/2024
0.17.0-pullrequest0123-0011 39 7/8/2024
0.17.0-pullrequest0123-0009 41 7/6/2024
0.17.0-pullrequest0123-0008 35 7/6/2024
0.17.0-pullrequest0123-0007 74 7/6/2024
0.16.23 47 6/12/2024
0.16.23-pullrequest0118-0005 43 6/12/2024
0.16.23-pullrequest0118-0004 38 6/12/2024
0.16.23-pullrequest0118-0003 40 6/12/2024
0.16.23-pullrequest0118-0002 38 6/12/2024
0.16.21 102 5/29/2024
0.16.21-pullrequest0114-0002 45 5/29/2024
0.16.20 46 5/28/2024
0.16.20-pullrequest0112-0002 39 5/28/2024
0.16.19 54 5/13/2024
0.16.19-pullrequest0110-0004 50 5/13/2024
0.16.19-pullrequest0110-0003 39 5/13/2024
0.16.17 74 4/22/2024
0.16.17-pullrequest0108-0005 56 4/19/2024
0.16.17-pullrequest0108-0004 39 4/19/2024
0.16.17-pullrequest0108-0003 41 4/19/2024
0.16.16 66 4/16/2024
0.16.16-pullrequest0107-0003 58 4/16/2024
0.16.15 58 4/16/2024
0.16.15-pullrequest0106-0004 38 4/16/2024
0.16.15-pullrequest0106-0003 43 4/16/2024
0.16.15-pullrequest0106-0002 56 4/16/2024
0.16.14 126 4/16/2024
0.16.13 69 3/23/2024
0.16.13-pullrequest0103-0003 63 3/23/2024
0.16.12 60 3/23/2024
0.16.12-pullrequest0102-0006 52 3/22/2024
0.16.11 59 3/21/2024
0.16.11-pullrequest0101-0004 44 3/21/2024
0.16.11-pullrequest0101-0003 42 3/21/2024
0.16.11-pullrequest0101-0002 44 3/21/2024
0.16.9 66 3/16/2024
0.16.9-pullrequest0098-0008 49 3/16/2024
0.16.9-pullrequest0098-0007 50 3/16/2024
0.16.8 85 3/15/2024
0.16.8-pullrequest0097-0002 48 3/15/2024
0.16.7 62 3/10/2024
0.16.7-pullrequest0095-0002 58 3/10/2024
0.16.6 146 3/9/2024
0.16.6-pullrequest0094-0003 48 3/9/2024
0.16.6-pullrequest0094-0002 47 3/9/2024
0.16.2 69 3/5/2024
0.16.2-pullrequest0089-0009 49 3/5/2024
0.16.1 69 3/3/2024
0.16.1-pullrequest0088-0003 44 3/2/2024
0.16.1-pullrequest0088-0002 42 3/2/2024
0.16.0 111 2/28/2024
0.16.0-pullrequest0087-0010 43 2/28/2024
0.16.0-pullrequest0087-0009 45 2/28/2024
0.16.0-pullrequest0087-0007 52 2/28/2024
0.16.0-pullrequest0087-0006 48 2/28/2024
0.16.0-pullrequest0087-0005 40 2/28/2024
0.16.0-pullrequest0087-0004 48 2/28/2024
0.16.0-pullrequest0087-0003 45 2/28/2024
0.15.2 55 2/26/2024
0.15.2-pullrequest0086-0007 44 2/26/2024
0.15.2-pullrequest0086-0006 36 2/26/2024
0.15.1 60 2/23/2024
0.15.1-pullrequest0085-0006 44 2/23/2024
0.15.0 60 2/22/2024
0.15.0-pullrequest0084-0004 44 2/22/2024
0.15.0-pullrequest0084-0003 72 2/22/2024
0.14.1-pullrequest0084-0002 53 2/22/2024
0.14.0 72 2/21/2024
0.14.0-pullrequest0083-0011 61 2/8/2024
0.14.0-pullrequest0083-0010 43 2/8/2024
0.14.0-pullrequest0083-0009 44 2/8/2024
0.13.7 77 2/8/2024
0.13.7-pullrequest0082-0002 55 2/8/2024
0.13.6-pullrequest0081-0006 45 2/8/2024
0.13.5 65 2/7/2024
0.13.5-pullrequest0080-0002 47 2/7/2024
0.13.4 58 2/7/2024
0.13.4-pullrequest0079-0003 44 2/7/2024
0.13.1 70 2/1/2024
0.13.1-pullrequest0076-0003 53 2/1/2024
0.13.1-pullrequest0076-0002 55 2/1/2024
0.13.0 82 2/1/2024
0.13.0-pullrequest0075-0005 53 2/1/2024
0.13.0-pullrequest0075-0004 45 2/1/2024
0.12.2-pullrequest0075-0003 49 2/1/2024
0.12.1 56 2/1/2024
0.12.1-pullrequest0074-0002 51 2/1/2024
0.12.0 58 2/1/2024
0.12.0-pullrequest0073-0002 48 2/1/2024
0.11.0 59 1/31/2024
0.11.0-pullrequest0072-0011 52 1/31/2024
0.11.0-pullrequest0072-0010 49 1/31/2024
0.11.0-pullrequest0072-0008 45 1/31/2024
0.10.0 61 1/31/2024
0.10.0-pullrequest0070-0005 53 1/29/2024
0.10.0-pullrequest0070-0004 46 1/29/2024
0.9.1-pullrequest0069-0001 51 1/29/2024
0.9.0 60 1/29/2024
0.9.0-pullrequest0069-0002 46 1/29/2024
0.8.7-pullrequest0068-0001 52 1/29/2024
0.8.6 61 1/29/2024
0.8.4 78 1/19/2024
0.8.4-pullrequest0066-0009 49 1/19/2024
0.8.4-pullrequest0066-0008 43 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 47 1/19/2024
0.8.4-pullrequest0066-0003 41 1/19/2024
0.8.3 53 1/19/2024
0.8.3-pullrequest0065-0003 50 1/19/2024
0.8.3-pullrequest0065-0002 47 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 63 1/18/2024
0.7.15-pullrequest0062-0002 46 1/18/2024
0.7.12 74 1/16/2024
0.7.12-pullrequest0059-0006 55 1/16/2024
0.7.10 67 1/15/2024
0.7.10-pullrequest0059-0007 50 1/16/2024
0.7.10-pullrequest0058-0004 45 1/15/2024
0.7.10-pullrequest0057-0002 52 1/15/2024
0.7.9 66 1/15/2024
0.7.9-pullrequest0057-0003 46 1/15/2024
0.7.7 63 1/15/2024
0.7.7-pullrequest0056-0003 53 1/15/2024
0.7.4 66 1/15/2024
0.7.4-pullrequest0055-0012 54 1/15/2024
0.7.4-pullrequest0055-0011 53 1/15/2024
0.7.4-pullrequest0055-0010 59 1/15/2024
0.7.4-pullrequest0055-0009 53 1/15/2024
0.7.4-pullrequest0055-0008 52 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 59 1/15/2024
0.7.4-pullrequest0052-0002 45 1/15/2024
0.7.2 59 1/15/2024
0.7.2-pullrequest0051-0013 55 1/15/2024
0.7.2-pullrequest0050-0010 46 1/15/2024
0.7.1 73 1/13/2024
0.7.0 70 1/13/2024
0.7.0-pullrequest0046-0079 63 1/13/2024
0.6.12 86 1/3/2024
0.6.12-pullrequest0045-0018 51 1/13/2024
0.6.12-pullrequest0042-0010 55 1/12/2024
0.6.12-pullrequest0041-0007 53 1/12/2024
0.6.12-pullrequest0039-0002 58 1/3/2024
0.6.10 84 12/22/2023
0.6.10-pullrequest0038-0007 65 1/2/2024
0.6.10-pullrequest0038-0006 59 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 64 12/21/2023
0.6.6-pullrequest0035-0006 66 12/21/2023
0.6.6-pullrequest0035-0005 60 12/21/2023
0.6.3 72 12/18/2023
0.6.3-pullrequest0034-0018 64 12/18/2023
0.6.1 62 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 45 12/15/2023
0.5.3 76 12/11/2023
0.5.3-pullrequest0025-0049 68 12/14/2023
0.5.3-pullrequest0025-0047 67 12/14/2023
0.5.3-pullrequest0025-0043 59 12/13/2023
0.5.3-pullrequest0022-0038 58 12/13/2023
0.5.1 70 12/7/2023
0.5.0 80 12/6/2023
0.4.3 86 12/4/2023
0.4.2 75 12/4/2023
0.4.1 82 12/4/2023
0.3.10 94 11/22/2023
0.3.10-pullrequest0022-0008 63 11/27/2023
0.3.10-pullrequest0021-0005 67 11/22/2023
0.3.9 71 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 71 11/8/2023
0.3.3 68 11/8/2023
0.3.1 74 11/8/2023
0.3.1-pullrequest0018-0004 63 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 74 11/7/2023
0.2.1-pullrequest0013-0033 66 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 77 11/2/2023
0.2.1-pullrequest0009-0011 71 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 73 11/2/2023
0.2.1-pullrequest0005-0001 64 11/2/2023
0.1.0 97 10/27/2023
0.1.0-pullrequest0004-0024 73 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 71 11/1/2023
0.1.0-pullrequest0001-0010 72 10/30/2023