category
此解决方案为Azure OpenAI服务API的企业部署提供了全面的日志记录和监控以及增强的安全性。该解决方案提供了用于跟踪API使用情况和性能的高级日志记录功能,并提供了强大的安全措施,以帮助保护敏感数据并防止恶意活动。
架构
显示为Azure OpenAI提供监控和日志记录的架构的图。
下载此体系结构的Visio文件。
工作流
客户端应用程序访问Azure OpenAI端点以执行文本生成(完成)和模型训练(微调)。- Azure应用程序网关为Azure OpenAI模型提供单一入口点,并为API提供负载平衡。
笔记
不支持有状态操作的负载平衡,如模型微调、部署和微调模型的推理。
- Azure API管理实现了对Azure OpenAI模型的安全控制、审核和监控。
- 在API管理中,增强的安全访问是通过具有基于订阅的访问权限的Microsoft Entra组授予的。
- 已通过Azure Monitor请求日志记录为与模型的所有交互启用审核。
- 监控提供了详细的Azure OpenAI模型使用关键性能指标(KPI)和指标,包括用于使用跟踪的提示信息和令牌统计信息。
- API管理通过Azure专用链接连接到所有Azure资源。此配置为通过专用端点的所有流量提供增强的安全性,并包含专用网络中的流量。
- 多个Azure OpenAI实例能够扩展API的使用,以确保服务的高可用性和灾难恢复。
组件
- 应用程序网关。应用程序负载均衡器,有助于确保Azure OpenAI API的所有用户获得最快的响应和最高的模型完成吞吐量。
- API管理。用于访问后端Azure OpenAI端点的API管理平台。提供Azure OpenAI中本机不可用的监视和日志记录。
- Azure虚拟网络。云中的专用网络基础设施。提供网络隔离,以便将模型的所有网络流量私下路由到Azure OpenAI。
- Azure OpenAI。托管模型并提供生成模型完成输出的服务。
- Monitor。应用程序的端到端可观察性。通过Kusto查询语言提供对应用程序日志的访问。还支持仪表板报告以及监控和警报功能。
- Azure密钥保管库。增强了应用程序使用的密钥和机密的安全存储。
- Azure存储。云中的应用程序存储。为Azure OpenAI提供对模型训练工件的可访问性。
- Microsoft Entra ID。增强的安全身份管理器。允许用户对应用程序和支持应用程序的平台服务进行身份验证和授权。还提供了组策略,以确保最小权限原则适用于所有用户。
选择
Azure OpenAI提供本机日志记录和监控。您可以使用此本机功能来跟踪服务的遥测,但默认的认知服务日志记录不会跟踪或记录服务的输入和输出,如提示、令牌和模型。这些指标对于法规遵从性和确保服务按预期运行尤为重要。此外,通过跟踪与部署到Azure OpenAI的语言模型的交互,您可以分析您的组织如何使用该服务,以确定成本和使用模式,这有助于为扩展和资源分配决策提供信息。
下表提供了默认Azure OpenAI日志记录提供的指标与此解决方案提供的指标的比较。
Metric | Default Azure OpenAI logging | This solution |
---|---|---|
Request count | x | x |
Data in (size) / data out (size) | x | x |
Latency | x | x |
Token transactions (total) | x | x |
Caller IP address | x (last octet masked) | x |
Model utilization | x | |
Token utilization (input/output) | x | x |
Input prompt detail | x (limited to 8,192 response characters) | |
Output completion detail | x (limited to 8,192 response characters) | |
Deployment operations | x | x |
Embedding operations | x | x (limited to 8,192 response characters) |
场景详细信息
使用生成人工智能模型的大型企业需要对这些模型的使用进行审计和记录,以确保负责任的使用和公司合规性。该解决方案为与人工智能模型的所有交互提供企业级日志记录和监控,以减少对模型的有害使用,并有助于确保满足安全和合规标准。该解决方案与Azure OpenAI的现有API集成,只需少量修改即可利用现有代码库。管理员还可以监视服务使用情况以进行报告。
该解决方案提供了以下优点:
- Azure OpenAI模型执行的全面日志记录,跟踪到源IP地址。日志信息包括用户提交给模型的文本和从模型返回的文本。此日志记录有助于确保在服务的批准用例中负责任地使用模型。
- 模型API的高可用性确保即使流量超过单个Azure OpenAI服务的限制,也能满足用户请求。
- 通过Microsoft Entra ID管理基于角色的访问,以确保应用最小权限原则。
使用情况监视的示例查询
ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend modelkey = substring(parse_json(BackendResponseBody)['model'], 0, indexof(parse_json(BackendResponseBody)['model'], '-', 0, -1, 2))
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend completiontokens = parse_json(parse_json(BackendResponseBody)['usage'])['completion_tokens']
| extend totaltokens = parse_json(parse_json(BackendResponseBody)['usage'])['total_tokens']
| extend ip = CallerIpAddress
| summarize
sum(todecimal(prompttokens)),
sum(todecimal(completiontokens)),
sum(todecimal(totaltokens)),
avg(todecimal(totaltokens))
by ip, model
输出
提示使用情况监视的示例查询
ApiManagementGatewayLogs
| where OperationId == 'completions_create'
| extend model = tostring(parse_json(BackendResponseBody)['model'])
| extend prompttokens = parse_json(parse_json(BackendResponseBody)['usage'])['prompt_tokens']
| extend prompttext = substring(parse_json(parse_json(BackendResponseBody)['choices'])[0], 0, 100)
输出
显示提示使用情况监视输出的屏幕截图。
潜在用例
- 为内部企业用户部署Azure OpenAI以提高生产力
- Azure OpenAI用于内部应用程序的高可用性
- 在受监管的行业中增强Azure OpenAI的安全使用
注意事项
这些注意事项实现了Azure架构良好的框架的支柱,这是一套可用于提高工作负载质量的指导原则。有关详细信息,请参阅Microsoft Azure架构良好的框架。
可靠性
可靠性可确保您的应用程序能够满足您对客户的承诺。有关更多信息,请参见可靠性支柱概述。
此场景确保了语言模型对企业用户的高可用性。Azure应用程序网关提供了一种有效的第7层应用程序交付机制,以确保对应用程序的快速一致访问。您可以使用API管理来配置、管理和监视对模型的访问。存储、密钥保管库和虚拟网络等平台服务固有的高可用性确保了应用程序的高可靠性。最后,Azure OpenAI的多个实例确保了在应用程序级故障时的服务弹性。这些体系结构组件可以帮助您确保企业级应用程序的可靠性。
安全
安全性提供了防止蓄意攻击和滥用您的宝贵数据和系统的保证。有关更多信息,请参阅安全支柱概述。
通过实施云服务的应用程序级和网络级隔离的最佳实践,此场景可以降低数据泄露和数据泄露的风险。所有包含输入到模型的潜在敏感数据的网络流量都被隔离在专用网络中。这些流量不会穿过公共互联网路由。您可以使用Azure ExpressRoute进一步隔离到企业内部网的网络流量,并帮助确保端到端的网络安全。
成本优化
成本优化是为了减少不必要的开支和提高运营效率。有关更多信息,请参阅成本优化支柱概述。
为了帮助您探索运行此场景的成本,我们在Azure定价计算器中预配置了所有服务。要了解定价将如何根据您的用例进行更改,请更改适当的变量以匹配您的预期流量。
以下三个样本成本概况提供了基于流量的估计。(估计值假设一个文档包含大约1000个令牌。)
- 小型:用于每月处理10000个文档。
- 中等:用于每月处理100000个文档。
- 大型:每月处理1000万份文档。
贡献者
本文由Microsoft维护。它最初是由以下贡献者撰写的。
主要作者:
Ashish Chauhan |云解决方案架构师-数据/AI
Jake Wang |云解决方案架构师——人工智能/机器学习
其他贡献者:
Mick Alberts |技术作家
要查看非公开的领英个人资料,请登录领英。
Next steps
- Azure OpenAI request form
- Best practices for prompt engineering with OpenAI API
- Azure OpenAI: Documentation, quickstarts, API reference
- Azure-Samples/openai-python-enterprise-logging (GitHub)
- Configure Azure Cognitive Services virtual networks
Related resources
- Protect APIs with Azure Application Gateway and Azure API Management
- Query-based document summarization
- AI architecture design
- 登录 发表评论
- 85 次浏览
Tags
最新内容
- 10 hours ago
- 12 hours ago
- 12 hours 59 minutes ago
- 3 days 3 hours ago
- 3 days 11 hours ago
- 3 days 11 hours ago
- 3 days 12 hours ago
- 3 days 12 hours ago
- 1 week ago
- 1 week ago