CrewAI Agents
什么是代理(Agent)?
!!! note "什么是代理(Agent)?" 代理是一个自主单元,其编程目的是:
- 执行任务
- 做出决策
- 与其他代理进行通信
可以将代理看作团队的一员,具有特定的技能和特定的工作任务。代理可以担任不同的角色,如“研究员”、“撰稿人”或“客户支持”,每个角色都为团队的整体目标做出贡献。
代理属性
属性 | 描述 |
---|---|
角色 | 定义代理在团队中的功能。它决定了代理最适合执行的任务类型。 |
目标 | 代理力图实现的个人目标。它指导了代理的决策过程。 |
背景故事 | 为代理的角色和目标提供背景信息,丰富了互动和协作动态。 |
LLM (可选) | 代表将运行代理的语言模型。它会动态地从OPENAI_MODEL_NAME 环境变量中获取模型名称,如果未指定,则默认为"gpt-4"。 |
工具 (可选) | 代理可以使用的能力或功能集。 预计是与代理执行环境兼容的自定义类的实例。工具的默认值为一个空列表。 |
功能调用LLM (可选) | 指定将处理该代理的工具调用的语言模型,覆盖了传递的船员功能调用LLM。默认值为None 。 |
最大迭代次数 (可选) | 代理在被强制给出最佳答案之前可以执行的最大迭代次数。默认值为25 。 |
最大RPM (可选) | 代理每分钟可以执行的最大请求数,以避免速率限制。这是可选的,可以不指定,默认值为None 。 |
最大执行时间 (可选) | 代理执行任务的最大执行时间。这是可选的,可以不指定,默认值为None ,表示没有最大执行时间。 |
详细模式 (可选) | 将此设置为True 会配置内部记录器以提供详细的执行日志,有助于调试和监控。默认值为False 。 |
允许委派 (可选) | 代理可以相互委派任务或问题,确保每个任务由最合适的代理处理。默认值为True 。 |
步骤回调 (可选) | 在代理的每个步骤之后调用的函数。这可用于记录代理的操作或执行其他操作。它将覆盖船员step_callback 。 |
缓存 (可选) | 指示代理是否 应使用工具使用的缓存。默认值为True 。 |
创建代理
!!! note "代理交互"
代理可以使用crewAI内置的委派和通信机制相互交互。这允许团队内进行动态任务管理和问题解决。
创建一个代理,通常会使用所需属性初始化 Agent
类的一个实例。以下是一个概念示例,包括所有属性:
# 示例:创建一个带有所有属性的代理
from crewai import Agent
agent = Agent(
role='数据分析师',
goal='提取可操作的见解',
backstory="""你是一家大公司的数据分析师。
你负责分析数据并为业务提供见解。
你目前正在进行一个项目,分析我们营销活动的表现。""",
tools=[my_tool1, my_tool2], # 可选,默认为空列表
llm=my_llm, # 可选
function_calling_llm=my_llm, # 可选
max_iter=15, # 可选
max_rpm=None, # 可选
verbose=True, # 可选
allow_delegation=True, # 可选
step_callback=my_intermediate_step_callback, # 可选
cache=True # 可选
)
结论
代理是 CrewAI 框架的构建模块。通过了解如何定义和与代理交互,您可以创建利用协作智能的复杂AI系统。