Ai-Sentry ist eine transparente, auf Python + DAPR basierende, steckbare generative KI-Fassadenschicht, die darauf ausgelegt ist, die folgenden Funktionen für große Unternehmen zu unterstützen, die generative KI-Lösungen entwickeln und betreiben:
Gegenseitige Abrechnung der Token-Nutzung durch verschiedene openAI-Verbraucher
Asynchrone Anforderungs-/Antwortprotokollierung mit der Möglichkeit, die PII-Entfernung von Informationen umzuschalten. Diese Protokollierungsebene ist für viele Dinge nützlich, beispielsweise für die Einhaltung gesetzlicher Vorschriften sowie für die Bewertung und Wiedergabe von Anfragen/Antworten bei neueren Modellen, um Sie bei der Bewältigung von Modellaktualisierungen zu unterstützen, ohne dass sich dies auf Ihre bestehenden Benutzer auswirkt.
Intelligenterer Lastausgleich durch Berücksichtigung der Antwortheader-Lastmetriken von Azure openAI und Pooling mehrerer Backends mit denselben Modellfunktionen
Unterstützung von Streaming- und Nicht-Streaming-Antworten (einschließlich deren Protokollierung)
Erweiterbarkeit benutzerdefinierter Adapter, um Sie beim Umgang mit SDK-/API-Veraltungen auf Client-Seite zu unterstützen – sodass Sie bei Bedarf Abwärtskompatibilität gewährleisten können.
AI-Sentry ist nicht dafür konzipiert, bestehende API-Gateway-Lösungen wie Azure APIM zu ersetzen, sondern vielmehr zwischen API Gateway und den openAI-Endpunkten zu sitzen und so die ultimative Kontrolle für Ihre openAI-Lösungen zu bieten.
Wir versuchen, eine umfangreiche Verarbeitung außerhalb der Pipeline für direkte HTTP-Aufrufe durchzuführen, um die Latenz für die Verbraucher zu minimieren, und verlassen uns auf DAPR-Side-Cars und Pub/Sub-Muster, um die Arbeit asynchron auszuführen.
Weil AI-Sentry DAPR verwendet; Die Technologieoptionen für Protokollpersistenz und Nachrichtenbroker können über die nativen Komponenten von DAPR ausgetauscht werden. In unserem Beispiel werden REDIS und Event Hubs als Nachrichtenbroker für PUB/SUB und CosmosDB als Protokollpersistenzspeicher verwendet.
Die folgenden Umgebungsvariablen müssen vorhanden sein. Wie Sie diese einspeisen, bleibt Ihnen überlassen – z. B. Kubernetes-Geheimnisse, Konfigurationskarten usw.
Name | Wert | Komponente |
---|---|---|
AI-SENTRY-ENDPOINT-CONFIG | Ein Beispiel für einen JSON-Wert finden Sie hier. Dies wird verwendet, um OpenAI-Endpunkte/-Bereitstellungen abzubilden, sodass wir beim Lastausgleich auf eine Gruppe derselben OpenAI-Modelle aus dem Pool zugreifen. Stellen Sie sicher, dass /openai in Ihrer Endpunkt-URL-Konfiguration enthalten ist. Sie können das folgende Skript nutzen, um die JSON-Escape-Zeichenfolge dieses JSON zu generieren. | Fassaden-App |
AI-SENTRY-SPRACHE-SCHLÜSSEL | Ihr allgemeiner API-Schlüssel für Congnitive Services | CosmosDB-Worker |
AI-SENTRY-LANGUAGE-ENDPOINT | Ihre Sprachtextanalyse oder allgemeine Service-Endpunkt-URL | CosmosDB-Worker |
Was auch immer Sie AI-Sentry mit z. B. Azure APIM oder einer anderen API-Gateway-Technologie bereitstellen – Sie müssen einige obligatorische HTTP-Header bereitstellen.
HTTP-HEADER-NAME | HTTP-HEADER-WERT |
---|---|
ai-sentry-consumer | Dies kann eine beliebige Zeichenfolge sein – sie wird verwendet, um einen Verbraucher oder ein Produkt darzustellen, das ein generatives KI-Backend verwendet. Wir nutzen dies zu Protokollierungszwecken |
ai-sentry-log-level | Dadurch wird die Protokollierungsstufe für den tatsächlichen Verbraucher umgeschaltet. Akzeptierte Werte sind: COMPLETE, PII_STRIPPING_ENABLED oder DISABLED |
ai-sentry-backend-pool | Geben Sie den Namen des Pools aus der AI-SENTRY-ENDPOINT-CONFIG-Konfiguration an. ZB Pool1 |
AI-Sentry-Adapter | Stellen Sie eine Liste der Adapternamen bereit, die Sie durchlaufen möchten, bevor Sie die Anfrage an den OpenAI-Endpunkt senden. Beispiel: ["SampleApiRequestTransformer","adapter2..."] |
Weitere Informationen zum Einrichten von AI-Sentry in Ihrer Umgebung finden Sie in den folgenden detaillierten Abschnitten.
Einrichten der CosmosDB-Datenbanken/Tabelle
AI-Sentry auf AKS einrichten
CosmosDB-Protokollierungsschema
Zusammenfassungsprotokollierungsschema
Einrichten der Workload-Identität – wenn Sie sich bei OpenAI-Backends über JWT statt über API-Schlüssel authentifizieren möchten
Zum Glück hat unser Kollege Graeme Foster eine Dotnet-Version mit ähnlichen Funktionssätzen veröffentlicht. Bitte schauen Sie es sich an: https://github.com/microsoft/aicentral
Dieses Projekt freut sich über Beiträge und Vorschläge. Für die meisten Beiträge müssen Sie einem Contributor License Agreement (CLA) zustimmen, in dem Sie erklären, dass Sie das Recht haben, uns die Rechte zur Nutzung Ihres Beitrags zu gewähren, und dies auch tatsächlich tun. Weitere Informationen finden Sie unter https://cla.opensource.microsoft.com.
Wenn Sie eine Pull-Anfrage einreichen, ermittelt ein CLA-Bot automatisch, ob Sie eine CLA bereitstellen müssen, und schmückt die PR entsprechend (z. B. Statusprüfung, Kommentar). Folgen Sie einfach den Anweisungen des Bots. Sie müssen dies nur einmal für alle Repos tun, die unsere CLA verwenden.
Dieses Projekt hat den Microsoft Open Source Verhaltenskodex übernommen. Weitere Informationen finden Sie in den FAQ zum Verhaltenskodex oder wenden Sie sich bei weiteren Fragen oder Kommentaren an [email protected].
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Nutzung von Microsoft-Marken oder -Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss diesen entsprechen. Die Verwendung von Microsoft-Marken oder -Logos in geänderten Versionen dieses Projekts darf keine Verwirrung stiften oder eine Sponsorschaft durch Microsoft implizieren. Jegliche Verwendung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Drittanbieter.