Skip to content
CrewAI 文档版本 跟随上游 源快照 f1e17160 更新于 2026-10-18

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

如何结合原生服务商集成来使用 CrewAI,并从项目中移除 LiteLLM 依赖。

概述

CrewAI 支持两种连接 LLM 服务商的路径:

  1. 原生集成 — 直接通过 SDK 连接 OpenAI、Anthropic、Google Gemini、Azure OpenAI 和 AWS Bedrock
  2. LiteLLM 回退 — 一个支持 100 多个额外服务商的转换层

本指南说明如何仅使用原生服务商集成来使用 CrewAI,从而移除对 LiteLLM 的任何依赖。

WARNING

由于一次安全/可靠性事件,litellm 包已在 PyPI 上被隔离。如果你依赖基于 LiteLLM 的服务商,应迁移到原生集成。CrewAI 的原生集成可在不依赖 LiteLLM 的情况下提供完整功能。

为什么要移除 LiteLLM?

  • 减少依赖面 — 更少的软件包意味着更少的潜在供应链风险
  • 更好的性能 — 原生 SDK 直接与服务商 API 通信,省去转换层
  • 更简单的调试 — 代码与服务商之间少了一层抽象
  • 更小的安装占用 — LiteLLM 会引入许多传递依赖

原生服务商(无需 LiteLLM)

这些服务商使用各自的 SDK,无需安装 LiteLLM 即可工作:

OpenAI

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

bash
uv add "crewai[openai]"

Anthropic

Claude Sonnet、Claude Haiku 等。

bash
uv add "crewai[anthropic]"

Google Gemini

Gemini 2.0 Flash、Gemini 2.0 Pro 等。

bash
uv add "crewai[gemini]"

Azure OpenAI

Azure 托管的 OpenAI 模型。

bash
uv add "crewai[azure]"

AWS Bedrock

通过 AWS 提供的 Claude、Llama、Titan 等。

bash
uv add "crewai[bedrock]"

INFO

如果你只使用原生服务商,你永远不需要安装 crewai[litellm]。基础的 crewai 包加上你选定的服务商扩展就是全部所需。

如何检查你是否正在使用 LiteLLM

检查你的模型字符串

如果你的代码使用如下模型前缀,则你正在通过 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 是否已安装

bash
# Using pip
pip show litellm

# Using uv
uv pip show litellm

如果命令返回软件包信息,则你的环境中已安装 LiteLLM。

检查你的依赖项

查看你的 pyproject.toml 中是否有 crewai[litellm]:

toml
# 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
]

迁移指南

步骤 1:确定你当前的服务商

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

bash
# Search your codebase for LLM model strings
grep -r "LLM(" --include="*.py" .
grep -r "llm=" --include="*.yaml" .
grep -r "llm:" --include="*.yaml" .

步骤 2:切换到原生服务商

python
from crewai import LLM

# Before (LiteLLM):
# llm = LLM(model="groq/llama-3.1-70b")

# After (Native):
llm = LLM(model="openai/gpt-4o")
bash
# Install
uv add "crewai[openai]"

# Set your API key
export OPENAI_API_KEY="sk-..."

步骤 3:在不使用 LiteLLM 的情况下保留 Ollama

如果你正在使用 Ollama 并希望继续使用,可以通过 Ollama 的 OpenAI 兼容 API 进行连接:

python
from crewai import LLM

# Before (LiteLLM):
# llm = LLM(model="ollama/llama3")

# After (OpenAI-compatible mode, no LiteLLM needed):
llm = LLM(
    model="llama3",
    custom_openai=True,
    base_url="http://localhost:11434/v1",
    api_key="ollama"  # Ollama doesn't require a real API key
)

TIP

许多本地推理服务器(Ollama、vLLM、LM Studio、llama.cpp)都提供 OpenAI 兼容 API。你可以使用 custom_openai=True 和自定义 base_url 以原生方式连接到其中任意一个,同时保留你的网关所期望的模型 ID。

步骤 4:更新你的 YAML 配置

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

在你迁移完所有模型引用后:

bash
# 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]

步骤 6:验证

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

bash
# Run your crew
crewai run

# Or run your tests
uv run pytest

自定义 OpenAI 兼容端点

许多服务商和本地服务器(Ollama、vLLM、LM Studio、llama.cpp、LiteLLM 代理以及托管网关)都提供 OpenAI 兼容 API。与其通过 LiteLLM 路由这些请求,你可以设置 custom_openai=True,使用 CrewAI 的原生 OpenAI 集成直接与它们通信。

对于任何提供 OpenAI 兼容端点的 LiteLLM 服务商,这是推荐的替代方案。

工作原理

  • custom_openai=True 会强制 CrewAI 使用原生 OpenAI SDK,无论模型名称是什么。

  • 模型 ID 会直接传递给端点,不会根据 OpenAI 的已知模型列表进行校验。这样你就可以使用网关所期望的任意模型 ID(例如,通过 OpenAI 兼容代理提供的 anthropic/claude-sonnet-4-6)。可选的、位于开头的 openai/ 路由前缀会被去除。

  • 基础 URL 是必填的。CrewAI 会按以下顺序解析它:

    1. base_url=...
    2. api_base=...
    3. OPENAI_BASE_URL 环境变量
    4. OPENAI_API_BASE 环境变量(旧版)

    如果以上都未设置,CrewAI 会抛出 ValueError,让配置错误快速失败,而不是静默访问 api.openai.com。

python
from crewai import LLM

llm = LLM(
    model="anthropic/claude-sonnet-4-6",  # passed through as-is
    custom_openai=True,
    base_url="https://your-gateway.example/v1",
    api_key="your-key",
)

连接到常见服务器

python
from crewai import LLM

llm = LLM(
    model="llama3.2:latest",
    custom_openai=True,
    base_url="http://localhost:11434/v1",
    api_key="ollama",  # Ollama ignores it, but the client requires a value
)

TIP

如果你将 openai/ 前缀与非 OpenAI 已知模型一起使用,并直接传入 base_url 或 api_base,CrewAI 会自动将其视为自定义 OpenAI 兼容端点。仅靠环境变量不会为未知模型启用自动路由;通过 OPENAI_BASE_URL 或 OPENAI_API_BASE 配置端点时,请设置 custom_openai=True。

快速参考:模型字符串映射

以下是从依赖 LiteLLM 的服务商迁移到原生服务商的常见路径:

python
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-3.7-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="llama3",
    custom_openai=True,
    base_url="http://localhost:11434/v1",
    api_key="ollama"
)

常见问题

移除 LiteLLM 会让我失去任何功能吗?

不会,如果你使用的是五个原生支持的服务商之一(OpenAI、Anthropic、Gemini、Azure、Bedrock)。这些原生集成支持所有 CrewAI 功能,包括流式传输、工具调用、结构化输出等。你只会失去对仅通过 LiteLLM 可用的服务商的访问(例如 Groq、Together AI、作为一等服务商的 Mistral)。

我可以同时使用多个原生服务商吗?

可以。安装多个扩展,并为不同的智能体使用不同的服务商:

bash
uv add "crewai[openai,anthropic,gemini]"
python
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 等无需更改。

如何在不使用 LiteLLM 的情况下连接到 Groq、Together AI 或其他 OpenAI 兼容服务商?

这些服务商大多提供 OpenAI 兼容 API。将 custom_openai=True 与其基础 URL 和 API 密钥一起使用——参见 自定义 OpenAI 兼容端点。例如,Groq:LLM(model="llama-3.1-70b-versatile", custom_openai=True, base_url="https://api.groq.com/openai/v1", api_key="...")。模型 ID 会原样传递,因此使用服务商期望的任何 ID。

相关资源

BytesRouter 是社区翻译站点,所有译文仅供参考,一切以官方英文原文为准。