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 赞助。对第三方商标或徽标的任何使用均须遵守这些第三方的政策。