跳到主要内容

LLM-Connections

将 CrewAI 连接到 LLMs

!!! note "默认 LLM" CrewAI 默认使用 OpenAI 的 GPT-4 模型进行语言处理。您可以配置您的代理以使用不同的模型或 API。本指南展示了如何通过环境变量和直接实例化将您的代理连接到各种 LLMs。

CrewAI 提供了连接到各种 LLMs 的灵活性,包括通过 Ollama 连接到本地模型以及与 Azure 等不同 API 的兼容性。它与所有 LangChain LLM 组件兼容,为定制的 AI 解决方案提供了多样化的集成。

CrewAI 代理概述

Agent 类是在 CrewAI 中实现 AI 解决方案的基石。以下是反映最新代码库更改的更新概述:

  • 属性:
    • role: 定义解决方案中代理的角色。
    • goal: 指定代理的目标。
    • backstory: 为代理提供背景故事。
    • llm: 指示代理使用的大型语言模型。默认情况下,它使用环境变量 "OPENAI_MODEL_NAME" 中定义的 GPT-4 模型。
    • function_calling_llm 可选: 将 ReAct CrewAI 代理转换为函数调用代理。
    • max_iter: 代理执行任务的最大迭代次数,默认为 15。
    • memory: 使代理能够在执行期间和跨执行保留信息。默认为 False
    • max_rpm: 代理执行应遵守的每分钟请求的最大数量。可选。
    • verbose: 启用对代理执行的详细日志记录。默认为 False
    • allow_delegation: 允许代理将任务委派给其他代理。默认为 True
    • tools: 指定代理用于任务执行的工具。可选。
    • step_callback: 提供在每个步骤后执行的回调函数。可选。
    • cache: 确定代理是否应使用工具使用的缓存。默认为 True
# 必需
os.environ["OPENAI_MODEL_NAME"]="gpt-4-0125-preview"

# 代理将自动使用环境变量中定义的模型
example_agent = Agent(
role='本地专家',
goal='提供有关城市的见解',
backstory="一位知识渊博的当地向导。",
verbose=True,
memory=True
)

Ollama 集成

Ollama 是用于本地 LLM 集成的首选方案,提供定制和隐私优势。要将 Ollama 与 CrewAI 集成,设置如下适当的环境变量。

设置 Ollama

  • 环境变量配置: 要集成 Ollama,设置以下环境变量:
OPENAI_API_BASE='http://localhost:11434/v1'
OPENAI_MODEL_NAME='openhermes' # 根据可用模型进行调整
OPENAI_API_KEY=''

Ollama 集成(例如,用于本地使用 Llama 2)

  1. 下载 Ollama
  2. 设置好 Ollama 后,通过在终端中输入以下命令来拉取 Llama2 ollama pull llama2
  3. 在项目目录中创建一个类似下面的 ModelFile。
FROM llama2

# 设置参数

PARAMETER temperature 0.8
PARAMETER stop Result

# 设置自定义系统消息以指定聊天助手的行为

# 现在先留空。

SYSTEM """"""
  1. 创建一个脚本来获取基础模型,我们的情况下是 llama2,并在此基础上创建一个上述 ModelFile 的模型。PS:这将是一个 ".sh" 文件。
#!/bin/zsh

# 变量
model_name="llama2"
custom_model_name="crewai-llama2"

#获取基础模型
ollama pull $model_name

#创建模型文件
ollama create $custom_model_name -f ./Llama2ModelFile
  1. 进入脚本文件和 ModelFile 所在的目录,并运行脚本。
  2. 享受由 CrewAI 优秀代理提供支持的免费 Llama2 模型。
from crewai import Agent, Task, Crew
from langchain_openai import ChatOpenAI
import os
os.environ["OPENAI_API_KEY"] = "NA"

llm = ChatOpenAI(
model = "crewai-llama2",
base_url = "http://localhost:11434/v1")

general_agent = Agent(role = "数学教授",
goal = """为询问数学问题的学生提供解决方案并给出答案。""",
backstory = """你是一位出色的数学教授,喜欢以每个人都能理解的方式解决数学问题。""",
allow_delegation = False,
verbose = True,
llm = llm)
task = Task (description="""3 + 5等于多少""",
agent = general_agent,
expected_output="一个数值答案。")

crew = Crew(
agents=[general_agent],
tasks=[task],
verbose=2
)

result = crew.kickoff()

print(result)

HuggingFace 集成

有几种不同的方式可以使用 HuggingFace 来托管您的 LLM。

您自己的 HuggingFace 端点

from langchain_community.llms import HuggingFaceEndpoint

llm = HuggingFaceEndpoint(
endpoint_url="<YOUR_ENDPOINT_URL_HERE>",
huggingfacehub_api_token="<HF_TOKEN_HERE>",
task="text-generation",
max_new_tokens=512
)

agent = Agent(
role="HuggingFace Agent",
goal="Generate text using HuggingFace",
backstory="A diligent explorer of GitHub docs.",
llm=llm
)

从 HuggingFaceHub 端点

from langchain_community.llms import HuggingFaceHub

llm = HuggingFaceHub(
repo_id="HuggingFaceH4/zephyr-7b-beta",
huggingfacehub_api_token="<HF_TOKEN_HERE>",
task="text-generation",
)

OpenAI 兼容的 API 端点

通过环境变量无缝切换 API 和模型,支持 FastChat、LM Studio 和 Mistral AI 等平台。

配置示例

FastChat

OPENAI_API_BASE="http://localhost:8001/v1"
OPENAI_MODEL_NAME='oh-2.5m7b-q51'
OPENAI_API_KEY=NA

LM Studio

启动 LM Studio,转到 Server 选项卡。然后从下拉菜单中选择一个模型,等待加载。加载完成后,点击绿色的 Start Server 按钮,使用显示的 URL、端口和 API 密钥(您可以修改它们)。以下是截至 LM Studio 0.2.19 的默认设置示例:

OPENAI_API_BASE="http://localhost:1234/v1"
OPENAI_API_KEY="lm-studio"

Mistral API

OPENAI_API_KEY=your-mistral-api-key
OPENAI_API_BASE=https://api.mistral.ai/v1
OPENAI_MODEL_NAME="mistral-small"

Solar

from langchain_community.chat_models.solar import SolarChat
# 初始化语言模型
os.environ["SOLAR_API_KEY"] = "your-solar-api-key"
llm = SolarChat(max_tokens=1024)

免费开发者 API 密钥在此处获取:https://console.upstage.ai/services/solar
Langchain 示例:https://github.com/langchain-ai/langchain/pull/18556

text-gen-web-ui

OPENAI_API_BASE=http://localhost:5000/v1
OPENAI_MODEL_NAME=NA
OPENAI_API_KEY=NA

Cohere

from langchain_community.chat_models import ChatCohere
# 初始化语言模型
os.environ["COHERE_API_KEY"] = "your-cohere-api-key"
llm = ChatCohere()

免费开发者 API 密钥在此处获取:https://cohere.com/
Langchain 文档:https://python.langchain.com/docs/integrations/chat/cohere

Azure Open AI 配置

要进行 Azure OpenAI API 集成,请设置以下环境变量:

AZURE_OPENAI_VERSION="2022-12-01"
AZURE_OPENAI_DEPLOYMENT=""
AZURE_OPENAI_ENDPOINT=""
AZURE_OPENAI_KEY=""

带有 Azure LLM 的示例 Agent

from dotenv import load_dotenv
from crewai import Agent
from langchain_openai import AzureChatOpenAI

load_dotenv()

azure_llm = AzureChatOpenAI(
azure_endpoint=os.environ.get("AZURE_OPENAI_ENDPOINT"),
api_key=os.environ.get("AZURE_OPENAI_KEY")
)

azure_agent = Agent(
role='Example Agent',
goal='Demonstrate custom LLM configuration',
backstory='A diligent explorer of GitHub docs.',
llm=azure_llm
)

结论

将 CrewAI 与不同的 LLM 集成,扩展了框架的多样性,为各种领域和平台提供了定制、高效的 AI 解决方案。