任务:定义 Task
任务:定义任务
Section titled “任务:定义任务”没有任务的智能体,就像等待释放的势能。在 CrewAI 中,**任务(Task)**是智能体必须完成的特定工作分配。创建清晰、可操作的任务是获得良好结果的最重要因素。
一个任务由描述“做什么”和“如何做”的两个主要组成部分构成。
1. 描述(Description)
Section titled “1. 描述(Description)”这是发送给智能体的提示。它应该具有描述性且清晰明了。它可以包含在运行时填充的变量占位符(如 {topic})。
2. 预期输出(Expected Output)
Section titled “2. 预期输出(Expected Output)”这是一个改变游戏规则的功能。通过明确定义输出应该是什么样子,你可以减少 LLM 响应的变化性。你想要一个 JSON 对象?一个项目列表?一个 Python 脚本?
from crewai import Task
reporting_task = Task( description="Analyze the dataset and find anomalies.", expected_output="A bulleted list of top 3 anomalies with a risk score (1-10) for each.", agent=analyst_agent)上下文与依赖关系
Section titled “上下文与依赖关系”在实际工作流中,任务 B 通常依赖于任务 A 的结果。CrewAI 在顺序流程中会自动处理这一点,但你也可以明确指定。
context 参数允许你将先前任务的输出作为当前任务的输入。智能体就是通过传递任务输出来“相互交流”的。
write_report = Task( description="Write a summary based on the analysis.", expected_output="A text summary.", agent=writer_agent, context=[analysis_task] # 明确等待 analysis_task 完成)有时,任务之间没有依赖关系。如果你的智能体需要抓取 5 个不同的网站,逐一执行会很慢。你可以设置 async_execution=True。
标记为异步的任务会并行运行。如果后续任务需要其输出作为上下文,工作组将自动等待所有异步任务完成。
输出 Pydantic/JSON
Section titled “输出 Pydantic/JSON”对于严格的结构化数据,你可以使用 output_pydantic 或 output_json 属性。这会强制智能体返回符合 schema 验证的数据,这对于将 AI 集成到传统软件管道中至关重要。