AI Agent白手起家74: CrewAI 核心组件详解——从智能体到知识库
纲要组件概览Agent、Task、Crew、Flow、Knowledge、MemoryAgent团队中的最小执行单元YAML 配置化定义纯代码定义运行代码与工具集成Task智能体的工作任务配置与依赖关系结构化输出Crew组建专业团队配置式与代码式两种风格启动与输出Flow编排多个团队基于修饰符的事件驱动状态管理知识库与记忆文本和 URL 加载嵌入模型切换短期、长期、实体、情境记忆完整可运行示例一个带搜索和报告的团队总结与相关度说明组件概览CrewAI的整个框架围绕六个核心组件展开它们的分工和层级关系如下表所示组件角色类比Agent执行具体工作的个体员工Task分配给 Agent 的工作项任务单Crew管理 Agent 和 Task 的团队小组Flow编排多个 Crew 的流水线部门协作流程Knowledge外挂知识库RAG参考资料库Memory短期/长期/实体/情境记忆工作笔记理解这些组件后你就能像搭积木一样组装出复杂的多智能体应用。Agent团队中的最小执行单元Agent是CrewAI的原子单元每个Agent拥有独立的角色、目标、背景故事可以绑定工具、记忆和特定的大语言模型。CrewAI提供了两种定义方式YAML 配置和纯代码。YAML 配置式定义在src/config/agents.yaml中声明researcher:role:高级数据研究员goal:发掘某一话题领域的前沿发展backstory:你是一名经验丰富的研究员擅长发现最新信息并以清晰简洁的方式呈现。reporting_analyst:role:报告分析师goal:基于数据分析和研究发现创建详细报告backstory:你是一位一丝不苟的分析师能够将复杂数据转化为清晰简洁的报告。代码中通过agent修饰符引用fromcrewaiimportAgent,Crew,Task,Processfromcrewai.projectimportCrewBase,agent,task,crewCrewBaseclassMyCrew:agentdefresearcher(self)-Agent:returnAgent(configself.agents_config[researcher],verboseTrue,tools[search_tool]# 可选绑定搜索工具)agentdefreporting_analyst(self)-Agent:returnAgent(configself.agents_config[reporting_analyst],verboseTrue)纯代码定义不使用配置文件直接在代码中传参agentAgent(role资深Python开发者,goal编写高质量、安全的Python代码,backstory你有十年Python开发经验熟悉安全编码规范。,allow_code_executionTrue,# 允许执行代码code_execution_modesafe,# 安全沙箱模式tools[my_tool],memoryTrue,verboseTrue)两种方式等价配置式更适合规范化项目代码式更灵活。Task智能体的工作任务每个Task描述一个具体的工作项支持依赖关系和结构化输出。YAML 配置式定义在tasks.yaml中声明research_task:description:对{topic}进行深入研究找出有趣且相关的信息。当前年份是2025年。expected_output:包含10个要点的列表列出关于{topic}的相关信息agent:researcherreporting_task:description:基于研究结果创建一份详细报告。expected_output:一份完整的Markdown报告agent:reporting_analystoutput_file:report.mdcontext:[research_task]# 依赖 research_task 完成后执行代码中引用taskdefresearch_task(self)-Task:returnTask(configself.tasks_config[research_task])taskdefreporting_task(self)-Task:returnTask(configself.tasks_config[reporting_task])结构化输出Task支持output_pydantic或output_json来强制指定输出格式frompydanticimportBaseModelclassBlogPost(BaseModel):title:strcontent:strblog_taskTask(description写一篇关于多智能体架构的博客,agentwriter,expected_output结构化的博客文章,output_pydanticBlogPost)执行后task.output.pydantic将返回一个BlogPost实例。Crew组建专业团队Crew把Agent和Task组合成一个可执行的工作单元并指定执行策略顺序或层次化。配置式组合crewdefcrew(self)-Crew:returnCrew(agents[self.researcher(),self.reporting_analyst()],tasks[self.research_task(),self.reporting_task()],processProcess.sequential,# 顺序执行verboseTrue,memoryTrue,# 开启记忆knowledge_sources[...]# 挂载知识库)代码式组合不依赖配置文件crewCrew(agents[agent1,agent2],tasks[task1,task2],processProcess.sequential,verboseTrue)resultcrew.kickoff()print(result)Flow编排多个团队Flow用于串联多个Crew形成更复杂的业务流程。它基于事件和修饰符驱动类似LangGraph的图结构。fromcrewai.flowimportFlow,start,listenclassCityFactFlow(Flow):start()defgenerate_city(self):city北京# 模拟随机生成self.state[city]cityreturncitylisten(generate_city)defgenerate_fact(self,city):# 根据城市生成有趣事实returnf{city}是中国的首都拥有超过3000年的历史。flowCityFactFlow()resultflow.kickoff()start标记入口节点listen标记监听其他节点的输出自动建立依赖。知识库与记忆知识库CrewAI将 RAG 封装为高级接口支持文本字符串和 URL 两种源。fromcrewai.knowledge.source.string_knowledge_sourceimportStringKnowledgeSource contentTommy住在北京今年25岁。sourceStringKnowledgeSource(contentcontent)crewCrew(agents[qa_agent],tasks[qa_task],knowledge_sources[source],embedder{provider:openai,config:{model:text-embedding-3-small,api_key:your-api-key}})resultcrew.kickoff()URL 源类似使用CrewDoclingSource并传入 URL 列表。注意默认嵌入模型为 OpenAI如需使用其他模型如 Ollama须修改embedder配置。记忆在Crew中开启memoryTrue即可激活四种记忆类型记忆类型作用短期记忆当前对话上下文长期记忆跨会话持久化存储实体记忆自动抽取人物、地点等实体情境记忆维护交互的连贯性底层存储可通过memory_config配置例如使用 SQLite 存储长期记忆。完整可运行示例带搜索的研究团队下面构建一个完整的“新闻研究助手”团队它先搜索最新动态再生成分析报告。环境准备pipinstallcrewai crewai-tools python-dotenv.env配置OPENAI_API_KEYsk-xxxx SERPAPI_API_KEYyour-serpapi-key代码research_crew.pyimportosfromdotenvimportload_dotenvfromcrewaiimportAgent,Task,Crew,Processfromcrewai_toolsimportSerperDevTool load_dotenv()# 1. 搜索工具search_toolSerperDevTool()# 2. 定义 AgentresearcherAgent(role信息检索专家,goal查找关于指定主题的最新新闻和信息,backstory你擅长使用搜索引擎能快速找到高质量的信息来源。,tools[search_tool],verboseTrue,allow_delegationFalse)analystAgent(role分析报告撰写人,goal基于搜索到的信息撰写一份专业分析报告,backstory你善于提炼关键信息并用清晰的结构呈现。,verboseTrue,allow_delegationFalse)# 3. 定义 Tasksearch_taskTask(description搜索关于{topic}的最新动态找到至少5条相关信息。,agentresearcher,expected_output包含5条以上新闻标题和摘要的列表)write_taskTask(description根据搜索到的信息写一份关于{topic}的300字分析报告。,agentanalyst,expected_output一份结构完整的分析报告,context[search_task])# 4. 组建团队crewCrew(agents[researcher,analyst],tasks[search_task,write_task],processProcess.sequential,verboseTrue)# 5. 执行resultcrew.kickoff(inputs{topic:2024人工智能发展趋势})print(\n 最终输出 \n)print(result)执行python research_crew.py控制台会依次展示搜索和报告生成的过程最终输出一份分析报告。总结CrewAI通过高度封装的组件体系将多智能体开发简化为“配置角色、分配任务、组建团队、编排流程”四个步骤。与LangGraph相比它的学习曲线更平滑特别适合快速构建原型和业务流程自动化。但当需要深度定制底层行为时LangGraph的细粒度控制仍是不可替代的。两者可以互补使用。本文覆盖了 CrewAI 的 Agent、Task、Crew、Flow、知识库、记忆等所有核心组件包括 YAML 配置与代码定义两种方式、结构化输出、依赖关系、嵌入模型切换等技术要点并提供了示例代码。

相关新闻

AI Agent白手起家75: 使用 CrewAI 构建游戏开发助手

AI Agent白手起家75: 使用 CrewAI 构建游戏开发助手

纲要 项目背景与目标系统架构与流程 团队组成:高级工程师、QA工程师、首席QA工作流:编码 → 审查 → 评估 项目结构核心实现:Agent、Task、Crew 的定义完整可运行示例 纯代码定义,无需外部配置文件生成贪吃蛇游戏 运行与效果展示总…

2026/10/13 2:27:20 阅读更多 →
Grok Bot AI智能体团队:24/7自动化工作流部署与集成实践

Grok Bot AI智能体团队:24/7自动化工作流部署与集成实践

这次我们来看一个名为Grok Bot的 AI 智能体项目。它不是单个聊天机器人,而是一个宣称能 24/7 全天候工作的“AI 智能体团队”。简单来说,你可以把它理解为一套自动化的工作流系统,由多个具备不同技能的 AI 智能体(Agent&#xff0…

2026/10/13 9:49:15 阅读更多 →
10 万亿参数大模型,注定要被关进笼子里

10 万亿参数大模型,注定要被关进笼子里

它能行的善与恶都将超出人类想象。 OpenAI即将发布的GPT-6,传闻称它的参数量高达10万亿。 10万亿是一个非常恐怖的概念。现如今,全球顶尖大模型的参数量都在“万亿”级别。比如阿里的Qwen 3.8为3.5万亿,Kimi K3为2.8万亿,字节内…

2026/10/13 15:36:10 阅读更多 →

最新新闻

OpenFeign 实战指南:从 RestTemplate 到声明式微服务调用

OpenFeign 实战指南:从 RestTemplate 到声明式微服务调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
树形DP入门:从状态定义到子树合并的完整指南

树形DP入门:从状态定义到子树合并的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
软件著作权申请材料模板与源程序格式避坑指南

软件著作权申请材料模板与源程序格式避坑指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
FPGA数字时钟设计:SOPC软核方案快速开发与调试实战

FPGA数字时钟设计:SOPC软核方案快速开发与调试实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
2S电池均衡系统设计:STM32F746ZG与MP2642GR-Z的软硬件实战

2S电池均衡系统设计:STM32F746ZG与MP2642GR-Z的软硬件实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:40:05 阅读更多 →
SpringBoot多模块项目实战:解耦、复用与云原生落地

SpringBoot多模块项目实战:解耦、复用与云原生落地

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 1:39:05 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →