Azure APIM的azure-openai-emit-token-metric策略为何无法捕获GPT-4o流式响应令牌用量?
让Azure APIM的
azure-openai-emit-token-metric策略支持GPT-4o流式响应令牌监控 结论
可以让该策略对GPT-4o的流式响应生效,但需要调整策略配置并满足几个关键前提条件。
具体调整步骤
1. 移动策略到出站阶段
当前你将azure-openai-emit-token-metric配置在入站策略中,但流式响应的令牌用量信息是在响应阶段的最后一个chunk中返回的,因此需要将该策略移至出站策略区域:
<outbound> <when condition="@(context.Request.Headers.GetValueOrDefault("Ocp-Apim-Subscription-Key") == "SERVICE_A_KEY")"> <azure-openai-emit-token-metric namespace="AzureOpenAI"> <dimension name="service" value="SERVICE_A" /> </azure-openai-emit-token-metric> </when> </outbound>
2. 确保流式请求的参数配置
必须在API请求中同时启用两个参数,APIM策略才能捕获到令牌用量:
- 设置
stream=true开启流式响应 - 添加
stream_options={"include_usage": true},让OpenAI在最后一个流式chunk中返回usage字段
3. 验证依赖环境
- 确认Azure OpenAI资源部署的是GPT-4o的最新模型版本,旧版本可能不支持流式返回usage数据
- 确保APIM实例使用的是高级层(Premium)或开发者层(Developer),基础层不支持该令牌监控策略
验证方法
配置完成后发起流式调用,通过Azure Monitor查看AzureOpenAI命名空间下的令牌指标,确认流式调用的消耗数据是否被记录。如果指标仍未生成,可以启用APIM的请求/响应日志,检查最后一个流式chunk是否包含usage字段,以及APIM是否正确解析该字段。
内容的提问来源于stack exchange,提问作者silenthunter25
相关产品推荐
相关产品推荐

