Skip to content

协作与规划

一群孤立的天才并不能组成一个团队。CrewAI的力量在于Agent如何互动、共享上下文并规划其执行。在本章中,我们将深入探讨你的AI团队的社交动态。

默认情况下,CrewAI中的Agent会感知到它们的同伴。当allow_delegation设置为True时(许多配置的默认值,但建议明确控制),Agent可以将任务传递给彼此,或向团队内的专家提出特定问题。

例如,一个“研究员”Agent可能意识到它缺乏特定的法律上下文。如果团队中存在一个“法律顾问”Agent,研究员可以直接查询顾问,而无需人工干预。

researcher = Agent(
role="Researcher",
goal="Find data",
backstory="...",
allow_delegation=True # 允许向其他Agent寻求帮助
)
writer = Agent(
role="Writer",
goal="Write report",
backstory="...",
allow_delegation=False # 此Agent亲自执行任务
)

在匆忙执行之前,通常最好三思而后行。CrewAI引入了一个规划功能,在Crew生命周期开始时增加了一个特殊步骤。

当Crew配置中启用planning=True时,CrewAI使用LLM来消化所有任务描述和Agent角色。然后,它制定一个分步计划,该计划被添加到每个Agent的上下文中。这确保所有Agent在开始其各自任务之前都在全局策略上保持一致。

my_crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
planning=True, # 启用预执行策略阶段
planning_llm=ChatOpenAI(model="gpt-4o") # 可选:指定一个规划模型
)

理解Agent做出决策的原因对于调试和信任至关重要。CrewAI通过其ReAct(推理和行动)实现提供了强大的推理能力。

为了检查这个过程,你可以使用verbose标志。这会输出Agent的内心独白:思想(它想做什么)、行动(工具使用)和观察(工具的结果)。

对于长时间运行的进程,盯着控制台是不切实际的。你可以将此推理持久化到文件,以便后续审计。

my_crew = Crew(
agents=[...],
tasks=[...],
verbose=True,
output_log_file="crew_execution_logs.txt"
)

审查这些日志可以帮助你发现Agent反复尝试相同的失败工具输入,或Agent幻觉出某种工具能力的实例,从而帮助你完善你的backstory或tool定义。