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

什么是大型语言模型?

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

大型语言模型基础知识

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

上下文窗口

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

温度

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

提供商选择

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

设置您的大型语言模型

在 CrewAI 代码中有不同的位置可以指定要使用的模型。一旦指定了使用的模型,您需要为使用的每个模型提供商提供配置(例如 API 密钥)。有关您的提供商,请参阅提供商配置示例部分。

最简单的入门方式。直接在您的环境中设置模型,通过 .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 支持多种大型语言模型提供商,每个提供商都提供独特的功能、身份验证方法和模型能力。在本节中,您将找到详细的示例,帮助您选择、配置和优化最适合您项目需求的大型语言模型。

流式响应

CrewAI 支持大型语言模型的流式响应,使您的应用程序能够实时接收和处理生成的输出。

通过在初始化大型语言模型时将 stream 参数设置为 True 来启用流式处理

from crewai import LLM

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

启用流式处理后,响应会以生成时的块形式传递,从而创建更响应迅速的用户体验。

结构化大型语言模型调用

CrewAI 支持从大型语言模型调用中获取结构化响应,允许您使用 Pydantic 模型定义 response_format。这使框架能够自动解析和验证输出,从而更轻松地将响应集成到您的应用程序中,无需手动后处理。

例如,您可以定义一个 Pydantic 模型来表示预期的响应结构,并在实例化大型语言模型时将其作为 response_format 传递。然后将使用该模型将大型语言模型的输出转换为结构化的 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')

高级功能和优化

了解如何充分利用您的大型语言模型配置

常见问题和解决方案

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

# OpenAI
OPENAI_API_KEY=sk-...

# Anthropic
ANTHROPIC_API_KEY=sk-ant-...