AI Agent白手起家74: CrewAI 核心组件详解——从智能体到知识库

发布时间:2026/10/6 13:54:13

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 配置与代码定义两种方式、结构化输出、依赖关系、嵌入模型切换等技术要点并提供了示例代码。
延伸阅读

更多相关文章

2026/10/5 5:04:28

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

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

2026/9/26 22:26:04

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

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

2026/9/22 14:57:48

ARM编译器内部错误0xb3b91b的深度调试与解决方案

1. 项目概述:一次由编译器内部错误引发的深度调试之旅在嵌入式开发领域,Keil MDK(Microcontroller Development Kit)几乎是每一位ARM Cortex-M系列开发者绕不开的工具。它集成了强大的ARM编译器(ARM Compiler&#xff…

2026/10/6 13:54:13

glibc线程源码解析:pthread_create、线程栈与同步原语深度拆解

1. 为什么还要专门看glibc的线程源码 写Linux多线程程序这么多年,我最早的阶段就是拿 pthread_create 、 pthread_mutex_lock 当黑盒用,参数照抄,能跑就行。直到有一次线上服务出现诡异卡顿——线程创建特别慢、锁竞争一上去就吞吐暴跌&a…

2026/10/6 13:54:13

TPOT自动化建模:遗传编程如何进化出最优机器学习流水线

1. TPOT 是干什么的:我的自动化建模工具箱早几年做机器学习项目,最磨人的不是调模型本身,而是把数据预处理、特征工程、模型选择、超参搜索这一整条流水线串起来。白天在 Kaggle 上刷榜,晚上还得手动 grid search,一套…

2026/10/6 13:54:13

RC延时电路原理、计算与选型实战指南

1. RC延时电路的核心原理与设计思路拆解RC延时电路是电子工程里最基础也最常用的电路模块之一,从单片机上电复位延时、电源时序控制,到LED渐亮渐灭、蜂鸣器软启动,到处都能看到它的身影。它的核心就两个元件:一个电阻R和一个电容C…

2026/10/6 13:54:13

上拉电阻与下拉电阻原理详解:从IO口悬空到IIC、Type-C实战选型

1. 从一个让人抓狂的现象说起 刚入行那会儿,我最怕调试按键电路。明明程序里写了按下按键读低电平,结果按键没按下去,单片机读回来的还是低电平,程序跟死机了一样。拿万用表一量,IO口电压在1.2V左右晃悠,既…

2026/10/6 13:54:13

考研数学公式PDF:用Pandoc+LaTeX做一份能查能跳转的公式手册

简介:一份面向考研数学备考的公式速查PDF,聚焦高等数学、线性代数与概率论三大模块,适合需要系统梳理公式、强化计算训练或考前快速回顾的考生使用。压缩包内为单一PDF文档,大小约10MB,共50页,排版紧凑&…

2026/10/6 13:49:12

vSAN 8 超融合实战:OSA与ESA架构选型及存储策略指南

简介:VMware vSAN 8.0 U1 Express Storage Architecture Deep Dive是一份面向虚拟化管理员、存储工程师和数据中心架构师的深度技术资料,聚焦vSAN 8在软件定义数据中心中的设计与落地,帮助读者厘清超融合存储的部署前提、网络规划及故障处理路…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

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

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑