Ai-Sentry é uma camada transparente de fachada de IA generativa baseada em python + DAPR, projetada para oferecer suporte aos seguintes recursos para grandes empresas que desenvolvem e operam soluções de IA generativa:
Estorno cruzado no uso de token entre diferentes consumidores openAI
Registro baseado em solicitação/resposta assíncrona com capacidade de alternar a remoção de informações PII. Esse nível de registro é útil para muitas coisas, como conformidade legal, bem como para avaliar e reproduzir solicitações/respostas em modelos mais recentes para ajudá-lo a lidar com atualizações de modelos sem afetar os usuários existentes.
Balanceamento de carga mais inteligente, levando em consideração as métricas de carga do cabeçalho de resposta do Azure openAI e o agrupamento de vários back-ends com recursos do mesmo modelo
Suporta respostas de streaming e não streaming (incluindo registro delas)
Extensibilidade de adaptadores personalizados para ajudá-lo a lidar com descontinuações de SDK/API do lado do cliente - para que você possa fornecer compatibilidade com versões anteriores, se necessário.
O AI-Sentry não foi projetado para substituir as soluções existentes do API Gateway, como o Azure APIM - em vez disso, foi projetado para ficar entre o API Gateway e os pontos de extremidade openAI - fornecendo controle máximo para suas soluções openAI.
Tentamos realizar processamento pesado fora do pipeline de chamadas HTTP diretas para minimizar a latência para os consumidores e contamos com side cars DAPR e padrões Pub/Sub para realizar o trabalho de forma assíncrona.
Porque o AI-Sentry usa DAPR; as opções de tecnologia para persistência de log e corretores de mensagens podem ser trocadas por meio dos componentes nativos do DAPR. Nosso exemplo usa REDIS e Event Hubs como corretor de mensagens para PUB/SUB e CosmosDB como armazenamento de persistência de log.
As seguintes variáveis de ambiente precisam existir. Como você os alimenta depende de você - ou seja, segredos do Kubernetes, mapas de configuração, etc.
Nome | Valor | Componente |
---|---|---|
AI-SENTRY-ENDPOINT-CONFIG | O valor JSON de exemplo está localizado aqui. Isso é usado para mapear endpoints/implantações openai - de modo que, quando estivermos balanceando a carga, atinjamos grupos dos mesmos modelos openAI do pool. Certifique-se de incluir /openai na configuração do URL do endpoint. Você pode aproveitar o script a seguir para ajudá-lo a gerar uma string de escape JSON deste JSON. | Aplicativo de fachada |
AI-SENTRY-LANGUAGE-KEY | sua chave de API geral dos Serviços Congnitivos | Trabalhador do CosmosDB |
AI-SENTRY-LANGUAGE-ENDPOINT | análise de texto do seu idioma ou URL do endpoint de serviço geral | Trabalhador do CosmosDB |
Independentemente do que você usar com o AI-Sentry, por exemplo, Azure APIM, alguma outra tecnologia de gateway de API - você precisará fornecer alguns cabeçalhos HTTP obrigatórios.
NOME DO CABEÇALHO HTTP | VALOR DO CABEÇALHO HTTP |
---|---|
ai-sentinela-consumidor | pode ser qualquer string - é usado para representar um consumidor ou um produto que usa back-end generativo de IA. Usamos isso para fins de registro |
nível de log de sentinela ai | Isso alterna o nível de registro para o consumidor real. Os valores aceitos são: COMPLETE, PII_STRIPPING_ENABLED ou DISABLED |
ai-sentry-backend-pool | Forneça o nome do pool da configuração AI-SENTRY-ENDPOINT-CONFIG. Por exemplo, Piscina1 |
adaptadores ai-sentry | Forneça uma lista de nomes de adaptadores que você deseja executar antes de enviar a solicitação para o endpoint openai. Exemplo: ["SampleApiRequestTransformer","adapter2..."] |
Para obter mais informações sobre como configurar o AI-Sentry em seu ambiente, siga as seções detalhadas a seguir.
Configurando banco de dados/tabela do CosmosDB
Configurando o AI-Sentry no AKS
Esquema de registro do CosmosDB
Esquema de registro resumido
Configurando a identidade da carga de trabalho - se você deseja autenticar back-ends openai via JWT em vez de chaves de API
Felizmente, nosso colega Graeme Foster publicou uma versão dotnet com conjuntos de recursos semelhantes. Acesse e confira: https://github.com/microsoft/aicentral
Este projeto aceita contribuições e sugestões. A maioria das contribuições exige que você concorde com um Contrato de Licença de Colaborador (CLA), declarando que você tem o direito de nos conceder, e realmente nos concede, os direitos de uso de sua contribuição. Para obter detalhes, visite https://cla.opensource.microsoft.com.
Quando você envia uma solicitação pull, um bot CLA determinará automaticamente se você precisa fornecer um CLA e decorará o PR adequadamente (por exemplo, verificação de status, comentário). Basta seguir as instruções fornecidas pelo bot. Você só precisará fazer isso uma vez em todos os repositórios usando nosso CLA.
Este projeto adotou o Código de Conduta de Código Aberto da Microsoft. Para obter mais informações, consulte as Perguntas frequentes sobre o Código de Conduta ou entre em contato com [email protected] com perguntas ou comentários adicionais.
Este projeto pode conter marcas registradas ou logotipos de projetos, produtos ou serviços. O uso autorizado de marcas registradas ou logotipos da Microsoft está sujeito e deve seguir as Diretrizes de Marcas Registradas e Marcas da Microsoft. O uso de marcas registradas ou logotipos da Microsoft em versões modificadas deste projeto não deve causar confusão nem implicar patrocínio da Microsoft. Qualquer uso de marcas registradas ou logotipos de terceiros está sujeito às políticas desses terceiros.