大型语言模型(LLMs)在crewAI中的应用¶
引言¶
大型语言模型(LLMs)是crewAI框架中智能代理的支柱。本指南将帮助您理解、配置和优化LLM在您的crewAI项目中的使用。
目录¶
- 关键概念
- 为代理配置LLMs
- 1. 默认配置
- 2. 字符串标识符
- 3. LLM实例
- 4. 自定义LLM对象
- 连接到OpenAI兼容的LLMs
- LLM配置选项
- 使用Ollama(本地LLMs)
- 更改基础API URL
- 最佳实践
- 故障排除
关键概念¶
- 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. 字符串标识符¶
3. LLM实例¶
4. 自定义LLM对象¶
传递来自其他库的自定义LLM实现或对象。
连接到OpenAI兼容的LLMs¶
您可以使用环境变量或通过在LLM类上设置特定属性来连接到OpenAI兼容的LLMs:
-
使用环境变量:
-
使用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运行开源模型:
- 安装Ollama:ollama.ai
- 运行模型:
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或当您需要为所选提供商指定不同端点时特别有用。
最佳实践¶
- 选择合适的模型:平衡能力和成本。
- 优化提示:清晰、简洁的指令提高输出质量。
- 管理令牌:监控和限制令牌使用以提高效率。
- 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
- 实现错误处理:优雅地处理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运行开源模型:
- 安装Ollama:ollama.ai
- 运行模型:
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或当您需要为所选提供商指定不同端点时特别有用。
最佳实践¶
- 选择合适的模型:平衡能力和成本。
- 优化提示:清晰、简洁的指令提高输出质量。
- 管理令牌:监控和限制令牌使用以提高效率。
- 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
- 实现错误处理:优雅地处理API错误和速率限制。
故障排除¶
- API错误:检查您的API密钥、网络连接和速率限制。
- 意外输出:优化您的提示并调整温度或top_p。
- 性能问题:考虑使用更强大的模型或优化您的查询。
- 超时错误:增加
timeout参数或优化您的输入。
使用Ollama(本地LLMs)¶
crewAI支持使用Ollama运行开源模型:
- 安装Ollama:ollama.ai
- 运行模型:
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或当您需要为所选提供商指定不同端点时特别有用。
最佳实践¶
- 选择合适的模型:平衡能力和成本。
- 优化提示:清晰、简洁的指令提高输出质量。
- 管理令牌:监控和限制令牌使用以提高效率。
- 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
- 实现错误处理:优雅地处理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或当您需要为所选提供商指定不同端点时特别有用。
最佳实践¶
- 选择合适的模型:平衡能力和成本。
- 优化提示:清晰、简洁的指令提高输出质量。
- 管理令牌:监控和限制令牌使用以提高效率。
- 使用适当的温度:事实性任务用较低值,创造性任务用较高值。
- 实现错误处理:优雅地处理API错误和速率限制。
故障排除¶
- API错误:检查您的API密钥、网络连接和速率限制。
- 意外输出:优化您的提示并调整温度或top_p。
- 性能问题:考虑使用更强大的模型或优化您的查询。
- 超时错误:增加
timeout参数或优化您的输入。