Ai-Sentry est une couche de façade d'IA générative enfichable basée sur Python + DAPR, conçue pour prendre en charge les fonctionnalités suivantes pour les grandes entreprises développant et exploitant des solutions d'IA générative :
Facturation croisée sur l'utilisation des jetons chez différents consommateurs openAI
Journalisation asynchrone des requêtes/réponses avec possibilité d'activer/désactiver la suppression des informations PII. Ce niveau de journalisation est utile pour de nombreuses choses telles que la conformité légale ainsi que pour l'évaluation et la relecture des demandes/réponses par rapport à des modèles plus récents pour vous aider à gérer les mises à niveau de modèles sans affecter vos utilisateurs existants.
Équilibrage de charge plus intelligent en prenant en compte les métriques de charge de l'en-tête de réponse d'Azure openAI et en regroupant plusieurs backends avec des capacités du même modèle.
Prise en charge des réponses en streaming et hors streaming (y compris la journalisation de celles-ci)
Extensibilité des adaptateurs personnalisés pour vous aider à gérer les dépréciations du SDK/API du côté client – afin que vous puissiez fournir une compatibilité ascendante si nécessaire.
AI-Sentry n'est pas conçu pour remplacer les solutions API Gateway existantes telles qu'Azure APIM. Il est plutôt conçu pour se situer entre API Gateway et les points de terminaison openAI, offrant ainsi un contrôle ultime pour vos solutions openAI.
Nous essayons d'effectuer un traitement lourd en dehors du pipeline d'appels HTTP directs pour minimiser la latence pour les consommateurs et nous nous appuyons sur les side-cars DAPR et les modèles Pub/Sub pour effectuer le travail de manière asynchrone.
Parce qu'AI-Sentry utilise DAPR ; les choix technologiques pour la persistance des journaux et les courtiers de messages sont échangeables via les composants natifs de DAPR. Notre exemple utilise REDIS et Event Hubs comme courtier de messages pour PUB/SUB et CosmosDB comme magasin de persistance des journaux.
Les variables d'environnement suivantes doivent exister. La manière dont vous les introduisez dépend de vous - c'est-à-dire les secrets Kubernetes, les cartes de configuration, etc...
Nom | Valeur | Composant |
---|---|---|
AI-SENTRY-ENDPOINT-CONFIG | Un exemple de valeur JSON se trouve ici. Ceci est utilisé pour mapper les points de terminaison/déploiements openai - de sorte que lorsque nous équilibrons la charge, nous frappons un groupe de mêmes modèles openAI du pool. Assurez-vous d'inclure /openai dans la configuration de l'URL de votre point de terminaison. Vous pouvez exploiter le script suivant pour vous aider à générer une chaîne d'échappement JSON de ce JSON. | Application Façade |
AI-SENTRY-LANGUE-CLÉ | votre clé API générale de Congnitive Services | Travailleur CosmosDB |
AI-SENTRY-LANGUAGE-ENDPOINT | analyse de texte de votre langue ou URL du point de terminaison du service général | Travailleur CosmosDB |
Quoi que vous présentiez à AI-Sentry avec, par exemple, Azure APIM, une autre technologie de passerelle API, vous devrez fournir certains en-têtes HTTP obligatoires.
NOM DE L'EN-TÊTE HTTP | VALEUR DE L'EN-TÊTE HTTP |
---|---|
ai-sentry-consommateur | il peut s'agir de n'importe quelle chaîne - elle est utilisée pour représenter un consommateur ou un produit qui utilise un backend ai génératif. Nous l'utilisons à des fins de journalisation |
niveau de journal ai-sentry | Cela bascule le niveau de journalisation pour le consommateur réel. Les valeurs acceptées sont : COMPLETE, PII_STRIPPING_ENABLED ou DISABLED |
ai-sentry-backend-pool | Fournissez le nom du pool à partir de la configuration AI-SENTRY-ENDPOINT-CONFIG. Par exemple, Pool1 |
adaptateurs ai-sentry | Fournissez la liste des noms d’adaptateurs que vous souhaitez exécuter avant d’envoyer la demande au point de terminaison openai. Exemple : ["SampleApiRequestTransformer","adapter2..."] |
Pour plus d'informations sur la configuration d'AI-Sentry dans votre environnement, veuillez suivre les sections détaillées suivantes.
Configuration de la base de données/table CosmosDB
Configuration d'AI-Sentry sur AKS
Schéma de journalisation CosmosDB
Schéma de journalisation récapitulative
Configuration de l'identité de la charge de travail - si vous souhaitez vous authentifier sur les backends openai via JWT au lieu des clés API
Heureusement, notre collègue Graeme Foster a publié une version dotnet avec des ensembles de fonctionnalités similaires. Veuillez aller le vérifier : https://github.com/microsoft/aicentral
Ce projet accueille les contributions et suggestions. La plupart des contributions nécessitent que vous acceptiez un contrat de licence de contributeur (CLA) déclarant que vous avez le droit de nous accorder, et que vous nous accordez effectivement, le droit d'utiliser votre contribution. Pour plus de détails, visitez https://cla.opensource.microsoft.com.
Lorsque vous soumettez une pull request, un robot CLA déterminera automatiquement si vous devez fournir un CLA et décorera le PR de manière appropriée (par exemple, vérification du statut, commentaire). Suivez simplement les instructions fournies par le bot. Vous n’aurez besoin de le faire qu’une seule fois pour tous les dépôts utilisant notre CLA.
Ce projet a adopté le code de conduite Microsoft Open Source. Pour plus d’informations, consultez la FAQ sur le code de conduite ou contactez [email protected] pour toute question ou commentaire supplémentaire.
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée des marques ou logos Microsoft est soumise et doit respecter les directives relatives aux marques et aux marques de Microsoft. L'utilisation des marques ou logos Microsoft dans les versions modifiées de ce projet ne doit pas prêter à confusion ni impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumise aux politiques de ces tiers.