跳转到内容

在不使用 LiteLLM 的情况下使用 CrewAI

CrewAI 支持两种连接 LLM 提供商的路径:

  1. 原生集成 - 直接连接 OpenAI、Anthropic、Google Gemini、Azure OpenAI 和 AWS Bedrock 的 SDK
  2. LiteLLM 回退 - 支持 100+ 额外提供商的转换层

本指南说明如何只使用 CrewAI 的原生提供商集成,从而移除对 LiteLLM 的任何依赖。

  • 更小的依赖面 - 更少的包意味着更少的供应链风险
  • 更好的性能 - 原生 SDK 直接与提供商 API 通信,省去转换层
  • 更容易调试 - 你的代码和提供商之间少了一层抽象
  • 更小的安装体积 - LiteLLM 会带来很多传递依赖

这些提供商使用各自的 SDK,且无需安装 LiteLLM:

OpenAI

GPT-4o、GPT-4o-mini、o1、o3-mini 等。

Terminal window
uv add "crewai[openai]"

Anthropic

Claude Sonnet、Claude Haiku 等。

Terminal window
uv add "crewai[anthropic]"

Google Gemini

Gemini 2.0 Flash、Gemini 2.0 Pro 等。

Terminal window
uv add "crewai[gemini]"

Azure OpenAI

托管在 Azure 上的 OpenAI 模型。

Terminal window
uv add "crewai[azure]"

AWS Bedrock

通过 AWS 使用 Claude、Llama、Titan 等。

Terminal window
uv add "crewai[bedrock]"

如果你的代码使用下面这样的模型前缀,就说明你走的是 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❌ 原生
Terminal window
# Using pip
pip show litellm
# Using uv
uv pip show litellm

如果命令返回了包信息,说明你的环境中已安装 LiteLLM。

查看 pyproject.toml 中是否包含 crewai[litellm]

# If you see this, you have LiteLLM as a dependency
dependencies = [
"crewai[litellm]>=0.100.0", # ← Uses LiteLLM
]
# Change to a native provider extra instead
dependencies = [
"crewai[openai]>=0.100.0", # ← Native, no LiteLLM
]

在代码中找到所有 LLM() 调用和模型字符串:

Terminal window
# Search your codebase for LLM model strings
grep -r "LLM(" --include="*.py" .
grep -r "llm=" --include="*.yaml" .
grep -r "llm:" --include="*.yaml" .
切换到 OpenAI
from crewai import LLM
# Before (LiteLLM):
# llm = LLM(model="groq/llama-3.1-70b")
# After (Native):
llm = LLM(model="openai/gpt-4o")
Terminal window
# Install
uv add "crewai[openai]"
# Set your API key
export OPENAI_API_KEY="sk-..."
切换到 Anthropic
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")
Terminal window
# Install
uv add "crewai[anthropic]"
# Set your API key
export ANTHROPIC_API_KEY="sk-ant-..."
切换到 Gemini
from crewai import LLM
# Before (LiteLLM):
# llm = LLM(model="mistral/mistral-large-latest")
# After (Native):
llm = LLM(model="gemini/gemini-2.0-flash")
Terminal window
# Install
uv add "crewai[gemini]"
# Set your API key
export GEMINI_API_KEY="..."
切换到 Azure OpenAI
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"
)
Terminal window
# Install
uv add "crewai[azure]"
切换到 AWS Bedrock
from crewai import LLM
# After (Native):
llm = LLM(
model="bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
aws_region_name="us-east-1"
)
Terminal window
# Install
uv add "crewai[bedrock]"
# Configure AWS credentials
export 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
)
# 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

一旦你迁移完所有模型引用:

Terminal window
# Remove litellm from your project
uv remove litellm
# Or if using pip
pip uninstall litellm
# Update your pyproject.toml: change crewai[litellm] to your provider extra
# e.g., crewai[openai], crewai[anthropic], crewai[gemini]

运行你的项目并确认一切正常:

Terminal window
# Run your crew
crewai run
# Or run your tests
uv run pytest

下面是从依赖 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 & affordable
llm = 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 quality
llm = 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,并为不同智能体使用不同提供商:

Terminal window
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_KEYANTHROPIC_API_KEYGEMINI_API_KEY 等都无需更改。