跳转至

大型语言模型(LLMs)在crewAI中的应用

引言

大型语言模型(LLMs)是crewAI框架中智能代理的支柱。本指南将帮助您理解、配置和优化LLM在您的crewAI项目中的使用。

目录

关键概念

  • LLM:大型语言模型,为代理智能提供动力的AI
  • 代理:使用LLM执行任务的crewAI实体
  • 提供商:提供LLM能力的服务(例如,OpenAI,Anthropic,Ollama,更多提供商

为代理配置LLMs

crewAI为设置LLMs提供了灵活的选项:

1. 默认配置

默认情况下,crewAI使用gpt-4o-mini模型。如果没有指定LLM,它将使用环境变量: - OPENAI_MODEL_NAME(如果未设置,默认为"gpt-4o-mini") - OPENAI_API_BASE - OPENAI_API_KEY

2. 字符串标识符

agent = Agent(llm="gpt-4o", ...)

3. LLM实例

from crewai import LLM

llm = LLM(model="gpt-4", temperature=0.7)
agent = Agent(llm=llm, ...)

4. 自定义LLM对象

传递来自其他库的自定义LLM实现或对象。

连接到OpenAI兼容的LLMs

您可以使用环境变量或通过在LLM类上设置特定属性来连接到OpenAI兼容的LLMs:

  1. 使用环境变量:

    import os
    
    os.environ["OPENAI_API_KEY"] = "your-api-key"
    os.environ["OPENAI_API_BASE"] = "https://api.your-provider.com/v1"
    

  2. 使用LLM类属性:

    llm = LLM(
        model="custom-model-name",
        api_key="your-api-key",
        base_url="https://api.your-provider.com/v1"
    )
    agent = Agent(llm=llm, ...)
    

LLM配置选项

在为您的代理配置LLM时,您可以访问广泛的参数:

参数 类型 描述
model str 要使用的模型名称(例如,"gpt-4","gpt-3.5-turbo","ollama/llama3.1",更多提供商)
timeout float, int 等待响应的最大时间(以秒为单位)
temperature float 控制输出随机性(0.0到1.0)
top_p float 控制输出多样性(0.0到1.0)
n int 要生成的完成数量
stop str, List[str] 停止生成的序列
max_tokens int 要生成的最大令牌数
presence_penalty float 根据新令牌在文本中的出现情况对其进行惩罚
frequency_penalty float 根据新令牌在文本中的频率对其进行惩罚
logit_bias Dict[int, float] 修改指定令牌出现在完成中的可能性
response_format Dict[str, Any] 指定响应的格式(例如,{"type": "json_object"})
seed int 设置随机种子以获得确定性结果
logprobs bool 是否返回输出令牌的对数概率
top_logprobs int 返回对数概率的最可能令牌数量
base_url str API端点的基础URL
api_version str 要使用的API版本
api_key str 用于身份验证的API密钥

示例:

llm = LLM(
    model="gpt-4",
    temperature=0.8,
    max_tokens=150,
    top_p=0.9,
    frequency_penalty=0.1,
    presence_penalty=0.1,
    stop=["END"],
    seed=42,
    base_url="https://api.openai.com/v1",
    api_key="your-api-key-here"
)
agent = Agent(llm=llm, ...)

使用Ollama(本地LLMs)

crewAI支持使用Ollama运行开源模型:

  1. 安装Ollama:ollama.ai
  2. 运行模型:ollama run llama2
3. 配置代理
```python
agent = Agent(
    llm=LLM(model="ollama/llama3.1", base_url="http://localhost:11434"),
    ...
)

更改基础API URL

您可以通过设置base_url参数来更改任何LLM提供商的基础API URL:

llm = LLM(
    model="custom-model-name",
    base_url="https://api.your-provider.com/v1",
    api_key="your-api-key"
)
agent = Agent(llm=llm, ...)

这在处理OpenAI兼容的API或当您需要为所选提供商指定不同端点时特别有用。

最佳实践

  1. 选择合适的模型:平衡能力和成本。
  2. 优化提示:清晰、简洁的指令提高输出质量。
  3. 管理令牌:监控和限制令牌使用以提高效率。
  4. 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
  5. 实现错误处理:优雅地处理API错误和速率限制。

故障排除

  • API错误:检查您的API密钥、网络连接和速率限制。
  • 意外输出:优化您的提示并调整温度或top_p。
  • 性能问题:考虑使用更强大的模型或优化您的查询。
  • 超时错误:增加timeout参数或优化您的输入。 | timeout | float, int | 等待响应的最大时间(以秒为单位) | | temperature | float | 控制输出随机性(0.0到1.0) | | top_p | float | 控制输出多样性(0.0到1.0) | | n | int | 要生成的完成数量 | | stop | str, List[str] | 停止生成的序列 | | max_tokens | int | 要生成的最大令牌数 | | presence_penalty | float | 根据新令牌在文本中的出现情况对其进行惩罚 | | frequency_penalty | float | 根据新令牌在文本中的频率对其进行惩罚 | | logit_bias | Dict[int, float] | 修改指定令牌出现在完成中的可能性 | | response_format | Dict[str, Any] | 指定响应的格式(例如,{"type": "json_object"}) | | seed | int | 设置随机种子以获得确定性结果 | | logprobs | bool | 是否返回输出令牌的对数概率 | | top_logprobs | int | 返回对数概率的最可能令牌数量 | | base_url | str | API端点的基础URL | | api_version | str | 要使用的API版本 | | api_key | str | 用于身份验证的API密钥 |

示例:

llm = LLM(
    model="gpt-4",
    temperature=0.8,
    max_tokens=150,
    top_p=0.9,
    frequency_penalty=0.1,
    presence_penalty=0.1,
    stop=["END"],
    seed=42,
    base_url="https://api.openai.com/v1",
    api_key="your-api-key-here"
)
agent = Agent(llm=llm, ...)

使用Ollama(本地LLMs)

crewAI支持使用Ollama运行开源模型:

  1. 安装Ollama:ollama.ai
  2. 运行模型:ollama run llama2
3. 配置代理
```python
agent = Agent(
    llm=LLM(model="ollama/llama3.1", base_url="http://localhost:11434"),
    ...
)

更改基础API URL

您可以通过设置base_url参数来更改任何LLM提供商的基础API URL:

llm = LLM(
    model="custom-model-name",
    base_url="https://api.your-provider.com/v1",
    api_key="your-api-key"
)
agent = Agent(llm=llm, ...)

这在处理OpenAI兼容的API或当您需要为所选提供商指定不同端点时特别有用。

最佳实践

  1. 选择合适的模型:平衡能力和成本。
  2. 优化提示:清晰、简洁的指令提高输出质量。
  3. 管理令牌:监控和限制令牌使用以提高效率。
  4. 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
  5. 实现错误处理:优雅地处理API错误和速率限制。

故障排除

  • API错误:检查您的API密钥、网络连接和速率限制。
  • 意外输出:优化您的提示并调整温度或top_p。
  • 性能问题:考虑使用更强大的模型或优化您的查询。
  • 超时错误:增加timeout参数或优化您的输入。

使用Ollama(本地LLMs)

crewAI支持使用Ollama运行开源模型:

  1. 安装Ollama:ollama.ai
  2. 运行模型:ollama run llama2
3. 配置代理
```python
agent = Agent(
    llm=LLM(model="ollama/llama3.1", base_url="http://localhost:11434"),
    ...
)

更改基础API URL

您可以通过设置base_url参数来更改任何LLM提供商的基础API URL:

llm = LLM(
    model="custom-model-name",
    base_url="https://api.your-provider.com/v1",
    api_key="your-api-key"
)
agent = Agent(llm=llm, ...)

这在处理OpenAI兼容的API或当您需要为所选提供商指定不同端点时特别有用。

最佳实践

  1. 选择合适的模型:平衡能力和成本。
  2. 优化提示:清晰、简洁的指令提高输出质量。
  3. 管理令牌:监控和限制令牌使用以提高效率。
  4. 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
  5. 实现错误处理:优雅地处理API错误和速率限制。

故障排除

  • API错误:检查您的API密钥、网络连接和速率限制。
  • 意外输出:优化您的提示并调整温度或top_p。
  • 性能问题:考虑使用更强大的模型或优化您的查询。
  • 超时错误:增加timeout参数或优化您的输入。

更改基础API URL

您可以通过设置base_url参数来更改任何LLM提供商的基础API URL:

llm = LLM(
    model="custom-model-name",
    base_url="https://api.your-provider.com/v1",
    api_key="your-api-key"
)
agent = Agent(llm=llm, ...)

这在处理OpenAI兼容的API或当您需要为所选提供商指定不同端点时特别有用。

最佳实践

  1. 选择合适的模型:平衡能力和成本。
  2. 优化提示:清晰、简洁的指令提高输出质量。
  3. 管理令牌:监控和限制令牌使用以提高效率。
  4. 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
  5. 实现错误处理:优雅地处理API错误和速率限制。

故障排除

  • API错误:检查您的API密钥、网络连接和速率限制。
  • 意外输出:优化您的提示并调整温度或top_p。
  • 性能问题:考虑使用更强大的模型或优化您的查询。
  • 超时错误:增加timeout参数或优化您的输入。