跳转至

团队

什么是团队?

在crewAI中,团队代表一组协作的代理,共同完成一系列任务。每个团队定义了任务执行、代理协作和整体工作流程的策略。

团队属性

属性 参数 描述
任务 tasks 分配给团队的任务列表。
代理 agents 属于该团队的代理列表。
流程 (可选) process 团队遵循的流程(例如,顺序、层次)。默认为sequential
详细 (可选) verbose 执行期间的日志详细级别。默认为False
管理LLM (可选) manager_llm 在层次流程中,管理代理使用的语言模型。在使用层次流程时必需。
函数调用LLM (可选) function_calling_llm 如果传递,团队将使用此LLM为所有代理进行工具函数调用。每个代理可以有自己的LLM,这将覆盖团队用于函数调用的LLM。
配置 (可选) config 团队的可选配置设置,格式为JsonDict[str, Any]
最大RPM (可选) max_rpm 团队在执行期间遵守的最大每分钟请求量。默认为None
语言 (可选) language 团队使用的语言,默认为英语。
语言文件 (可选) language_file 团队使用的语言文件路径。
内存 (可选) memory 用于存储执行记忆(短期、长期、实体记忆)。默认为False
缓存 (可选) cache 指定是否使用缓存来存储工具执行的结果。默认为True
嵌入器 (可选) embedder 团队使用的嵌入器配置。目前主要用于内存。默认为{"provider": "openai"}
完整输出 (可选) full_output 团队是否应返回包含所有任务输出的完整输出,还是仅返回最终输出。默认为False
步骤回调 (可选) step_callback 每个代理每一步后调用的函数。可用于记录代理的操作或执行其他操作;不会覆盖代理特定的step_callback
任务回调 (可选) task_callback 每个任务完成后调用的函数。用于监控或任务执行后的其他操作。
共享团队 (可选) share_crew 是否希望与crewAI团队共享完整的团队信息和执行,以改进库,并允许我们训练模型。
输出日志文件 (可选) output_log_file 是否希望有一个包含完整团队输出和执行的文件。可以使用True设置,它将默认为当前所在的文件夹,并命名为logs.txt,或者传递一个包含完整路径和文件名的字符串。
管理代理 (可选) manager_agent manager设置一个将用作管理的自定义代理。
管理回调 (可选) manager_callbacks manager_callbacks接受一个回调处理程序列表,在层次流程中使用时由管理代理执行。
提示文件 (可选) prompt_file 团队使用的提示JSON文件路径。
规划 (可选) planning 为团队添加规划能力。在每次团队迭代之前激活,所有团队数据将发送到AgentPlanner,该规划器将规划任务,并将此计划添加到每个任务描述中。
规划LLM (可选) planning_llm 规划过程中AgentPlanner使用的语言模型。

团队最大RPM

max_rpm属性设置了团队可以执行的最大每分钟请求量,以避免速率限制,并且如果设置,将覆盖单个代理的max_rpm设置。

团队输出

理解团队输出

crewAI框架中团队的输出封装在CrewOutput类中。 这个类提供了一种结构化的方式来访问团队执行的结果,包括各种格式,如原始字符串、JSON和Pydantic模型。 CrewOutput包括最终任务输出、令牌使用情况和各个任务输出的结果。

团队输出属性

属性 参数 类型 描述
原始 raw str 团队的原始输出。这是输出的默认格式。
Pydantic pydantic Optional[BaseModel] 表示团队结构化输出的Pydantic模型对象。
JSON字典 json_dict Optional[Dict[str, Any]] 表示团队JSON输出的字典。
任务输出 tasks_output List[TaskOutput] TaskOutput对象列表,每个对象代表团队中一个任务的输出。
令牌使用 token_usage Dict[str, Any] 令牌使用情况的摘要,提供对语言模型执行期间性能的洞察。

团队输出方法和属性

方法/属性 描述
json 如果输出格式为JSON,则返回团队输出的JSON字符串表示。
to_dict 将JSON和Pydantic输出转换为字典。
str 返回团队输出的字符串表示,优先考虑Pydantic,然后是JSON,最后是原始。

访问团队输出

一旦团队执行完毕,其输出可以通过Crew对象的output属性访问。CrewOutput类提供了各种与输出交互和展示的方式。

示例

# 示例团队执行
crew = Crew(
    agents=[research_agent, writer_agent],
    tasks=[research_task, write_article_task],
    verbose=True
)


crew_output = crew.kickoff()

# 访问团队输出
print(f"原始输出: {crew_output.raw}")
if crew_output.json_dict:
    print(f"JSON输出: {json.dumps(crew_output.json_dict, indent=2)}")
if crew_output.pydantic:
    print(f"Pydantic输出: {crew_output.pydantic}")
print(f"任务输出: {crew_output.tasks_output}")
print(f"令牌使用: {crew_output.token_usage}")

内存利用

团队可以利用内存(短期、长期和实体内存)来增强其执行和学习能力。这个特性允许团队存储和回忆执行记忆,帮助决策和任务执行策略。

缓存利用

缓存可以用来存储工具执行的结果,通过减少重复执行相同任务的需要,使过程更加高效。

团队使用指标

团队执行后,您可以通过usage_metrics属性查看所有任务执行的语言模型(LLM)使用指标。这提供了对操作效率和改进领域的洞察。

# 访问团队的用量指标
crew = Crew(agents=[agent1, agent2], tasks=[task1, task2])
crew.kickoff()
print(crew.usage_metrics)

团队执行流程

  • 顺序流程:任务按顺序执行,允许线性工作流程。
  • 层次流程:管理代理协调团队,委派任务并在继续之前验证结果。注意:对于此流程,需要manager_llmmanager_agent,这对于验证流程至关重要。

启动团队

一旦您的团队组建完成,使用kickoff()方法启动工作流程。这将根据定义的流程开始执行过程。

# 开始团队的任务执行
result = my_crew.kickoff()
print(result)

启动团队的不同方式

一旦您的团队组建完成,使用适当的启动方法启动工作流程。CrewAI提供了多种方法来更好地控制启动过程:kickoff()kickoff_for_each()kickoff_async()kickoff_for_each_async()

  • kickoff():根据定义的流程开始执行过程。
  • kickoff_for_each():为每个代理单独执行任务。
  • kickoff_async():异步启动工作流程。
  • kickoff_for_each_async():异步地为每个代理单独执行任务。
# 开始团队的任务执行
result = my_crew.kickoff()
print(result)

# 使用kickoff_for_each的示例
inputs_array = [{'topic': 'AI in healthcare'}, {'topic': 'AI in finance'}]
results = my_crew.kickoff_for_each(inputs=inputs_array)
for result in results:
    print(result)

# 使用kickoff_async的示例
inputs = {'topic': 'AI in healthcare'}
async_result = my_crew.kickoff_async(inputs=inputs)
print(async_result)

# 使用kickoff_for_each_async的示例
inputs_array = [{'topic': 'AI in healthcare'}, {'topic': 'AI in finance'}]
async_results = my_crew.kickoff_for_each_async(inputs=inputs_array)
for async_result in async_results:
    print(async_result)

这些方法提供了管理团队内任务执行方式的灵活性,允许根据您的需求进行同步和异步工作流程。

从特定任务重新播放

您现在可以使用我们的CLI命令replay从特定任务重新播放。

CrewAI中的重新播放功能允许您使用命令行界面(CLI)从特定任务重新播放。通过运行命令crewai replay -t <task_id>,您可以指定重新播放过程的task_id

启动将为您保存最新的启动返回的任务输出,以便您能够从特定任务重新播放。

使用CLI从特定任务重新播放

要使用重新播放功能,请按照以下步骤操作:

  1. 打开您的终端或命令提示符。
  2. 导航到您的CrewAI项目所在的目录。
  3. 运行以下命令:

要查看最新的启动任务ID,请使用:

crewai log-tasks-outputs

然后,要从特定任务重新播放,请使用:

crewai replay -t <task_id>

这些命令允许您从最新的启动任务重新播放,同时保留先前执行任务的上下文。