快速结论:该报错通常发生在 crewAI 1.15.31/1.15.32 中,使用未被原生 provider 支持的模型、需要进入 LiteLLM 回退路径,同时安装的 litellm 低于 1.97.0。此时 litellm 实际已安装,但版本检查中的导入失败被误判为“未安装”,优先排查 crewAI 与 litellm 的版本组合。
适用环境:Issue 中确认的环境为 Python 3.12、Ubuntu 25.10、Venv;crewAI 1.15.31 与 1.15.32 均可复现,litellm 1.95.0 与 1.96.0 触发,1.97.0 正常。CrewAI Tools 未安装,未提供 CUDA、显卡等信息。
最快修复方案:升级 crewAI 到包含 #8777 的版本(Issue 未给出具体版本号,需以发布记录为准);若暂不能升级 crewAI,可将 litellm 升级到 1.97.0 或更高版本。
注意事项:把 litellm 升到 1.97.0 以上只是规避该错误的临时办法,并未修复 crewAI 内部的导入逻辑。Issue 提到 1.95.0 之后的 litellm 需要 aiohttp 3.14.2 或更高版本,若项目对 aiohttp 有上限约束,升级 litellm 可能被依赖冲突阻止。修复后错误信息仍不会说明 litellm 导入失败的具体原因,这一点 Issue 中仅作为建议提出,未被实现。
问题场景
在 crewAI 1.15.31 或 1.15.32 中通过 LLM(...) 构造模型,并使用一个不属于原生 provider 列表的模型名(例如 openai/qwen-turbo),从而需要走 LiteLLM 回退路径。此时若已安装的 litellm 版本低于 1.97.0,就会抛出 ImportError,即使 litellm 确实已经安装。
报错原文
ImportError: Unable to initialize LLM with model 'openai/qwen-turbo'. The model did not match any supported native provider (openai, anthropic, claude, azure, azure_openai, google, gemini, bedrock, aws, openrouter, deepseek, ollama, ollama_chat, hosted_vllm, cerebras, dashscope, snowflake, deepinfra), and the LiteLLM fallback package is not installed.
原因分析
可能原因:自 crewAI 1.15.31 起(由 #8676 引入),_ensure_litellm()(位于 lib/crewai/src/crewai/llm.py)会在运行时从 litellm.types.utils 导入 ChatCompletionDeltaCustomToolCall。该类在 litellm 1.97.0 中才加入,旧版本导入时会抛出 ImportError,而 _ensure_litellm() 把这一导入失败当作 litellm 缺失来处理,于是给出误导性的“未安装”提示。
另一个线索是:该名称在 _ahandle_streaming_response 中只用于局部变量注解,Python 在运行时并不会求值,因此这个运行时导入本身并不需要。
环境排查
- 确认 crewAI 版本:1.15.30 正常,1.15.31/1.15.32 在旧 litellm 下报错。
- 确认 litellm 版本:1.95.0、1.96.0 触发;1.97.0 正常。
- 确认 Python 版本(Issue 为 3.12)以及是否处于独立 Venv 中。
- 确认模型名是否会被原生 provider 匹配;只有需要 LiteLLM 回退路径时才会进入
_ensure_litellm()。 - 若需要升级 litellm,检查项目是否对 aiohttp 有低于 3.14.2 的版本约束。
解决步骤
- 先记录当前 crewAI 与 litellm 版本,对照上表判断是否落在 1.15.31/1.15.32 与 litellm < 1.97.0 的受影响的组合内。
- 首选方案:升级 crewAI 到已包含 #8777 修复的版本(Issue 关闭说明为 “Fixed by #8777”,未给出具体版本号,请以发布记录确认)。
- 若暂时无法升级 crewAI,可优先尝试把 litellm 升级到 1.97.0 或更高版本,以绕过缺失类的导入失败。升级前确认 aiohttp 等依赖约束不会阻止该升级。
- 如依赖约束导致不能升级 litellm 且不能升级 crewAI,则暂无 Issue 中验证过的其他修复方式,可等待包含 #8777 的 crewAI 版本。
验证方法
在离线条件下运行 Issue 中的复现脚本(设置 LITELLM_LOCAL_MODEL_COST_MAP=True,无需网络请求):
from crewai import LLM
llm = LLM(model="openai/qwen-turbo")
print(type(llm).__name__, "is_litellm =", llm.is_litellm)
若不再抛出 ImportError,并输出 LLM is_litellm = True,说明 LiteLLM 回退已正常加载,问题解决。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。
![[Bug]: MinerU 3.x /file_parse upload ignores the pipeline context and stays open after the run is cancelled](https://www.chat-gpts.plus/wp-content/uploads/2026/10/21572-82f3bc14-768x403.jpg)
![[Bug]: MinerU polling ignores cancellation and reports the wait timeout as a missing result](https://www.chat-gpts.plus/wp-content/uploads/2026/10/21570-666056f1-768x403.jpg)
![2024/01/10 19:17:53 [W] [service.go:132] login to server failed: dial tcp 44.237.78.176:7000: connect: connection refused](https://www.chat-gpts.plus/wp-content/uploads/2026/10/6988-22b6a761-768x403.jpg)