跳转到主要内容

概述

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

什么是 LLM?

大型语言模型 (LLM) 是 CrewAI 代理的核心智能。它们使代理能够理解上下文、做出决策并生成类似人类的响应。以下是您需要了解的信息

LLM 基础知识

大型语言模型是经过大量文本数据训练的 AI 系统。它们为您的 CrewAI 代理提供智能支持,使它们能够理解和生成类似人类的文本。

上下文窗口

上下文窗口决定了 LLM 一次可以处理多少文本。较大的窗口(例如,128K 令牌)允许更多的上下文,但可能更昂贵且速度更慢。

温度

温度(0.0 到 1.0)控制响应的随机性。较低的值(例如,0.2)产生更集中、确定性的输出,而较高的值(例如,0.8)增加创造性和可变性。

提供商选择

每个 LLM 提供商(例如,OpenAI、Anthropic、Google)提供具有不同功能、定价和特性的模型。根据您对准确性、速度和成本的需求进行选择。

设置您的 LLM

在 CrewAI 代码中,您可以在不同的位置指定要使用的模型。一旦您指定了要使用的模型,您将需要为您使用的每个模型提供商提供配置(例如 API 密钥)。请参阅提供商配置示例部分,了解您的提供商。
  • 1. 环境变量
  • 2. YAML 配置
  • 3. 直接代码
最简单的入门方法。直接通过 .env 文件或在您的应用程序代码中设置模型。如果您使用 crewai create 引导您的项目,它将已经设置。
.env
MODEL=model-id  # e.g. gpt-4o, gemini-2.0-flash, claude-3-sonnet-...

# Be sure to set your API keys here too. See the Provider
# section below.
切勿将 API 密钥提交到版本控制。使用环境文件 (.env) 或您的系统秘密管理。

提供商配置示例

CrewAI 支持多种 LLM 提供商,每个提供商都提供独特的功能、身份验证方法和模型能力。在本节中,您将找到详细的示例,帮助您选择、配置和优化最适合您项目需求的 LLM。
CrewAI 通过 OpenAI Python SDK 提供与 OpenAI 的原生集成。
代码
# Required
OPENAI_API_KEY=sk-...

# Optional
OPENAI_BASE_URL=<custom-base-url>
基本用法
代码
from crewai import LLM

llm = LLM(
    model="openai/gpt-4o",
    api_key="your-api-key",  # Or set OPENAI_API_KEY
    temperature=0.7,
    max_tokens=4000
)
高级配置
代码
from crewai import LLM

llm = LLM(
    model="openai/gpt-4o",
    api_key="your-api-key",
    base_url="https://api.openai.com/v1",  # Optional custom endpoint
    organization="org-...",  # Optional organization ID
    project="proj_...",  # Optional project ID
    temperature=0.7,
    max_tokens=4000,
    max_completion_tokens=4000,  # For newer models
    top_p=0.9,
    frequency_penalty=0.1,
    presence_penalty=0.1,
    stop=["END"],
    seed=42,  # For reproducible outputs
    stream=True,  # Enable streaming
    timeout=60.0,  # Request timeout in seconds
    max_retries=3,  # Maximum retry attempts
    logprobs=True,  # Return log probabilities
    top_logprobs=5,  # Number of most likely tokens
    reasoning_effort="medium"  # For o1 models: low, medium, high
)
结构化输出
代码
from pydantic import BaseModel
from crewai import LLM

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

llm = LLM(
    model="openai/gpt-4o",
)
支持的环境变量
  • OPENAI_API_KEY: 您的 OpenAI API 密钥(必需)
  • OPENAI_BASE_URL: OpenAI API 的自定义基本 URL(可选)
功能
  • 原生函数调用支持(o1 模型除外)
  • 带 JSON 模式的结构化输出
  • 实时响应的流式传输支持
  • 令牌使用跟踪
  • 停止序列支持(o1 模型除外)
  • 令牌级别洞察的对数概率
  • o1 模型的推理工作控制
支持的模型
模型上下文窗口最适合
gpt-4.11M 令牌具有增强功能的最新模型
gpt-4.1-mini1M 令牌具有大上下文的高效版本
gpt-4.1-nano1M 令牌超高效变体
gpt-4o128,000 令牌针对速度和智能进行优化
gpt-4o-mini200,000 令牌具有大上下文的经济高效模型
gpt-4-turbo128,000 令牌长篇内容、文档分析
gpt-48,192 令牌高精度任务、复杂推理
o1200,000 令牌高级推理、复杂问题解决
o1-preview128,000 令牌推理能力预览
o1-mini128,000 令牌高效推理模型
o3-mini200,000 令牌轻量级推理模型
o4-mini200,000 令牌下一代高效推理
注意:要使用 OpenAI,请安装所需的依赖项
uv add "crewai[openai]"
Meta 的 Llama API 提供了对 Meta 系列大型语言模型的访问。API 可通过Meta Llama API获得。在您的 .env 文件中设置以下环境变量
代码
# Meta Llama API Key Configuration
LLAMA_API_KEY=LLM|your_api_key_here
CrewAI 项目中的示例用法
代码
from crewai import LLM

# Initialize Meta Llama LLM
llm = LLM(
    model="meta_llama/Llama-4-Scout-17B-16E-Instruct-FP8",
    temperature=0.8,
    stop=["END"],
    seed=42
)
此处列出的所有模型https://llama.developer.meta.com/docs/models/都受支持。
模型 ID输入上下文长度输出上下文长度输入模态输出模态
meta_llama/Llama-4-Scout-17B-16E-Instruct-FP8128k4028文本、图像文本
meta_llama/Llama-4-Maverick-17B-128E-Instruct-FP8128k4028文本、图像文本
meta_llama/Llama-3.3-70B-Instruct128k4028文本文本
meta_llama/Llama-3.3-8B-Instruct128k4028文本文本
CrewAI 通过 Anthropic Python SDK 提供与 Anthropic 的原生集成。
代码
# Required
ANTHROPIC_API_KEY=sk-ant-...
基本用法
代码
from crewai import LLM

llm = LLM(
    model="anthropic/claude-3-5-sonnet-20241022",
    api_key="your-api-key",  # Or set ANTHROPIC_API_KEY
    max_tokens=4096  # Required for Anthropic
)
高级配置
代码
from crewai import LLM

llm = LLM(
    model="anthropic/claude-3-5-sonnet-20241022",
    api_key="your-api-key",
    base_url="https://api.anthropic.com",  # Optional custom endpoint
    temperature=0.7,
    max_tokens=4096,  # Required parameter
    top_p=0.9,
    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
)
支持的环境变量
  • ANTHROPIC_API_KEY: 您的 Anthropic API 密钥(必需)
功能
  • Claude 3+ 模型原生工具使用支持
  • 实时响应的流式传输支持
  • 自动系统消息处理
  • 用于控制输出的停止序列
  • 令牌使用跟踪
  • 多轮工具使用对话
重要说明
  • max_tokens 是所有 Anthropic 模型必需的参数
  • Claude 使用 stop_sequences 而不是 stop
  • 系统消息与对话消息分开处理
  • 第一条消息必须来自用户(自动处理)
  • 消息必须在用户和助手之间交替
支持的模型
模型上下文窗口最适合
claude-3-7-sonnet200,000 令牌高级推理和代理任务
claude-3-5-sonnet-20241022200,000 令牌最新 Sonnet,性能最佳
claude-3-5-haiku200,000 令牌快速、紧凑的模型,用于快速响应
claude-3-opus200,000 令牌最适合复杂任务
claude-3-sonnet200,000 令牌平衡智能和速度
claude-3-haiku200,000 令牌最快,用于简单任务
claude-2.1200,000 令牌扩展上下文,减少幻觉
claude-2100,000 令牌适用于各种任务的多功能模型
claude-instant100,000 令牌快速、经济高效,用于日常任务
注意:要使用 Anthropic,请安装所需的依赖项
uv add "crewai[anthropic]"
CrewAI 通过 Google Gen AI Python SDK 提供与 Google Gemini 的原生集成。在您的 .env 文件中设置您的 API 密钥。如果您需要密钥,请查看AI Studio
.env
# Required (one of the following)
GOOGLE_API_KEY=<your-api-key>
GEMINI_API_KEY=<your-api-key>

# Optional - for Vertex AI
GOOGLE_CLOUD_PROJECT=<your-project-id>
GOOGLE_CLOUD_LOCATION=<location>  # Defaults to us-central1
GOOGLE_GENAI_USE_VERTEXAI=true  # Set to use Vertex AI
基本用法
代码
from crewai import LLM

llm = LLM(
    model="gemini/gemini-2.0-flash",
    api_key="your-api-key",  # Or set GOOGLE_API_KEY/GEMINI_API_KEY
    temperature=0.7
)
高级配置
代码
from crewai import LLM

llm = LLM(
    model="gemini/gemini-2.5-flash",
    api_key="your-api-key",
    temperature=0.7,
    top_p=0.9,
    top_k=40,  # Top-k sampling parameter
    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 配置
代码
from crewai import LLM

llm = LLM(
    model="gemini/gemini-1.5-pro",
    project="your-gcp-project-id",
    location="us-central1"  # GCP region
)
支持的环境变量
  • GOOGLE_API_KEYGEMINI_API_KEY: 您的 Google API 密钥(Gemini API 必需)
  • GOOGLE_CLOUD_PROJECT: Google Cloud 项目 ID(用于 Vertex AI)
  • GOOGLE_CLOUD_LOCATION: GCP 位置(默认为 us-central1
  • GOOGLE_GENAI_USE_VERTEXAI: 设置为 true 以使用 Vertex AI
功能
  • Gemini 1.5+ 和 2.x 模型原生函数调用支持
  • 实时响应的流式传输支持
  • 多模态功能(文本、图像、视频)
  • 安全设置配置
  • 支持 Gemini API 和 Vertex AI
  • 自动系统指令处理
  • 令牌使用跟踪
Gemini 模型:Google 提供了一系列针对不同用例优化的强大模型。
模型上下文窗口最适合
gemini-2.5-flash1M 令牌自适应思维,成本效益
gemini-2.5-pro1M 令牌增强思维和推理,多模态理解
gemini-2.0-flash1M 令牌下一代功能、速度、思维
gemini-2.0-flash-thinking32,768 令牌具有思维过程的高级推理
gemini-2.0-flash-lite1M 令牌成本效益和低延迟
gemini-1.5-pro2M 令牌表现最佳,逻辑推理,编码
gemini-1.5-flash1M 令牌平衡的多模态模型,适用于大多数任务
gemini-1.5-flash-8b1M 令牌最快,成本效益最高
gemini-1.0-pro32,768 令牌早期生成模型
Gemma 模型:Gemini API 还支持托管在 Google 基础设施上的Gemma 模型
模型上下文窗口最适合
gemma-3-1b32,000 令牌超轻量级任务
gemma-3-4b128,000 令牌高效通用任务
gemma-3-12b128,000 令牌平衡性能和效率
gemma-3-27b128,000 令牌高性能任务
注意:要使用 Google Gemini,请安装所需的依赖项
uv add "crewai[google-genai]"
完整的模型列表可在Gemini 模型文档中找到。
从您的 Google Cloud Console 获取凭据并保存到 JSON 文件,然后使用以下代码加载它
代码
import json

file_path = 'path/to/vertex_ai_service_account.json'

# Load the JSON file
with open(file_path, 'r') as file:
    vertex_credentials = json.load(file)

# Convert the credentials to a JSON string
vertex_credentials_json = json.dumps(vertex_credentials)
CrewAI 项目中的示例用法
代码
from crewai import LLM

llm = LLM(
    model="gemini-1.5-pro-latest", # or vertex_ai/gemini-1.5-pro-latest
    temperature=0.7,
    vertex_credentials=vertex_credentials_json
)
Google 提供了一系列针对不同用例优化的强大模型
模型上下文窗口最适合
gemini-2.5-flash-preview-04-171M 令牌自适应思维,成本效益
gemini-2.5-pro-preview-05-061M 令牌增强思维和推理,多模态理解,高级编码等
gemini-2.0-flash1M 令牌下一代功能,速度,思维和实时流
gemini-2.0-flash-lite1M 令牌成本效益和低延迟
gemini-1.5-flash1M 令牌平衡的多模态模型,适用于大多数任务
gemini-1.5-flash-8B1M 令牌最快,成本效益最高,适用于高频任务
gemini-1.5-pro2M 令牌表现最佳,各种推理任务,包括逻辑推理,编码和创意协作
CrewAI 通过 Azure AI Inference Python SDK 提供与 Azure AI Inference 和 Azure OpenAI 的原生集成。
代码
# 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
基本用法
代码
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"
)
高级配置
代码
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_ENDPOINTAZURE_API_BASE
  • AZURE_API_VERSION: API 版本(可选,默认为 2024-06-01
功能
  • Azure OpenAI 模型(gpt-4、gpt-4o、gpt-3.5-turbo 等)的原生函数调用支持
  • 实时响应的流式传输支持
  • 自动端点 URL 验证和校正
  • 具有重试逻辑的全面错误处理
  • 令牌使用跟踪
注意:要使用 Azure AI Inference,请安装所需的依赖项
uv add "crewai[azure-ai-inference]"
CrewAI 通过 boto3 SDK 使用 Converse API 提供与 AWS Bedrock 的原生集成。
代码
# 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
基本用法
代码
from crewai import LLM

llm = LLM(
    model="bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
    region_name="us-east-1"
)
高级配置
代码
from crewai import LLM

llm = LLM(
    model="bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0",
    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 会话令牌(可选)
  • AWS_DEFAULT_REGION: AWS 区域(默认为 us-east-1
功能
  • 通过 Converse API 提供原生工具调用支持
  • 流式和非流式响应
  • 具有重试逻辑的全面错误处理
  • 内容过滤的防护栏配置
  • 通过 additional_model_request_fields 实现模型特定参数
  • 令牌使用跟踪和停止原因日志记录
  • 支持所有 Bedrock 基础模型
  • 自动对话格式处理
重要说明
  • 使用现代 Converse API 进行统一模型访问
  • 自动处理模型特定的对话要求
  • 系统消息与对话分开处理
  • 第一条消息必须来自用户(自动处理)
  • 某些模型(如 Cohere)要求对话以用户消息结束
Amazon Bedrock 是一项托管服务,通过统一 API 提供对顶级 AI 公司的多个基础模型的访问。
模型上下文窗口最适合
Amazon Nova Pro高达 300k 令牌高性能模型,在各种任务中平衡准确性、速度和成本效益。
Amazon Nova Micro高达 128k 令牌高性能、经济高效的纯文本模型,专为最低延迟响应而优化。
Amazon Nova Lite高达 300k 令牌高性能、经济实惠的多模态处理,适用于图像、视频和文本,具有实时功能。
Claude 3.7 Sonnet高达 128k 令牌高性能,最适合复杂推理、编码和 AI 代理
Claude 3.5 Sonnet v2高达 200k 令牌最先进的模型,专注于软件工程、代理能力和计算机交互,并优化成本。
Claude 3.5 Sonnet高达 200k 令牌高性能模型,在各种任务中提供卓越的智能和推理,并具有最佳的速度-成本平衡。
Claude 3.5 Haiku高达 200k 令牌快速、紧凑的多模态模型,专为快速响应和无缝类人交互而优化
Claude 3 Sonnet高达 200k 令牌平衡智能和速度的多模态模型,适用于大批量部署。
Claude 3 Haiku高达 200k 令牌紧凑、高速的多模态模型,专为快速响应和自然对话交互而优化
Claude 3 Opus高达 200k 令牌最先进的多模态模型,擅长复杂任务,具有类人推理和卓越的上下文理解。
Claude 2.1高达 200k 令牌增强版本,具有扩展的上下文窗口、改进的可靠性,并减少长篇和 RAG 应用程序的幻觉
Claude高达 100k 令牌多功能模型,擅长复杂的对话、创意内容和精确的指令遵循。
Claude Instant高达 100k 令牌快速、经济高效的模型,适用于日常任务,如对话、分析、摘要和文档问答
Llama 3.1 405B Instruct高达 128k 令牌高级 LLM,用于聊天机器人、编码和领域特定任务的合成数据生成、蒸馏和推理。
Llama 3.1 70B Instruct高达 128k 令牌通过卓越的上下文理解、推理和文本生成来支持复杂对话。
Llama 3.1 8B Instruct高达 128k 令牌先进的最新模型,具有语言理解、卓越推理和文本生成。
Llama 3 70B Instruct高达 8k 令牌通过卓越的上下文理解、推理和文本生成来支持复杂对话。
Llama 3 8B Instruct高达 8k 令牌先进的最新 LLM,具有语言理解、卓越推理和文本生成。
Titan Text G1 - Lite高达 4k 令牌轻量级、经济高效的模型,针对英语任务进行优化,并专注于摘要和内容生成。
Titan Text G1 - Express高达 8k 令牌多功能模型,用于一般语言任务、聊天和 RAG 应用程序,支持英语和 100 多种语言。
Cohere Command高达 4k 令牌专注于遵循用户命令并提供实用企业解决方案的模型。
Jurassic-2 Mid高达 8,191 令牌经济高效的模型,在质量和经济性之间取得平衡,适用于各种语言任务,如问答、摘要和内容生成。
Jurassic-2 Ultra高达 8,191 令牌用于高级文本生成和理解的模型,擅长分析和内容创建等复杂任务。
Jamba-Instruct高达 256k 令牌具有扩展上下文窗口的模型,针对经济高效的文本生成、摘要和问答进行了优化。
Mistral 7B Instruct高达 32k 令牌此 LLM 遵循指令、完成请求并生成创意文本。
Mistral 8x7B Instruct高达 32k 令牌一个遵循指令、完成请求并生成创意文本的 MOE LLM。
DeepSeek R132,768 令牌高级推理模型
注意:要使用 AWS Bedrock,请安装所需的依赖项
uv add "crewai[bedrock]"
代码
AWS_ACCESS_KEY_ID=<your-access-key>
AWS_SECRET_ACCESS_KEY=<your-secret-key>
AWS_DEFAULT_REGION=<your-region>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="sagemaker/<my-endpoint>"
)
在您的 .env 文件中设置以下环境变量
代码
MISTRAL_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="mistral/mistral-large-latest",
    temperature=0.7
)
在您的 .env 文件中设置以下环境变量
代码
NVIDIA_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="nvidia_nim/meta/llama3-70b-instruct",
    temperature=0.7
)
Nvidia NIM 提供了一套全面的模型,适用于各种用例,从通用任务到专业应用程序。
模型上下文窗口最适合
nvidia/mistral-nemo-minitron-8b-8k-instruct8,192 令牌最先进的小型语言模型,为聊天机器人、虚拟助手和内容生成提供卓越的准确性。
nvidia/nemotron-4-mini-hindi-4b-instruct4,096 令牌一款用于设备端推理的双语印地语-英语 SLM,专门针对印地语进行了定制。
nvidia/llama-3.1-nemotron-70b-instruct128k 令牌为增强响应的帮助性而定制
nvidia/llama3-chatqa-1.5-8b128k 令牌高级 LLM,可为聊天机器人和搜索引擎生成高质量、上下文感知的响应。
nvidia/llama3-chatqa-1.5-70b128k 令牌高级 LLM,可为聊天机器人和搜索引擎生成高质量、上下文感知的响应。
nvidia/vila128k 令牌多模态视觉语言模型,可理解文本/图像/视频并创建信息丰富的响应
nvidia/neva-224,096 令牌多模态视觉语言模型,可理解文本/图像并生成信息丰富的响应
nvidia/nemotron-mini-4b-instruct8,192 令牌通用任务
nvidia/usdcode-llama3-70b-instruct128k 令牌最先进的 LLM,可回答 OpenUSD 知识查询并生成 USD-Python 代码。
nvidia/nemotron-4-340b-instruct4,096 令牌创建模仿真实世界数据特征的各种合成数据。
meta/codellama-70b100k 令牌能够从自然语言生成代码并反之亦然的 LLM。
meta/llama2-70b4,096 令牌尖端大型语言 AI 模型,能够根据提示生成文本和代码。
meta/llama3-8b-instruct8,192 令牌先进的最新 LLM,具有语言理解、卓越推理和文本生成。
meta/llama3-70b-instruct8,192 令牌通过卓越的上下文理解、推理和文本生成来支持复杂对话。
meta/llama-3.1-8b-instruct128k 令牌先进的最新模型,具有语言理解、卓越推理和文本生成。
meta/llama-3.1-70b-instruct128k 令牌通过卓越的上下文理解、推理和文本生成来支持复杂对话。
meta/llama-3.1-405b-instruct128k 令牌高级 LLM,用于聊天机器人、编码和领域特定任务的合成数据生成、蒸馏和推理。
meta/llama-3.2-1b-instruct128k 令牌先进的最新小型语言模型,具有语言理解、卓越推理和文本生成。
meta/llama-3.2-3b-instruct128k 令牌先进的最新小型语言模型,具有语言理解、卓越推理和文本生成。
meta/llama-3.2-11b-vision-instruct128k 令牌先进的最新小型语言模型,具有语言理解、卓越推理和文本生成。
meta/llama-3.2-90b-vision-instruct128k 令牌先进的最新小型语言模型,具有语言理解、卓越推理和文本生成。
google/gemma-7b8,192 令牌尖端文本生成模型,具有文本理解、转换和代码生成功能。
google/gemma-2b8,192 令牌尖端文本生成模型,具有文本理解、转换和代码生成功能。
google/codegemma-7b8,192 令牌基于 Google Gemma-7B 构建的尖端模型,专门用于代码生成和代码完成。
google/codegemma-1.1-7b8,192 令牌高级编程模型,用于代码生成、完成、推理和指令遵循。
google/recurrentgemma-2b8,192 令牌基于新型循环架构的语言模型,可在生成长序列时实现更快的推理。
google/gemma-2-9b-it8,192 令牌尖端文本生成模型,具有文本理解、转换和代码生成功能。
google/gemma-2-27b-it8,192 令牌尖端文本生成模型,具有文本理解、转换和代码生成功能。
google/gemma-2-2b-it8,192 令牌尖端文本生成模型,具有文本理解、转换和代码生成功能。
google/deplot512 令牌将图表图像转换为表格的单次视觉语言理解模型。
google/paligemma8,192 令牌擅长理解文本和视觉输入以生成信息丰富响应的视觉语言模型。
mistralai/mistral-7b-instruct-v0.232k 令牌此 LLM 遵循指令、完成请求并生成创意文本。
mistralai/mixtral-8x7b-instruct-v0.18,192 令牌一个遵循指令、完成请求并生成创意文本的 MOE LLM。
mistralai/mistral-large4,096 令牌创建模仿真实世界数据特征的各种合成数据。
mistralai/mixtral-8x22b-instruct-v0.18,192 令牌创建模仿真实世界数据特征的各种合成数据。
mistralai/mistral-7b-instruct-v0.332k 令牌此 LLM 遵循指令、完成请求并生成创意文本。
nv-mistralai/mistral-nemo-12b-instruct128k 令牌用于推理、代码、多语言任务的最先进语言模型;在单个 GPU 上运行。
mistralai/mamba-codestral-7b-v0.1256k 令牌用于在各种编程语言和任务中编写和交互代码的模型。
microsoft/phi-3-mini-128k-instruct128K 令牌轻量级、最先进的开放式 LLM,具有强大的数学和逻辑推理能力。
microsoft/phi-3-mini-4k-instruct4,096 令牌轻量级、最先进的开放式 LLM,具有强大的数学和逻辑推理能力。
microsoft/phi-3-small-8k-instruct8,192 令牌轻量级、最先进的开放式 LLM,具有强大的数学和逻辑推理能力。
microsoft/phi-3-small-128k-instruct128K 令牌轻量级、最先进的开放式 LLM,具有强大的数学和逻辑推理能力。
microsoft/phi-3-medium-4k-instruct4,096 令牌轻量级、最先进的开放式 LLM,具有强大的数学和逻辑推理能力。
microsoft/phi-3-medium-128k-instruct128K 令牌轻量级、最先进的开放式 LLM,具有强大的数学和逻辑推理能力。
microsoft/phi-3.5-mini-instruct128K 令牌轻量级多语言 LLM,为延迟受限、内存/计算受限环境中的 AI 应用程序提供支持
microsoft/phi-3.5-moe-instruct128K 令牌基于专家混合架构的高级 LLM,可提供计算高效的内容生成
microsoft/kosmos-21,024 令牌突破性的多模态模型,旨在理解和推理图像中的视觉元素。
microsoft/phi-3-vision-128k-instruct128k 令牌从图像中进行高质量推理的尖端开放多模态模型。
microsoft/phi-3.5-vision-instruct128k 令牌从图像中进行高质量推理的尖端开放多模态模型。
databricks/dbrx-instruct12k 令牌一款通用 LLM,在语言理解、编码和 RAG 方面具有最先进的性能。
snowflake/arctic1,024 令牌为专注于 SQL 生成和编码的企业应用程序提供高效推理。
aisingapore/sea-lion-7b-instruct4,096 令牌代表和满足东南亚语言和文化多样性的 LLM
ibm/granite-8b-code-instruct4,096 令牌用于代码生成、完成、解释和多轮转换的软件编程 LLM。
ibm/granite-34b-code-instruct8,192 令牌用于代码生成、完成、解释和多轮转换的软件编程 LLM。
ibm/granite-3.0-8b-instruct4,096 令牌支持 RAG、摘要、分类、代码和代理 AI 的高级小型语言模型
ibm/granite-3.0-3b-a800m-instruct4,096 令牌用于 RAG、摘要、实体提取和分类的高效专家混合模型
mediatek/breeze-7b-instruct4,096 令牌创建模仿真实世界数据特征的各种合成数据。
upstage/solar-10.7b-instruct4,096 令牌擅长 NLP 任务,尤其是在指令遵循、推理和数学方面。
writer/palmyra-med-70b-32k32k 令牌用于医疗领域中准确、上下文相关响应的领先 LLM。
writer/palmyra-med-70b32k 令牌用于医疗领域中准确、上下文相关响应的领先 LLM。
writer/palmyra-fin-70b-32k32k 令牌专门用于财务分析、报告和数据处理的 LLM
01-ai/yi-large32k 令牌经过英语和中文训练的强大模型,可用于聊天机器人和创意写作等多种任务。
deepseek-ai/deepseek-coder-6.7b-instruct2k 令牌强大的编码模型,在代码生成、完成和填充方面提供高级功能
rakuten/rakutenai-7b-instruct1,024 令牌先进的最新 LLM,具有语言理解、卓越推理和文本生成。
rakuten/rakutenai-7b-chat1,024 令牌先进的最新 LLM,具有语言理解、卓越推理和文本生成。
baichuan-inc/baichuan2-13b-chat4,096 令牌支持中英文聊天、编码、数学、指令遵循、解决测验
NVIDIA NIM 使您能够使用 WSL2(适用于 Linux 的 Windows 子系统)在 Windows 机器上本地运行强大的 LLM。这种方法允许您利用 NVIDIA GPU 进行私有、安全且经济高效的 AI 推理,而无需依赖云服务。非常适合需要数据隐私或离线能力的开发、测试或生产场景。以下是设置本地 NVIDIA NIM 模型的逐步指南:
  1. 按照NVIDIA 网站上的安装说明进行操作
  2. 安装本地模型。对于 Llama 3.1-8b,请遵循说明
  3. 配置您的 crewai 本地模型
代码
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="https://: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
        )

    # ...
在您的 .env 文件中设置以下环境变量
代码
GROQ_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="groq/llama-3.2-90b-text-preview",
    temperature=0.7
)
模型上下文窗口最适合
Llama 3.1 70B/8B131,072 令牌高性能、大上下文任务
Llama 3.2 系列8,192 令牌通用任务
Mixtral 8x7B32,768 令牌平衡性能和上下文
在您的 .env 文件中设置以下环境变量
代码
# 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 项目中的示例用法
代码
llm = LLM(
    model="watsonx/meta-llama/llama-3-1-70b-instruct",
    base_url="https://api.watsonx.ai/v1"
)
  1. 安装 Ollama: ollama.ai
  2. 运行模型: ollama run llama3
  3. 配置
代码
llm = LLM(
    model="ollama/llama3:70b",
    base_url="https://:11434"
)
在您的 .env 文件中设置以下环境变量
代码
FIREWORKS_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct",
    temperature=0.7
)
在您的 .env 文件中设置以下环境变量
代码
PERPLEXITY_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="llama-3.1-sonar-large-128k-online",
    base_url="https://api.perplexity.ai/"
)
在您的 .env 文件中设置以下环境变量
代码
HF_TOKEN=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="huggingface/meta-llama/Meta-Llama-3.1-8B-Instruct"
)
在您的 .env 文件中设置以下环境变量
代码
SAMBANOVA_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="sambanova/Meta-Llama-3.1-8B-Instruct",
    temperature=0.7
)
模型上下文窗口最适合
Llama 3.1 70B/8B高达 131,072 令牌高性能、大上下文任务
Llama 3.1 405B8,192 令牌高性能和输出质量
Llama 3.2 系列8,192 令牌通用、多模态任务
Llama 3.3 70B高达 131,072 令牌高性能和输出质量
Qwen2 系列8,192 令牌高性能和输出质量
在您的 .env 文件中设置以下环境变量
代码
# Required
CEREBRAS_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="cerebras/llama3.1-70b",
    temperature=0.7,
    max_tokens=8192
)
Cerebras 特点
  • 快速推理速度
  • 有竞争力的价格
  • 速度和质量的良好平衡
  • 支持长上下文窗口
在您的 .env 文件中设置以下环境变量
代码
OPENROUTER_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="openrouter/deepseek/deepseek-r1",
    base_url="https://openrouter.ai/api/v1",
    api_key=OPENROUTER_API_KEY
)
Open Router 模型
  • openrouter/deepseek/deepseek-r1
  • openrouter/deepseek/deepseek-chat
在您的 .env 文件中设置以下环境变量
代码
NEBIUS_API_KEY=<your-api-key>
CrewAI 项目中的示例用法
代码
llm = LLM(
    model="nebius/Qwen/Qwen3-30B-A3B"
)
Nebius AI Studio 特点
  • 大量开源模型
  • 更高的速率限制
  • 有竞争力的价格
  • 速度和质量的良好平衡

流式响应

CrewAI 支持 LLM 的流式响应,允许您的应用程序在生成输出时实时接收和处理。
  • 基本设置
  • 事件处理
  • 代理和任务跟踪
通过在初始化 LLM 时将 stream 参数设置为 True 来启用流式传输
from crewai import LLM

# Create an LLM with streaming enabled
llm = LLM(
    model="openai/gpt-4o",
    stream=True  # Enable streaming
)
启用流式传输后,响应会以块的形式生成,从而创建更灵敏的用户体验。

结构化 LLM 调用

CrewAI 支持通过允许您使用 Pydantic 模型定义 response_format 来从 LLM 调用中获取结构化响应。这使得框架能够自动解析和验证输出,从而更容易将响应集成到您的应用程序中,而无需手动后处理。 例如,您可以定义一个 Pydantic 模型来表示预期的响应结构,并在实例化 LLM 时将其作为 response_format 传递。然后,该模型将用于将 LLM 输出转换为结构化的 Python 对象。
代码
from crewai import LLM

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


llm = LLM(model="gpt-4o", 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 包含智能上下文管理功能
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="gpt-4",
    max_tokens=4000,  # Limit response length
)
上下文管理最佳实践
  1. 选择具有适当上下文窗口的模型
  2. 尽可能预处理长输入
  3. 对大型文档使用分块
  4. 监控令牌使用以优化成本
1

令牌使用优化

为您的任务选择合适的上下文窗口
  • 小型任务(最多 4K 令牌):标准模型
  • 中型任务(4K-32K 之间):增强模型
  • 大型任务(超过 32K):大型上下文模型
# Configure model with appropriate settings
llm = LLM(
    model="openai/gpt-4-turbo-preview",
    temperature=0.7,    # Adjust based on task
    max_tokens=4096,    # Set based on output needs
    timeout=300        # Longer timeout for complex tasks
)
  • 对于事实性响应,降低温度(0.1 到 0.3)
  • 对于创意任务,提高温度(0.7 到 0.9)
2

最佳实践

  1. 监控令牌使用情况
  2. 实施速率限制
  3. 尽可能使用缓存
  4. 设置适当的 max_tokens 限制
请记住定期监控您的令牌使用情况,并根据需要调整配置以优化成本和性能。
CrewAI 内部使用原生 SDK 进行 LLM 调用,这允许您删除特定用例不需要的额外参数。这有助于简化您的代码并降低 LLM 配置的复杂性。例如,如果您不需要发送 stop 参数,您可以简单地在 LLM 调用中将其省略
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
基本用法
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()
)
重要说明
  • 两种方法都必须返回接收到的对象或对象类型。
  • 修改接收到的对象可能会导致意外行为或应用程序崩溃。
  • 并非所有提供商都支持拦截器 - 请查看上面支持的提供商列表
拦截器在传输层运行。这对于以下情况特别有用
  • 消息转换和过滤
  • 调试 API 交互

常见问题及解决方案

  • 身份验证
  • 模型名称
  • 上下文长度
大多数身份验证问题可以通过检查 API 密钥格式和环境变量名称来解决。
# OpenAI
OPENAI_API_KEY=sk-...

# Anthropic
ANTHROPIC_API_KEY=sk-ant-...