Ai-Sentry是基於 Python + DAPR 的透明可插拔生成式 AI Facade 層,旨在為開發和營運生成式 AI 解決方案的大型企業支援以下功能:
不同 openAI 消費者之間的代幣使用交叉扣費
基於請求/回應非同步的日誌記錄,能夠切換 PII 資訊剝離。此級別的日誌記錄對於許多事情都很有用,例如法律合規性以及評估和重播針對新模型的請求/回應,以幫助您處理模型升級而不影響現有用戶。
透過考慮 Azure openAI 的回應標頭負載指標以及具有相同模型功能的多個後端池,實現更智慧的負載平衡
支援流式和非流式響應(包括這些響應的日誌記錄)
自訂適配器的可擴充性可協助您處理用戶端的 SDK/API 棄用問題 - 因此您可以在需要時提供向後相容性。
AI-Sentry 並非旨在取代現有的 API 閘道解決方案(例如 Azure APIM),而是旨在位於 API 閘道和 openAI 端點之間 - 為您的 openAI 解決方案提供最終控制。
我們嘗試在直接 HTTP 呼叫管道之外執行繁重的處理,以最大程度地減少消費者的延遲,並依靠 DAPR 側車和 Pub / Sub 模式非同步執行工作。
因為AI-Sentry使用DAPR;日誌持久性和訊息代理的技術選擇可透過 DAPR 的本機元件進行交換。我們的範例使用 REDIS 和事件中心作為 PUB/SUB 的訊息代理,並使用 CosmosDB 作為日誌持久性儲存。
需要存在以下環境變數。如何提供它們取決於您 - 即 Kubernetes 秘密、配置映射等...
姓名 | 價值 | 成分 |
---|---|---|
AI-SENTRY-端點-配置 | JSON 值範例位於此處。這用於映射 openai 端點/部署 - 因此,當我們進行負載平衡時,我們會從池中存取相同的 openAI 模型組。 確保在端點 URL 配置中包含 /openai。您可以利用以下腳本來幫助您產生此 JSON 的 JSON 轉義字串。 | 門面應用程式 |
人工智慧哨兵語言鍵 | 您的認知服務通用 API 金鑰 | CosmosDB 工作者 |
人工智慧哨兵語言端點 | 您的語言文字分析或通用服務端點 URL | CosmosDB 工作者 |
無論您使用 Azure APIM、其他一些 API 閘道技術等前置 AI-Sentry,您都需要提供一些強制性的 HTTP 標頭。
HTTP 標頭名稱 | HTTP 標頭值 |
---|---|
愛哨兵消費者 | 這可以是任何字串 - 它用於表示使用生成式人工智慧後端的消費者或產品。我們用它來記錄目的 |
ai-哨兵日誌級別 | 這會切換實際消費者的日誌記錄等級。接受的值為:COMPLETE、PII_STRIPPING_ENABLED 或 DISABLED |
ai-哨兵-後端池 | 提供 AI-SENTRY-ENDPOINT-CONFIG 配置中的池名稱。例如池1 |
ai-哨兵-適配器 | 在向 openai 端點發送請求之前,提供您想要執行的適配器名稱清單。範例: ["SampleApiRequestTransformer","adapter2..."] |
有關在您的環境中設置 AI-Sentry 的更多信息,請遵循以下詳細部分。
設定 CosmosDB 資料庫/表
在 AKS 上設定 AI-Sentry
CosmosDB 日誌架構
摘要日誌記錄架構
設定工作負載身分 - 如果您想透過 JWT 而不是 api 金鑰對 openai 後端進行身份驗證
值得慶幸的是,我們的同事 Graeme Foster 發布了具有類似功能集的 dotnet 版本。請去看看:https://github.com/microsoft/aicentral
該項目歡迎貢獻和建議。 大多數貢獻都要求您同意貢獻者授權協議 (CLA),聲明您有權並且實際上授予我們使用您的貢獻的權利。有關詳細信息,請訪問 https://cla.opensource.microsoft.com。
當您提交拉取請求時,CLA 機器人將自動確定您是否需要提供 CLA 並適當地修飾 PR(例如,狀態檢查、評論)。只需按照機器人提供的說明進行操作即可。您只需使用我們的 CLA 在所有儲存庫中執行一次此操作。
該專案採用了微軟開源行為準則。有關詳細信息,請參閱行為準則常見問題解答或聯繫 [email protected] 提出任何其他問題或意見。
該項目可能包含項目、產品或服務的商標或標誌。 Microsoft 商標或標誌的授權使用須遵守且必須遵循 Microsoft 的商標和品牌指南。在此項目的修改版本中使用 Microsoft 商標或標誌不得混淆或暗示 Microsoft 贊助。任何對第三方商標或標誌的使用均須遵守這些第三方的政策。