怎么在CrewAI中定义Agent角色与Task任务

作者:玄鸟

时间:2026-11-08

浏览:106

本文详解CrewAI核心组件Agent和Task的代码编写与参数配置,通过明确role、goal、backstory及description、expected_output等字段,帮助开发者构建结构清晰、执行高效的智能体工作流。

文章目录

在开发 CrewAI 项目时,初学者常将 Agent 和 Task 的配置混为一谈,写成冗长的提示词。虽然代码能运行,但输出结果往往偏离预期。若能厘清两者的分工,便能显著提升效率:Agent 负责界定“由谁执行”及其“专业特长”,而 Task 则明确“具体做什么”以及“交付物的标准”。

先给 Agent 一个清楚的角色

Agent 的 role 用于确立职责定位,goal 指明其致力达成的目标,backstory 则补充相关的工作背景。这三个字段无需辞藻华丽,关键在于逻辑自洽。例如,针对资料调研场景,可将角色设为“技术资料研究员”,目标定为“提炼关键信息并甄别事实与推测”,背景则强调服务对象为开发者且优先引用可验证来源。如此,模型在执行任务时便能依据身份和目标自动适配最佳工作模式。

from crewai import Agent

researcher = Agent(
    role="技术资料研究员",
    goal="整理主题要点,并区分事实与推测",
    backstory="你为开发者整理清楚、可核对的技术资料。",
)

怎么在CrewAI中定义Agent角色与Task任务

Agent 的职责、目标与工作背景共同构成角色设定。

初期配置只需聚焦上述核心字段,工具调用或模型选择等可选参数可在确有需求时再行添加。若 role 定义过于宽泛,而 goal 又指向截然不同的工作内容,这种方向性的冲突很难仅靠后续的任务描述来弥补。

用 Task 说清本次要交付什么

Task 通过 description 描述具体待办事项,并利用 expected_output 约定完成后的成果形态。相较于模糊的“研究一下 CrewAI”,将其转化为限定主题范围、明确对比维度及规定要点数量的可执行指令更为稳妥。最后,需通过 agent 指定负责该任务的执行者:

from crewai import Task

research_task = Task(
    description="梳理 CrewAI 中 Agent 与 Task 的职责差异,并给出配置建议。",
    expected_output="一份简洁说明,包含两者职责和一个配置示例。",
    agent=researcher,
)

怎么在CrewAI中定义Agent角色与Task任务

Task 写明要做的工作、预期结果和负责的 Agent。

expected_output 旨在设定交付验收标准,而非简单复述任务内容。例如,“输出一份简明文档,列出职责差异并附带可读代码片段”比笼统的“完成调研”更易于评估结果是否符合预期。任务描述越具体,Agent 就越无需猜测用户的潜在需求。

把 Agent 和 Task 放进 Crew

完成对象定义后,即可创建 Crew 实例,将 Agent 和 Task 分别填入对应列表。针对此单任务示例,可使用 Process.sequential 确保按序执行,最终调用 kickoff() 启动流程。完整代码如下:

from crewai import Agent, Crew, Process, Task

researcher = Agent(
    role="技术资料研究员",
    goal="整理主题要点,并区分事实与推测",
    backstory="你为开发者整理清楚、可核对的技术资料。",
)

research_task = Task(
    description="梳理 CrewAI 中 Agent 与 Task 的职责差异,并给出配置建议。",
    expected_output="一份简洁说明,包含两者职责和一个配置示例。",
    agent=researcher,
)

crew = Crew(
    agents=[researcher],
    tasks=[research_task],
    process=Process.sequential,
)
result = crew.kickoff()
print(result)

怎么在CrewAI中定义Agent角色与Task任务

Crew 汇总 Agent 与 Task,再启动执行流程。

上述代码展示了各组件间的配置关系:Agent 定义角色属性,Task 明确工作内容与交付标准并绑定执行 Agent,Crew 则负责汇总并启动流程。若后续需增加任务,可按执行顺序将其加入 tasks 列表;当后一任务依赖前一任务的产出时,则需进一步配置 Task 的 context 等依赖参数。建议先从单个 Agent 和 Task 跑通基本结构,再逐步扩展复杂度,这比一开始就堆砌大量角色和选项更利于排查问题。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章