快速结论:该报错通常出现在通过 LiteLLM 转发 Azure OpenAI 的流式响应、并使用 Claude Code 走 /v1/messages 适配器时,Azure 返回了 choices 为空的 chunk,而代码直接索引 choices[0] 导致越界。优先确认 LiteLLM 版本并升级到包含 #35314 修复的版本。
适用环境:LiteLLM 1.95.0(报错版本);模型为 Azure 托管的 gpt-5-4-mini,经 LiteLLM 暴露后由 Claude Code 通过 LiteLLM endpoint 和 key 调用。评论中另报告 LiteLLM v1.102.0 + Azure AI Foundry(custom_llm_provider=azure_ai,模型 gpt-5.6-sol)在 /v1/responses 流式路径出现类似问题。Issue 未提供操作系统、Python、CUDA、显卡信息。
最快修复方案:升级到包含 #35314 修复的 LiteLLM 版本。该修复让 /v1/messages 适配器能够处理 choices: [] 的 Azure 流式 chunk,不再索引 choices[0],并已加入针对 metadata 与 usage-only chunk 的回归测试。
注意事项:该修复针对的是 Claude Code / /v1/messages 适配器路径。评论中报告的 /v1/responses 流式路径(streaming_iterator.py 约 902 行 delta = chunk.choices[0].delta)属于 Responses 转换层,Issue 中未确认已由同一修复覆盖,如仍复现需单独排查或跟进。
问题场景
用户将 Azure 上托管的 gpt-5-4-mini 通过 LiteLLM 暴露,使用虚拟 key 授权后,用 Claude Code 连接 LiteLLM endpoint。配置 Azure OpenAI 访问、设置 gpt 模型、授予虚拟 key、再通过 Claude Code 使用 LiteLLM endpoint 和 key 调用时触发崩溃。报错位置在 streaming_iterator.py:892,涉及流式响应中处理 finish_reason 的分支。
报错原文
IndexError: list index out of range
File: streaming_iterator.py, line 892
if chunk.choices[0].finish_reason is not None:
评论中补充的 Responses API 路径报错原文:
IndexError: list index out of range
File:
litellm/responses/litellm_completion_transformation/streaming_iterator.py
delta = chunk.choices[0].delta
File ".../streaming_iterator.py", line 902
delta = chunk.choices[0].delta
IndexError: list index out of range
原因分析
报错原因较明确:Azure 在流式返回中会发送 choices 为空数组(choices: [])的 chunk,而 LiteLLM 适配器在未判断空数组的情况下直接访问 choices[0],因此抛出 IndexError: list index out of range。用户已在 Issue 中定位到 finish_reason 判断处存在该模式。
官方回复确认 /v1/messages 适配器已修复该问题,即不再对空 choices 索引 choices[0]。评论中提到的 /v1/responses 报错具有相同模式,但发生在 Responses 流式转换层,属于“可能原因”相同的另一条代码路径,尚未在该 Issue 中确认被同一修复覆盖。
环境排查
- 确认 LiteLLM 版本:报错版本为 1.95.0;评论中另行报告 v1.102.0 的 Responses 路径问题。
- 确认调用的端点:Claude Code 走
/v1/messages,还是直接调用/v1/responses且stream=true。 - 确认 Azure 提供方配置:
custom_llm_provider是azure还是azure_ai。 - 确认模型:gpt-5-4-mini 或评论中的 gpt-5.6-sol。
- 确认是否存在 Azure 返回
choices: [](如 metadata-only 或 usage-only chunk)的日志。 - 检查
litellm/responses/litellm_completion_transformation/streaming_iterator.py与/v1/messages适配器相关文件在所用版本中是否仍直接索引choices[0]。 - Issue 未提供操作系统、Python、CUDA、显卡版本,无需据此排查。
解决步骤
- 确认当前 LiteLLM 版本。报错出现在 1.95.0,先记录实际版本号。
- 升级到包含 #35314 修复的 LiteLLM 版本,该修复使
/v1/messages适配器能处理choices: []的 Azure 流式 chunk,并附带 metadata 与 usage-only chunk 的回归测试。 - 保持 Azure OpenAI 配置、模型设置、虚拟 key 授权与 Claude Code 调用方式不变,重新通过 LiteLLM endpoint 用 Claude Code 发起流式请求。
- 如果你使用的是
/v1/responses且stream=true,即使升级后仍可能遇到 Responses 转换层的相同索引问题(评论中在 v1.102.0 复现)。此时可先改用/v1/chat/completions的流式路径(评论中该路径stream=true可正常返回)作为规避,再单独反馈 Responses 适配器问题。 - 若升级后仍复现,收集完整堆栈和 Azure 返回的空
choiceschunk 日志,在原 Issue 或新 Issue 中提供,便于定位是否属于未覆盖的路径。
验证方法
升级后,用 Claude Code 通过 LiteLLM endpoint 与虚拟 key 发起原本触发崩溃的调用,观察是否仍返回 IndexError: list index out of range。若流式响应能正常完成,且日志中不再出现对空 choices 的索引报错,即可确认该路径已修复。对于 /v1/responses 流式路径,需单独验证是否仍复现;Issue 中明确该修复的回归测试覆盖 /v1/messages 适配器的 metadata 与 usage-only chunk。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


