跳到主要内容

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系统。