在不使用 LiteLLM 的情况下使用 CrewAI
CrewAI 支持两种连接 LLM 提供商的路径:
- 原生集成 - 直接连接 OpenAI、Anthropic、Google Gemini、Azure OpenAI 和 AWS Bedrock 的 SDK
- LiteLLM 回退 - 支持 100+ 额外提供商的转换层
本指南说明如何只使用 CrewAI 的原生提供商集成,从而移除对 LiteLLM 的任何依赖。
为什么要移除 LiteLLM?
Section titled “为什么要移除 LiteLLM?”- 更小的依赖面 - 更少的包意味着更少的供应链风险
- 更好的性能 - 原生 SDK 直接与提供商 API 通信,省去转换层
- 更容易调试 - 你的代码和提供商之间少了一层抽象
- 更小的安装体积 - LiteLLM 会带来很多传递依赖
原生提供商(无需 LiteLLM)
Section titled “原生提供商(无需 LiteLLM)”这些提供商使用各自的 SDK,且无需安装 LiteLLM:
OpenAI
GPT-4o、GPT-4o-mini、o1、o3-mini 等。
uv add "crewai[openai]"Anthropic
Claude Sonnet、Claude Haiku 等。
uv add "crewai[anthropic]"Google Gemini
Gemini 2.0 Flash、Gemini 2.0 Pro 等。
uv add "crewai[gemini]"Azure OpenAI
托管在 Azure 上的 OpenAI 模型。
uv add "crewai[azure]"AWS Bedrock
通过 AWS 使用 Claude、Llama、Titan 等。
uv add "crewai[bedrock]"如何检查你是否在使用 LiteLLM
Section titled “如何检查你是否在使用 LiteLLM”检查模型字符串
Section titled “检查模型字符串”如果你的代码使用下面这样的模型前缀,就说明你走的是 LiteLLM:
| 前缀 | 提供商 | 使用 LiteLLM? |
|---|---|---|
ollama/ | Ollama | ✅ 是 |
groq/ | Groq | ✅ 是 |
together_ai/ | Together AI | ✅ 是 |
mistral/ | Mistral | ✅ 是 |
cohere/ | Cohere | ✅ 是 |
huggingface/ | Hugging Face | ✅ 是 |
openai/ | OpenAI | ❌ 原生 |
anthropic/ | Anthropic | ❌ 原生 |
gemini/ | Google Gemini | ❌ 原生 |
azure/ | Azure OpenAI | ❌ 原生 |
bedrock/ | AWS Bedrock | ❌ 原生 |
检查 LiteLLM 是否已安装
Section titled “检查 LiteLLM 是否已安装”# Using pippip show litellm
# Using uvuv pip show litellm如果命令返回了包信息,说明你的环境中已安装 LiteLLM。
查看 pyproject.toml 中是否包含 crewai[litellm]:
# If you see this, you have LiteLLM as a dependencydependencies = [ "crewai[litellm]>=0.100.0", # ← Uses LiteLLM]
# Change to a native provider extra insteaddependencies = [ "crewai[openai]>=0.100.0", # ← Native, no LiteLLM]第 1 步:识别当前提供商
Section titled “第 1 步:识别当前提供商”在代码中找到所有 LLM() 调用和模型字符串:
# Search your codebase for LLM model stringsgrep -r "LLM(" --include="*.py" .grep -r "llm=" --include="*.yaml" .grep -r "llm:" --include="*.yaml" .第 2 步:切换到原生提供商
Section titled “第 2 步:切换到原生提供商”from crewai import LLM
# Before (LiteLLM):# llm = LLM(model="groq/llama-3.1-70b")
# After (Native):llm = LLM(model="openai/gpt-4o")# Installuv add "crewai[openai]"
# Set your API keyexport OPENAI_API_KEY="sk-..."from crewai import LLM
# Before (LiteLLM):# llm = LLM(model="together_ai/meta-llama/Meta-Llama-3.1-70B")
# After (Native):llm = LLM(model="anthropic/claude-sonnet-4-20250514")# Installuv add "crewai[anthropic]"
# Set your API keyexport ANTHROPIC_API_KEY="sk-ant-..."from crewai import LLM
# Before (LiteLLM):# llm = LLM(model="mistral/mistral-large-latest")
# After (Native):llm = LLM(model="gemini/gemini-2.0-flash")# Installuv add "crewai[gemini]"
# Set your API keyexport GEMINI_API_KEY="..."from crewai import LLM
# After (Native):llm = LLM( model="azure/your-deployment-name", api_key="your-azure-api-key", base_url="https://your-resource.openai.azure.com", api_version="2024-06-01")# Installuv add "crewai[azure]"from crewai import LLM
# After (Native):llm = LLM( model="bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0", aws_region_name="us-east-1")# Installuv add "crewai[bedrock]"
# Configure AWS credentialsexport AWS_ACCESS_KEY_ID="..."export AWS_SECRET_ACCESS_KEY="..."export AWS_DEFAULT_REGION="us-east-1"第 3 步:在不使用 LiteLLM 的情况下保留 Ollama
Section titled “第 3 步:在不使用 LiteLLM 的情况下保留 Ollama”如果你在使用 Ollama,并且想继续使用它,可以通过 Ollama 的 OpenAI 兼容 API 连接:
from crewai import LLM
# Before (LiteLLM):# llm = LLM(model="ollama/llama3")
# After (OpenAI-compatible mode, no LiteLLM needed):llm = LLM( model="openai/llama3", base_url="http://localhost:11434/v1", api_key="ollama" # Ollama doesn't require a real API key)第 4 步:更新 YAML 配置
Section titled “第 4 步:更新 YAML 配置”# Before (LiteLLM providers):researcher: role: Research Specialist goal: Conduct research backstory: A dedicated researcher llm: groq/llama-3.1-70b # ← LiteLLM
# After (Native provider):researcher: role: Research Specialist goal: Conduct research backstory: A dedicated researcher llm: openai/gpt-4o # ← Native第 5 步:移除 LiteLLM
Section titled “第 5 步:移除 LiteLLM”一旦你迁移完所有模型引用:
# Remove litellm from your projectuv remove litellm
# Or if using pippip uninstall litellm
# Update your pyproject.toml: change crewai[litellm] to your provider extra# e.g., crewai[openai], crewai[anthropic], crewai[gemini]第 6 步:验证
Section titled “第 6 步:验证”运行你的项目并确认一切正常:
# Run your crewcrewai run
# Or run your testsuv run pytest快速参考:模型字符串映射
Section titled “快速参考:模型字符串映射”下面是从依赖 LiteLLM 的提供商迁移到原生替代方案的常见路径:
from crewai import LLM
# ─── LiteLLM providers → Native alternatives ────────────────────
# Groq → OpenAI or Anthropic# llm = LLM(model="groq/llama-3.1-70b")llm = LLM(model="openai/gpt-4o-mini") # Fast & affordablellm = LLM(model="anthropic/claude-haiku-3-5") # Fast & affordable
# Together AI → OpenAI or Gemini# llm = LLM(model="together_ai/meta-llama/Meta-Llama-3.1-70B")llm = LLM(model="openai/gpt-4o") # High qualityllm = LLM(model="gemini/gemini-2.0-flash") # Fast & capable
# Mistral → Anthropic or OpenAI# llm = LLM(model="mistral/mistral-large-latest")llm = LLM(model="anthropic/claude-sonnet-4-20250514") # High quality
# Ollama → OpenAI-compatible (keep using local models)# llm = LLM(model="ollama/llama3")llm = LLM( model="openai/llama3", base_url="http://localhost:11434/v1", api_key="ollama")移除 LiteLLM 后会丢失功能吗?
不会,如果你使用的是五种原生支持的提供商之一(OpenAI、Anthropic、Gemini、Azure、Bedrock)。这些原生集成支持 CrewAI 的全部功能,包括流式输出、工具调用、结构化输出等。你只会失去那些只能通过 LiteLLM 使用的提供商(例如 Groq、Together AI、Mistral 作为一等公民提供商)。
我能同时使用多个原生提供商吗?
可以。安装多个 extra,并为不同智能体使用不同提供商:
uv add "crewai[openai,anthropic,gemini]"researcher = Agent(llm="openai/gpt-4o", ...)writer = Agent(llm="anthropic/claude-sonnet-4-20250514", ...)LiteLLM 现在还安全吗?
不论隔离状态如何,减少依赖面都是良好的安全实践。如果你只需要 CrewAI 原生支持的提供商,就没有理由继续保留 LiteLLM。
像 OPENAI_API_KEY 这样的环境变量怎么办?
原生提供商使用的环境变量与你已经熟悉的变量相同。OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY 等都无需更改。
- LLM Connections — CrewAI 连接任意 LLM 的完整指南
- LLM Concepts — 理解 CrewAI 中的 LLM
- LLM Selection Guide — 为你的用例选择合适模型