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

LLMs

在你的 CrewAI 项目中配置和使用大型语言模型(LLMs)的全面指南

概述

CrewAI 通过各服务商的原生 SDK 与多个 LLM 服务商集成,让你可以灵活地为特定用例选择合适的模型。本指南将帮助你了解如何在 CrewAI 项目中配置和使用不同的 LLM 服务商。

什么是 LLM?

大语言模型(LLM)是 CrewAI 智能体背后的核心智能。它们使智能体能够理解上下文、做出决策并生成类似人类的回复。以下是你需要了解的内容:

LLM Basics

大语言模型是在海量文本数据上训练出来的 AI 系统。它们为你的 CrewAI 智能体提供智能,使其能够理解并生成类似人类的文本。

Context Window

上下文窗口决定了一个 LLM 一次能处理多少文本。更大的窗口(例如 128K token)可以提供更多上下文,但可能成本更高、速度更慢。

Temperature

temperature 是部分模型支持的采样控制参数。较低的值 通常使采样更聚焦,而较高的值会增加 随机性。一些较新的推理模型会忽略、弃用或拒绝该 参数,因此在设置前请查阅所选模型的文档。

Provider Selection

每个 LLM 服务商(例如 OpenAI、Anthropic、Google)提供的模型各不相同,在能力、定价和功能上有所差异。请根据你对准确性、速度和成本的需求进行选择。

设置你的 LLM

在 CrewAI 代码中有多个位置可以指定要使用的模型。指定模型后,你还需要为所使用的每个模型服务商提供配置(例如 API 密钥)。请参阅服务商配置示例一节,找到你所使用服务商的说明。

最简单的入门方式。直接在环境中设置模型,可通过 .env 文件或应用代码设置。如果你使用 crewai create 引导创建项目,它已经设置好了。

bash
MODEL=provider/model-id  # 例如 openai/gpt-5.6-terra

# 别忘了在这里设置你的 API 密钥。请参阅下面的
# 服务商章节。

WARNING

切勿将 API 密钥提交到版本控制。请使用环境文件(.env)或系统的密钥管理。

INFO

CrewAI 为 OpenAI、Anthropic、Google(Gemini API)、Azure、AWS Bedrock 和 Snowflake Cortex 提供原生 SDK 集成——除了服务商特定的附加包(例如 uv add "crewai[openai]")之外,无需额外安装。

所有其他服务商都由 LiteLLM 提供支持。如果你打算使用其中任何一家,请将它添加为项目依赖:

bash
uv add 'crewai[litellm]'

服务商配置示例

CrewAI 支持众多 LLM 服务商,每家都提供独特的功能、身份认证方法和模型能力。 在本节中,你将找到详细的示例,帮助你选择、配置并优化最契合项目需求的 LLM。

WARNING

模型可用性变化频繁,并且可能因账户、区域和 云平台而异。下面的示例使用的是撰写本文时 最新的模型,但它们并非详尽的支持列表。部署前,请在服务商链接的模型目录中 核实模型 ID 和生命周期状态。

OpenAI

CrewAI 通过 OpenAI Python SDK 提供与 OpenAI 的原生集成。

toml
# 必需
OPENAI_API_KEY=sk-...

# 可选
OPENAI_BASE_URL=<custom-base-url>

基本用法:

python
from crewai import LLM

llm = LLM(
    model="openai/gpt-5.6-terra",
    api_key="your-api-key",  # 或设置 OPENAI_API_KEY
    reasoning_effort="medium",
    max_completion_tokens=4000
)

自定义 OpenAI 兼容端点:

python
from crewai import LLM

llm = LLM(
    model="anthropic/claude-sonnet-4-6",
    custom_openai=True,
    base_url="https://your-gateway.example.com/v1",
    api_key="your-gateway-api-key",
)

高级配置:

python
from crewai import LLM

llm = LLM(
    model="openai/gpt-5.6-terra",
    api_key="your-api-key",
    base_url="https://api.openai.com/v1",  # 可选的自定义端点
    organization="org-...",  # 可选的 organization ID
    project="proj_...",  # 可选的 project ID
    max_completion_tokens=4000,
    reasoning_effort="medium",
    stream=True,  # 启用流式传输
    timeout=60.0,  # 请求超时(秒)
    max_retries=3  # 最大重试次数
)

结构化输出:

python
from pydantic import BaseModel
from crewai import LLM

class ResponseFormat(BaseModel):
    name: str
    age: int
    summary: str

llm = LLM(
    model="openai/gpt-5.6-terra",
)

支持的环境变量:

  • OPENAI_API_KEY:你的 OpenAI API 密钥(必需)
  • OPENAI_BASE_URL:OpenAI API 的自定义基础 URL(可选)

功能特性:

  • 支持原生函数调用
  • 基于 JSON schema 的结构化输出
  • 支持流式传输以获取实时响应
  • token 用量追踪
  • 服务商特定的生成控制参数
  • 对数概率(log probabilities),用于 token 级别的洞察
  • 对受支持模型提供推理强度控制

OpenAI 会定期新增模型并淘汰较旧的快照。请参阅 OpenAI 模型目录, 了解当前的模型 ID、上下文窗口、端点兼容性以及生命周期 信息。

Responses API:

OpenAI 提供两种 API:Chat Completions(默认)和较新的 Responses API。Responses API 从一开始就设计为原生支持多模态——文本、图像、音频和函数调用都是一等公民。它在推理模型上表现更好,并支持自动链式调用和内建工具等附加功能。

python
from crewai import LLM

# 使用 Responses API 而非 Chat Completions
llm = LLM(
    model="openai/gpt-4o",
    api="responses",  # 启用 Responses API
    store=True,  # 为多轮对话存储响应(可选)
    auto_chain=True,  # 为推理模型自动链式调用(可选)
)

Responses API 参数:

  • api:设为 "responses" 以使用 Responses API(默认:"completions")
  • instructions:系统级指令(仅 Responses API)
  • store:是否为多轮对话存储响应
  • previous_response_id:用于多轮对话的上一条响应 ID
  • include:响应中要包含的附加数据(例如 ["reasoning.encrypted_content"])
  • builtin_tools:OpenAI 内建工具列表:"web_search"、"file_search"、"code_interpreter"、"computer_use"
  • parse_tool_outputs:返回结构化的 ResponsesAPIResult,其中包含解析后的内建工具输出
  • auto_chain:自动追踪并使用响应 ID 以支持多轮对话
  • auto_chain_reasoning:追踪加密的推理项,以满足 ZDR(零数据保留)合规要求

TIP

新项目建议使用 Responses API,尤其是在处理推理模型(o1、o3、o4)或需要为文件提供原生多模态支持时。

注意: 要使用 OpenAI,请安装所需的依赖:

bash
uv add "crewai[openai]"
Meta-Llama

Meta 的 Llama API 提供对 Meta 大语言模型系列的访问。 该 API 可通过 Meta Llama API 使用。 在 .env 文件中设置以下环境变量:

toml
# Meta Llama API 密钥配置
LLAMA_API_KEY=LLM|your_api_key_here

在 CrewAI 项目中的用法示例:

python
from crewai import LLM

# 初始化 Meta Llama LLM
llm = LLM(
    model="meta_llama/Llama-4-Scout-17B-16E-Instruct-FP8",
    temperature=0.8,
    stop=["END"],
    seed=42
)

关于当前的模型系列、模态和上下文指导,请参阅 Meta Llama 模型概览。

注意: 该服务商使用 LiteLLM。请将它添加为项目依赖:

bash
uv add 'crewai[litellm]'
Snowflake Cortex

CrewAI 通过 Snowflake Cortex 兼容 OpenAI 的 Chat Completions 端点,与该 REST API 实现原生集成。这样 snowflake/... 模型就无需回退到 LiteLLM。目前 CrewAI 中的 Snowflake Cortex 仅支持 Chat Completions,因此请使用默认的 api 模式,不要设置 api="responses"。

toml
# 必需
SNOWFLAKE_PAT=<your-programmatic-access-token>
SNOWFLAKE_ACCOUNT_URL=https://<account-identifier>.snowflakecomputing.com

# 备选账户配置
SNOWFLAKE_ACCOUNT=<account-identifier>

基本用法:

python
from crewai import LLM

llm = LLM(
    model="snowflake/openai-gpt-4.1",
    temperature=0.7,
    max_completion_tokens=1024,
)

Cortex 上的 Claude 模型:

python
from crewai import LLM

llm = LLM(
    model="snowflake/claude-sonnet-4-5",
    max_completion_tokens=1024,
    stream=True,
)

支持的环境变量:

  • SNOWFLAKE_PAT、SNOWFLAKE_TOKEN 或 SNOWFLAKE_JWT:用作 Bearer 凭据的 token
  • SNOWFLAKE_ACCOUNT_URL:完整的 Snowflake 账户 URL
  • SNOWFLAKE_ACCOUNT、SNOWFLAKE_ACCOUNT_ID 或 SNOWFLAKE_ACCOUNT_IDENTIFIER:用于构建账户 URL 的账户标识符

Snowflake REST 请求使用用户的默认 Snowflake 角色。请确保该角色具有 SNOWFLAKE.CORTEX_USER 或 SNOWFLAKE.CORTEX_REST_API_USER。Cortex REST Chat Completions 端点不需要 database、schema、warehouse 和显式 role 参数。

功能特性:

  • 通过 model="snowflake/<model-name>" 原生选择服务商
  • 仅支持流式和非流式 Chat Completions;不支持 api="responses"
  • token 用量追踪
  • 对 Snowflake 托管的 OpenAI 和 Claude 模型支持函数调用
  • 自动移除 Snowflake Claude 模型中无效的尾部 assistant 预填充
Anthropic

CrewAI 通过 Anthropic Python SDK 提供与 Anthropic 的原生集成。

toml
# Required
ANTHROPIC_API_KEY=sk-ant-...

基本用法:

python
from crewai import LLM

llm = LLM(
    model="anthropic/claude-sonnet-4-6",
    api_key="your-api-key",  # Or set ANTHROPIC_API_KEY
    max_tokens=4096  # Required for Anthropic
)

高级配置:

python
from crewai import LLM

llm = LLM(
    model="anthropic/claude-sonnet-4-6",
    api_key="your-api-key",
    base_url="https://api.anthropic.com",  # Optional custom endpoint
    max_tokens=4096,  # Required parameter
    stop_sequences=["END", "STOP"],  # Anthropic uses stop_sequences
    stream=True,  # Enable streaming
    timeout=60.0,  # Request timeout in seconds
    max_retries=3  # Maximum retry attempts
)

扩展思考:

CrewAI 支持 Anthropic 的扩展思考功能,该功能让 Claude 在作出回复前以更接近人类的方式思考问题。这特别适用于复杂推理、分析和问题解决任务。

python
from crewai import LLM

# Enable extended thinking with default settings
llm = LLM(
    model="anthropic/claude-sonnet-4-6",
    thinking={"type": "enabled"},
    max_tokens=10000
)

# Configure thinking with budget control
llm = LLM(
    model="anthropic/claude-sonnet-4-6",
    thinking={
        "type": "enabled",
        "budget_tokens": 5000  # Limit thinking tokens
    },
    max_tokens=10000
)

思考配置选项:

  • type:设为 "enabled" 以激活扩展思考模式
  • budget_tokens(可选):用于思考的最大 token 数(有助于控制成本)

思考模式与可接受的参数因 Claude 世代而异。 启用 thinking 前,请检查所选模型的能力。

何时使用扩展思考:

  • 复杂推理与多步问题求解
  • 数学计算与证明
  • 代码分析与调试
  • 战略规划与决策
  • 研究与分析任务

注意: 扩展思考会消耗额外的 token,但能显著提升复杂任务的响应质量。

支持的环境变量:

  • ANTHROPIC_API_KEY:你的 Anthropic API 密钥(必填)

功能:

  • 对 Claude 3+ 模型提供原生工具调用支持
  • 对兼容的 Claude 模型提供扩展思考支持
  • 支持流式传输以实现实时响应
  • 自动处理系统消息
  • 使用停止序列实现受控输出
  • token 用量追踪
  • 多轮工具调用对话

token 用量与提示词缓存:

Anthropic 将计费输入分别报告在独立的计数器中——input_tokens(未缓存)、 cache_read_input_tokens 和 cache_creation_input_tokens。CrewAI 将这三者都 折算进 prompt_tokens(以及服务商响应中的原生 input_tokens),从而使 total_tokens 反映缓存工作负载下的完整计费用量。

cached_prompt_tokens 仅作为细分项记录缓存读取部分;它 已包含在 prompt_tokens 中,不得再次累加到 total_tokens。cache_creation_tokens 以同样方式记录缓存写入。

python
usage = llm.get_token_usage_summary()
# total_tokens == prompt_tokens + completion_tokens
# prompt_tokens includes cache read + cache write for Anthropic

关于 crew.usage_metrics 和 flow.usage_metrics 所使用的服务商中立契约, 请参见 Flows 概念文档中的 UsageMetrics 字段语义 一节。

重要说明:

  • max_tokens 对所有 Anthropic 模型而言都是必填参数
  • Claude 使用 stop_sequences 而非 stop
  • 系统消息与对话消息分开处理
  • 第一条消息必须来自用户(已自动处理)
  • 消息必须在用户与助手之间交替

请参见 Anthropic 的模型概览 以了解当前的模型 ID 与能力,并查阅 模型弃用表 后再在生产环境中固定模型。

注意: 要使用 Anthropic,请安装所需依赖:

bash
uv add "crewai[anthropic]"
Google (Gemini API)

CrewAI 通过 Google Gen AI Python SDK 提供与 Google Gemini 的原生集成。

在 .env 文件中设置你的 API 密钥。如果你需要密钥,请查看 AI Studio。

toml
# Required (one of the following)
GOOGLE_API_KEY=<your-api-key>
GEMINI_API_KEY=<your-api-key>

# For Vertex AI Express mode (API key authentication)
GOOGLE_GENAI_USE_VERTEXAI=true
GOOGLE_API_KEY=<your-api-key>

# For Vertex AI with service account
GOOGLE_CLOUD_PROJECT=<your-project-id>
GOOGLE_CLOUD_LOCATION=<location>  # Defaults to us-central1

基本用法:

python
from crewai import LLM

llm = LLM(
    model="gemini/gemini-3.6-flash",
    api_key="your-api-key",  # Or set GOOGLE_API_KEY/GEMINI_API_KEY
)

高级配置:

python
from crewai import LLM

llm = LLM(
    model="gemini/gemini-3.6-flash",
    api_key="your-api-key",
    max_output_tokens=8192,
    stop_sequences=["END", "STOP"],
    stream=True,  # Enable streaming
    safety_settings={
        "HARM_CATEGORY_HARASSMENT": "BLOCK_NONE",
        "HARM_CATEGORY_HATE_SPEECH": "BLOCK_NONE"
    }
)

Vertex AI 快速模式(API 密钥身份认证):

Vertex AI 快速模式让你可以使用简单的 API 密钥身份认证来使用 Vertex AI,而无需服务账号凭据。这是上手 Vertex AI 最快的方式。

要启用快速模式,请在 .env 文件中设置以下两个环境变量:

toml
GOOGLE_GENAI_USE_VERTEXAI=true
GOOGLE_API_KEY=<your-api-key>

然后照常使用 LLM:

python
from crewai import LLM

llm = LLM(
    model="gemini/gemini-3.6-flash"
)

INFO

获取快速模式 API 密钥:

更多详情,请参见 Vertex AI 快速模式文档。

Vertex AI 配置(服务账号):

python
from crewai import LLM

llm = LLM(
    model="gemini/gemini-3.6-flash",
    project="your-gcp-project-id",
    location="us-central1"  # GCP region
)

支持的环境变量:

  • GOOGLE_API_KEY 或 GEMINI_API_KEY:你的 Google API 密钥(Gemini API 和 Vertex AI 快速模式必填)
  • GOOGLE_GENAI_USE_VERTEXAI:设为 true 以使用 Vertex AI(快速模式必填)
  • GOOGLE_CLOUD_PROJECT:Google Cloud 项目 ID(用于使用服务账号的 Vertex AI)
  • GOOGLE_CLOUD_LOCATION:GCP 位置(默认为 us-central1)

功能:

  • 对兼容的 Gemini 模型提供原生函数调用支持
  • 支持流式传输以实现实时响应
  • 多模态能力(文本、图像、视频)
  • 安全设置配置
  • 同时支持 Gemini API 和 Vertex AI
  • 自动处理系统指令
  • token 用量追踪

Google 在 Gemini 模型目录中发布当前的 Gemini 模型 ID、能力和生命周期阶段。 在选择稳定版或预览版模型之前,请查阅弃用时间表。 Gemini API 还托管 Gemma 模型。

注意: 要使用 Google Gemini,请安装所需依赖:

bash
uv add "crewai[google-genai]"
Google (Vertex AI)

使用应用默认凭据进行身份认证,然后为 Vertex AI 配置原生 Gemini 服务商:

toml
GOOGLE_GENAI_USE_VERTEXAI=true
GOOGLE_CLOUD_PROJECT=<your-project-id>
GOOGLE_CLOUD_LOCATION=<location>

在你的 CrewAI 项目中的用法示例:

python
from crewai import LLM

llm = LLM(
    model="gemini/gemini-3.6-flash"
)

Vertex AI 的可用性因区域而异。请使用 Vertex AI 模型目录 在部署前核实模型 ID 和位置。

注意: 此路径使用 CrewAI 的原生 Gemini 集成。请将其添加为项目依赖:

bash
uv add "crewai[google-genai]"
Azure

CrewAI 通过 Azure AI Inference Python SDK 提供与 Azure AI Inference 和 Azure OpenAI 的原生集成。

toml
# Required
AZURE_API_KEY=<your-api-key>
AZURE_ENDPOINT=<your-endpoint-url>

# Optional
AZURE_API_VERSION=<api-version>  # Defaults to 2024-06-01

端点 URL 格式:

对于 Azure OpenAI 部署:

https://<resource-name>.openai.azure.com/openai/deployments/<deployment-name>

对于 Azure AI Inference 端点:

https://<resource-name>.inference.azure.com

基本用法:

python
llm = LLM(
    model="azure/gpt-4",
    api_key="<your-api-key>",  # Or set AZURE_API_KEY
    endpoint="<your-endpoint-url>",
    api_version="2024-06-01"
)

高级配置:

python
llm = LLM(
    model="azure/gpt-4o",
    temperature=0.7,
    max_tokens=4000,
    top_p=0.9,
    frequency_penalty=0.0,
    presence_penalty=0.0,
    stop=["END"],
    stream=True,
    timeout=60.0,
    max_retries=3
)

支持的环境变量:

  • AZURE_API_KEY:你的 Azure API 密钥(必填)
  • AZURE_ENDPOINT:你的 Azure 端点 URL(必填,也会检查 AZURE_OPENAI_ENDPOINT 和 AZURE_API_BASE)
  • AZURE_API_VERSION:API 版本(可选,默认为 2024-06-01)

功能:

  • 对 Azure OpenAI 模型(gpt-4、gpt-4o、gpt-3.5-turbo 等)提供原生函数调用支持
  • 支持流式传输以实现实时响应
  • 自动校验并修正端点 URL
  • 全面的错误处理与重试逻辑
  • token 用量追踪

注意: 要使用 Azure AI Inference,请安装所需依赖:

bash
uv add "crewai[azure-ai-inference]"
AWS Bedrock

CrewAI 通过 boto3 SDK 使用 Converse API 提供与 AWS Bedrock 的原生集成。

toml
# Required
AWS_ACCESS_KEY_ID=<your-access-key>
AWS_SECRET_ACCESS_KEY=<your-secret-key>

# Optional
AWS_SESSION_TOKEN=<your-session-token>  # For temporary credentials
AWS_DEFAULT_REGION=<your-region>  # Defaults to us-east-1
AWS_REGION_NAME=<your-region>  # Alternative configuration for backwards compatibility with LiteLLM. Defaults to us-east-1

基本用法:

python
from crewai import LLM

llm = LLM(
    model="bedrock/us.anthropic.claude-sonnet-4-6",
    region_name="us-east-1"
)

高级配置:

python
from crewai import LLM

llm = LLM(
    model="bedrock/us.anthropic.claude-sonnet-4-6",
    aws_access_key_id="your-access-key",  # Or set AWS_ACCESS_KEY_ID
    aws_secret_access_key="your-secret-key",  # Or set AWS_SECRET_ACCESS_KEY
    aws_session_token="your-session-token",  # For temporary credentials
    region_name="us-east-1",
    temperature=0.7,
    max_tokens=4096,
    top_p=0.9,
    top_k=250,  # For Claude models
    stop_sequences=["END", "STOP"],
    stream=True,  # Enable streaming
    guardrail_config={  # Optional content filtering
        "guardrailIdentifier": "your-guardrail-id",
        "guardrailVersion": "1"
    },
    additional_model_request_fields={  # Model-specific parameters
        "top_k": 250
    }
)

支持的环境变量:

  • AWS_ACCESS_KEY_ID:AWS 访问密钥(必需)
  • AWS_SECRET_ACCESS_KEY:AWS 私有密钥(必需)
  • AWS_SESSION_TOKEN:用于临时凭证的 AWS 会话 token(可选)
  • AWS_DEFAULT_REGION:AWS 区域(默认为 us-east-1)
  • AWS_REGION_NAME:AWS 区域(默认为 us-east-1)。用于与 LiteLLM 向后兼容的替代配置

功能:

  • 通过 Converse API 原生支持工具调用
  • 流式和非流式响应
  • 带重试逻辑的全面错误处理
  • 用于内容过滤的护栏配置
  • 通过 additional_model_request_fields 设置模型特定参数
  • token 使用量跟踪和停止原因日志记录
  • 支持所有 Bedrock 基础模型
  • 自动处理对话格式

重要说明:

  • 使用现代 Converse API 实现统一的模型访问
  • 自动处理模型特定的对话要求
  • 系统消息与对话分开处理
  • 第一条消息必须来自用户(自动处理)
  • 某些模型(如 Cohere)要求对话以用户消息结束

Amazon Bedrock 模型访问权限和 ID 因区域而异。使用 AWS 的 支持的模型和区域 参考来选择模型,并验证 Converse API 支持。 注意: 要使用 AWS Bedrock,请安装所需依赖项:

bash
uv add "crewai[bedrock]"
Amazon SageMaker
toml
AWS_ACCESS_KEY_ID=<your-access-key>
AWS_SECRET_ACCESS_KEY=<your-secret-key>
AWS_DEFAULT_REGION=<your-region>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="sagemaker/<my-endpoint>"
)

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Mistral

在 .env 文件中设置以下环境变量:

toml
MISTRAL_API_KEY=<your-api-key>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="mistral/mistral-large-latest",
    temperature=0.7
)

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Nvidia NIM

在 .env 文件中设置以下环境变量:

toml
NVIDIA_API_KEY=<your-api-key>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="nvidia_nim/nvidia/nvidia-nemotron-3-ultra-550b-a55b",
    temperature=0.7
)

NVIDIA NIM 的托管目录会频繁变化。使用 NVIDIA NIM 模型目录 选择 当前端点,并验证其模型 ID、模态和上下文限制。

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
NVIDIA Nemotron

NVIDIA Nemotron 模型专为要求严苛的智能体化工作负载而设计,包括复杂推理、长上下文分析、工具使用、多语言任务和高风险 RAG。

NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4 模型是 NVIDIA 推出的前沿规模开放权重模型,总参数 550B,激活参数 55B。它采用 LatentMoE 架构,结合了 Mamba-2、MoE、Attention 和多 token 预测(MTP),并支持最长 1M token 的上下文长度。

INFO

NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4 是非常大的模型。NVIDIA 列出的最低服务要求为 4x GB200、4x B200、4x GB300、4x B300 或 8x H100 GPU。对于大多数 CrewAI 用户,推荐路径是使用 NVIDIA NIM 或其他兼容 OpenAI 的托管端点,而不是在本地运行它。

托管 NVIDIA NIM 用法:

toml
NVIDIA_API_KEY=<your-api-key>
python
from crewai import LLM

llm = LLM(
    model="nvidia_nim/nvidia/nvidia-nemotron-3-ultra-550b-a55b",
    temperature=0.2,
    max_tokens=4096,
)

自托管 OpenAI 兼容端点:

python
from crewai import LLM

llm = LLM(
    model="openai/nvidia-nemotron-3-ultra-550b-a55b-nvfp4",
    base_url="https://your-nemotron-endpoint.example.com/v1",
    api_key="your-api-key",
    temperature=0.2,
    max_tokens=4096,
)

模型详情:

模型上下文窗口最适合
nvidia/NVIDIA-Nemotron-3-Ultra-550B-A55B-NVFP4最多 1M token前沿推理、复杂智能体工作流、长上下文分析、工具使用、多语言推理和高风险 RAG

支持的语言: 英语、法语、西班牙语、意大利语、德语、日语、韩语、印地语、巴西葡萄牙语和中文。

推理模式: Nemotron 3 Ultra 通过其聊天模板支持可配置推理,使用 enable_thinking=True 或 enable_thinking=False。如果你使用的是托管端点,请查看服务商文档,了解该标志如何暴露。

有关模型详情、许可证和部署指导,请参阅 NVIDIA Nemotron 3 Ultra 模型卡。

注意: 托管 NVIDIA NIM 用法使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
使用 WSL2 部署的本地 NVIDIA NIM

NVIDIA NIM 使你能够使用 WSL2(Windows Subsystem for Linux)在 Windows 机器上本地运行强大的 LLM。 这种方法让你无需依赖云服务,即可利用 NVIDIA GPU 进行私密、安全且经济高效的 AI 推理。 非常适合需要数据隐私或离线能力的开发、测试或生产场景。

以下是设置本地 NVIDIA NIM 模型的分步指南:

  1. 按照 NVIDIA 网站 中的安装说明操作

  2. 安装本地模型。对于 Llama 3.1-8b,请遵循说明

  3. 配置你的 crewai 本地模型:

python
from crewai.llm import LLM

local_nvidia_nim_llm = LLM(
    model="openai/meta/llama-3.1-8b-instruct", # it's an openai-api compatible model
    base_url="http://localhost:8000/v1",
    api_key="<your_api_key|any text if you have not configured it>", # api_key is required, but you can use any text
)

# Then you can use it in your crew:

@CrewBase
class MyCrew():
    # ...

    @agent
    def researcher(self) -> Agent:
        return Agent(
            config=self.agents_config['researcher'], # type: ignore[index]
            llm=local_nvidia_nim_llm
        )

    # ...

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Groq

在 .env 文件中设置以下环境变量:

toml
GROQ_API_KEY=<your-api-key>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="groq/qwen/qwen3.6-27b",
    temperature=0.7
)

Groq 区分生产模型和预览模型,并会定期停用模型 ID。 在生产环境选择模型之前,请查看 Groq 模型目录 和 弃用页面。 之后再选择用于生产环境的模型。

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
IBM watsonx.ai

在 .env 文件中设置以下环境变量:

toml
# Required
WATSONX_URL=<your-url>
WATSONX_APIKEY=<your-apikey>
WATSONX_PROJECT_ID=<your-project-id>

# Optional
WATSONX_TOKEN=<your-token>
WATSONX_DEPLOYMENT_SPACE_ID=<your-space-id>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="watsonx/meta-llama/llama-3-1-70b-instruct",
    base_url="https://api.watsonx.ai/v1"
)

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Ollama(本地 LLM)
  1. 安装 Ollama:ollama.ai
  2. 运行模型:ollama run llama3
  3. 配置:
python
llm = LLM(
    model="ollama/llama3:70b",
    base_url="http://localhost:11434"
)

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Fireworks AI

在 .env 文件中设置以下环境变量:

toml
FIREWORKS_API_KEY=<your-api-key>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct",
    temperature=0.7
)

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Perplexity AI

在 .env 文件中设置以下环境变量:

toml
PERPLEXITY_API_KEY=<your-api-key>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="perplexity/sonar-pro"
)

有关当前模型 ID 和弃用通知,请参阅 Perplexity 模型目录 和 更新日志。

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
Hugging Face

在 .env 文件中设置以下环境变量:

toml
HF_TOKEN=<your-api-key>

在你的 CrewAI 项目中的示例用法:

python
llm = LLM(
    model="huggingface/meta-llama/Meta-Llama-3.1-8B-Instruct"
)

注意: 此服务商使用 LiteLLM。将其作为依赖项添加到你的项目:

bash
uv add 'crewai[litellm]'
SambaNova

在 .env 文件中设置以下环境变量:

toml
SAMBANOVA_API_KEY=<your-api-key>

在你的 CrewAI 项目中的用法示例:

python
llm = LLM(
    model="sambanova/Meta-Llama-3.3-70B-Instruct",
    temperature=0.7
)

SambaNova Cloud 托管的模型可能独立于 CrewAI 发生变化。部署前请查询 模型端点 并查看 弃用指南。

注意: 此服务商使用 LiteLLM。请将其添加为项目的依赖:

bash
uv add 'crewai[litellm]'
Cerebras

在 .env 文件中设置以下环境变量:

toml
# Required
CEREBRAS_API_KEY=<your-api-key>

在你的 CrewAI 项目中的用法示例:

python
llm = LLM(
    model="cerebras/gpt-oss-120b",
    temperature=0.7,
    max_tokens=8192
)

INFO

Cerebras 功能:

  • 快速的推理速度
  • 有竞争力的价格
  • 速度与质量的良好平衡
  • 支持长上下文窗口

查看 Cerebras 模型目录 和 弃用通知 以获取当前的公开端点 ID。

注意: 此服务商使用 LiteLLM。请将其添加为项目的依赖:

bash
uv add 'crewai[litellm]'
Open Router

在 .env 文件中设置以下环境变量:

toml
OPENROUTER_API_KEY=<your-api-key>

在你的 CrewAI 项目中的用法示例:

python
llm = LLM(
    model="openrouter/deepseek/deepseek-r1",
    base_url="https://openrouter.ai/api/v1",
    api_key=OPENROUTER_API_KEY
)

INFO

Open Router 模型:

  • openrouter/deepseek/deepseek-r1
  • openrouter/deepseek/deepseek-chat

注意: 此服务商使用 LiteLLM。请将其添加为项目的依赖:

bash
uv add 'crewai[litellm]'
Nebius AI Studio

在 .env 文件中设置以下环境变量:

toml
NEBIUS_API_KEY=<your-api-key>

在你的 CrewAI 项目中的用法示例:

python
llm = LLM(
    model="nebius/Qwen/Qwen3-30B-A3B"
)

INFO

Nebius AI Studio 功能:

  • 大量开源模型
  • 更高的限流额度
  • 有竞争力的价格
  • 速度与质量的良好平衡

注意: 此服务商使用 LiteLLM。请将其添加为项目的依赖:

bash
uv add 'crewai[litellm]'
DeepInfra

CrewAI 通过其原生 OpenAI 客户端与 DeepInfra 通信,因此无需安装 LiteLLM。

在 .env 文件中设置以下环境变量:

toml
# Required
DEEPINFRA_API_KEY=<your-api-key>

# Optional, point at a proxy or a private deployment endpoint
DEEPINFRA_BASE_URL=https://api.deepinfra.com/v1/openai

在你的 CrewAI 项目中的用法示例:

python
llm = LLM(
    model="deepinfra/deepseek-ai/DeepSeek-V4-Flash-0731",
    temperature=0.7
)

INFO

DeepInfra 功能:

  • 在一个 OpenAI 兼容 API 背后提供开放权重模型(Llama、Qwen、DeepSeek、GLM、Mistral 等)
  • 工具调用、流式传输以及 JSON schema 结构化输出
  • 模型目录中公布按 token 计价的价格和上下文长度

模型 ID 已经是 org/model 形式,因此完整引用包含三段, 例如 deepinfra/meta-llama/Llama-4-Scout-17B-16E-Instruct。查看 为 CrewAI 精选的模型目录, 该目录公开且无需身份认证,可获取当前 ID、上下文长度和价格。

流式响应

CrewAI 支持来自 LLM 的流式响应,让你的应用在输出生成的同时实时接收和处理它们。

在初始化 LLM 时将 stream 参数设为 True 即可启用流式传输:

python
from crewai import LLM

# Create an LLM with streaming enabled
llm = LLM(
    model="openai/gpt-5.6-terra",
    stream=True  # Enable streaming
)

启用流式传输后,响应会在生成时以分块形式送达,从而带来更灵敏的用户体验。

异步 LLM 调用

CrewAI 支持异步 LLM 调用,以提升 AI 工作流的性能和并发能力。异步调用让你可以在不阻塞的情况下并发运行多个 LLM 请求,非常适合高吞吐量应用和并行的智能体操作。

使用 acall 方法发起异步 LLM 请求:

python
import asyncio
from crewai import LLM

async def main():
    llm = LLM(model="openai/gpt-4o")

    # Single async call
    response = await llm.acall("What is the capital of France?")
    print(response)

asyncio.run(main())

acall 方法支持与同步 call 方法相同的所有参数,包括消息、工具和回调。

结构化 LLM 调用

CrewAI 支持 LLM 调用的结构化响应:你可以使用 Pydantic 模型定义 response_format。这让框架能够自动解析并校验输出,从而更轻松地将响应集成到应用中,无需手动后处理。

结构化输出的支持情况因服务商和模型而异。在生产环境中依赖结构化响应之前,请先测试你所选择的模型。

例如,你可以定义一个 Pydantic 模型来表示期望的响应结构,并在实例化 LLM 时将其作为 response_format 传入。随后该模型会用于将 LLM 输出转换为结构化的 Python 对象。

python
from crewai import LLM

class Dog(BaseModel):
    name: str
    age: int
    breed: str

llm = LLM(model="openai/gpt-5.6-terra", response_format=Dog)

response = llm.call(
    "Analyze the following messages and return the name, age, and breed. "
    "Meet Kona! She is 3 years old and is a black german shepherd."
)
print(response)

# Output:
# Dog(name='Kona', age=3, breed='black german shepherd')

高级功能与优化

了解如何充分利用你的 LLM 配置:

上下文窗口管理

CrewAI 包含智能上下文管理功能:

python
from crewai import LLM

# CrewAI automatically handles:
# 1. Token counting and tracking
# 2. Content summarization when needed
# 3. Task splitting for large contexts

llm = LLM(
    model="openai/gpt-5.6-terra",
    max_completion_tokens=4000,  # Limit response length
)

INFO

上下文管理的最佳实践:

  1. 选择具有合适上下文窗口的模型
  2. 尽可能预处理长输入
  3. 对大型文档使用分块
  4. 监控 token 用量以优化成本
性能优化

Token 用量优化

为你的任务选择合适的上下文窗口:

  • 小任务(不超过 4K tokens):标准模型
  • 中等任务(4K-32K):增强模型
  • 大任务(超过 32K):大上下文模型
python
# Configure model with appropriate settings
llm = LLM(
    model="openai/gpt-5.6-terra",
    reasoning_effort="medium",
    max_completion_tokens=4096,
    timeout=300
)

TIP

请使用你所选模型支持的控制项。视服务商而定, 这可能是 temperature、推理或思考级别, 或是用于定义期望风格与变化程度的提示词指令。

最佳实践

  1. 监控 token 用量
  2. 实施限流
  3. 尽可能使用缓存
  4. 设置合适的 max_tokens 限制

INFO

记得定期监控 token 用量,并按需调整配置以优化成本和性能。

丢弃额外参数

CrewAI 内部使用原生 SDK 进行 LLM 调用,这让你可以丢弃特定用例不需要的额外参数。这有助于简化代码并降低 LLM 配置的复杂度。 例如,如果你不需要发送 stop 参数,只需在 LLM 调用中省略它即可:

python
from crewai import LLM
import os

os.environ["OPENAI_API_KEY"] = "<api-key>"

o3_llm = LLM(
    model="o3",
    drop_params=True,
    additional_drop_params=["stop"]
)
传输层拦截器

CrewAI 为多个服务商提供消息拦截器,允许你在传输层接入请求/响应周期。

支持的服务商:

  • ✅ OpenAI
  • ✅ Anthropic

基本用法:

python
import httpx
from crewai import LLM
from crewai.llms.hooks import BaseInterceptor

class CustomInterceptor(BaseInterceptor[httpx.Request, httpx.Response]):
"""Custom interceptor to modify requests and responses."""

def on_outbound(self, request: httpx.Request) -> httpx.Request:
    """Print request before sending to the LLM provider."""
    print(request)
    return request

def on_inbound(self, response: httpx.Response) -> httpx.Response:
    """Process response after receiving from the LLM provider."""
    print(f"Status: {response.status_code}")
    print(f"Response time: {response.elapsed}")
    return response

# Use the interceptor with an LLM
llm = LLM(
model="openai/gpt-4o",
interceptor=CustomInterceptor()
)

重要说明:

  • 两种方法都必须返回接收到的对象或对象类型。
  • 修改接收到的对象可能导致意外行为或应用程序崩溃。
  • 并非所有服务商都支持拦截器 - 请查看上方的支持服务商列表

INFO

拦截器在传输层工作。这尤其适用于:

  • 消息转换与过滤
  • 调试 API 交互

常见问题与解决方案

WARNING

大多数身份认证问题都可以通过检查 API key 格式和环境变量名称来解决。

bash
# OpenAI
OPENAI_API_KEY=sk-...

# Anthropic
ANTHROPIC_API_KEY=sk-ant-...

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