当前位置: 首页 > news >正文

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

纲要

  • 组件概览:AgentTaskCrewFlowKnowledgeMemory
  • Agent:团队中的最小执行单元
    • YAML 配置化定义
    • 纯代码定义
    • 运行代码与工具集成
  • Task:智能体的工作任务
    • 配置与依赖关系
    • 结构化输出
  • Crew:组建专业团队
    • 配置式与代码式两种风格
    • 启动与输出
  • Flow:编排多个团队
    • 基于修饰符的事件驱动
    • 状态管理
  • 知识库与记忆
    • 文本和 URL 加载
    • 嵌入模型切换
    • 短期、长期、实体、情境记忆
  • 完整可运行示例:一个带搜索和报告的团队
  • 总结与相关度说明

组件概览

CrewAI的整个框架围绕六个核心组件展开,它们的分工和层级关系如下表所示:

组件角色类比
Agent执行具体工作的个体员工
Task分配给 Agent 的工作项任务单
Crew管理 Agent 和 Task 的团队小组
Flow编排多个 Crew 的流水线部门协作流程
Knowledge外挂知识库(RAG)参考资料库
Memory短期/长期/实体/情境记忆工作笔记

理解这些组件后,你就能像搭积木一样组装出复杂的多智能体应用。

Agent:团队中的最小执行单元

AgentCrewAI的原子单元,每个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,crew@CrewBaseclassMyCrew:@agentdefresearcher(self)->Agent:returnAgent(config=self.agents_config['researcher'],verbose=True,tools=[search_tool]# 可选:绑定搜索工具)@agentdefreporting_analyst(self)->Agent:returnAgent(config=self.agents_config['reporting_analyst'],verbose=True)

纯代码定义

不使用配置文件,直接在代码中传参:

agent=Agent(role="资深Python开发者",goal="编写高质量、安全的Python代码",backstory="你有十年Python开发经验,熟悉安全编码规范。",allow_code_execution=True,# 允许执行代码code_execution_mode="safe",# 安全沙箱模式tools=[my_tool],memory=True,verbose=True)

两种方式等价,配置式更适合规范化项目,代码式更灵活。

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.md"context:[research_task]# 依赖 research_task 完成后执行

代码中引用:

@taskdefresearch_task(self)->Task:returnTask(config=self.tasks_config['research_task'])@taskdefreporting_task(self)->Task:returnTask(config=self.tasks_config['reporting_task'])

结构化输出

Task支持output_pydanticoutput_json来强制指定输出格式:

frompydanticimportBaseModelclassBlogPost(BaseModel):title:strcontent:strblog_task=Task(description="写一篇关于多智能体架构的博客",agent=writer,expected_output="结构化的博客文章",output_pydantic=BlogPost)

执行后,task.output.pydantic将返回一个BlogPost实例。

Crew:组建专业团队

CrewAgentTask组合成一个可执行的工作单元,并指定执行策略(顺序或层次化)。

配置式组合

@crewdefcrew(self)->Crew:returnCrew(agents=[self.researcher(),self.reporting_analyst()],tasks=[self.research_task(),self.reporting_task()],process=Process.sequential,# 顺序执行verbose=True,memory=True,# 开启记忆knowledge_sources=[...]# 挂载知识库)

代码式组合

不依赖配置文件:

crew=Crew(agents=[agent1,agent2],tasks=[task1,task2],process=Process.sequential,verbose=True)result=crew.kickoff()print(result)

Flow:编排多个团队

Flow用于串联多个Crew,形成更复杂的业务流程。它基于事件和修饰符驱动,类似LangGraph的图结构。

fromcrewai.flowimportFlow,start,listenclassCityFactFlow(Flow):@start()defgenerate_city(self):city="北京"# 模拟随机生成self.state["city"]=cityreturncity@listen(generate_city)defgenerate_fact(self,city):# 根据城市生成有趣事实returnf"{city}是中国的首都,拥有超过3000年的历史。"flow=CityFactFlow()result=flow.kickoff()

@start标记入口节点,@listen标记监听其他节点的输出,自动建立依赖。

知识库与记忆

知识库

CrewAI将 RAG 封装为高级接口,支持文本字符串和 URL 两种源。

fromcrewai.knowledge.source.string_knowledge_sourceimportStringKnowledgeSource content="Tommy住在北京,今年25岁。"source=StringKnowledgeSource(content=content)crew=Crew(agents=[qa_agent],tasks=[qa_task],knowledge_sources=[source],embedder={"provider":"openai","config":{"model":"text-embedding-3-small","api_key":"your-api-key"}})result=crew.kickoff()

URL 源类似,使用CrewDoclingSource并传入 URL 列表。注意默认嵌入模型为 OpenAI,如需使用其他模型(如 Ollama),须修改embedder配置。

记忆

Crew中开启memory=True即可激活四种记忆类型:

记忆类型作用
短期记忆当前对话上下文
长期记忆跨会话持久化存储
实体记忆自动抽取人物、地点等实体
情境记忆维护交互的连贯性

底层存储可通过memory_config配置,例如使用 SQLite 存储长期记忆。

完整可运行示例:带搜索的研究团队

下面构建一个完整的“新闻研究助手”团队,它先搜索最新动态,再生成分析报告。

环境准备

pipinstallcrewai crewai-tools python-dotenv

.env配置

OPENAI_API_KEY=sk-xxxx SERPAPI_API_KEY=your-serpapi-key

代码research_crew.py

importosfromdotenvimportload_dotenvfromcrewaiimportAgent,Task,Crew,Processfromcrewai_toolsimportSerperDevTool load_dotenv()# 1. 搜索工具search_tool=SerperDevTool()# 2. 定义 Agentresearcher=Agent(role="信息检索专家",goal="查找关于指定主题的最新新闻和信息",backstory="你擅长使用搜索引擎,能快速找到高质量的信息来源。",tools=[search_tool],verbose=True,allow_delegation=False)analyst=Agent(role="分析报告撰写人",goal="基于搜索到的信息,撰写一份专业分析报告",backstory="你善于提炼关键信息,并用清晰的结构呈现。",verbose=True,allow_delegation=False)# 3. 定义 Tasksearch_task=Task(description="搜索关于'{topic}'的最新动态,找到至少5条相关信息。",agent=researcher,expected_output="包含5条以上新闻标题和摘要的列表")write_task=Task(description="根据搜索到的信息,写一份关于'{topic}'的300字分析报告。",agent=analyst,expected_output="一份结构完整的分析报告",context=[search_task])# 4. 组建团队crew=Crew(agents=[researcher,analyst],tasks=[search_task,write_task],process=Process.sequential,verbose=True)# 5. 执行result=crew.kickoff(inputs={"topic":"2024人工智能发展趋势"})print("\n===== 最终输出 =====\n")print(result)

执行python research_crew.py,控制台会依次展示搜索和报告生成的过程,最终输出一份分析报告。

总结

CrewAI通过高度封装的组件体系,将多智能体开发简化为“配置角色、分配任务、组建团队、编排流程”四个步骤。与LangGraph相比,它的学习曲线更平滑,特别适合快速构建原型和业务流程自动化。但当需要深度定制底层行为时,LangGraph的细粒度控制仍是不可替代的。两者可以互补使用。

本文覆盖了 CrewAI 的 Agent、Task、Crew、Flow、知识库、记忆等所有核心组件,包括 YAML 配置与代码定义两种方式、结构化输出、依赖关系、嵌入模型切换等技术要点,并提供了示例代码。

http://www.jsqmd.com/news/1400996/

相关文章:

  • Claude Code Hook机制:从AI助手到团队工程化基础设施的进阶实践
  • 安防监控YOLO全栈方案:人员入侵检测+行为分析+跟踪算法一体化实现
  • 春秋云镜靶场漏洞复现:CVE-2022-2073 Grav CMS Twig `system` 过滤器 RCE
  • 人生代码 | 第4关:输入要节制 -- 节奏失控,努力白忙
  • YOLOv8 八类人脸表情识别全栈工程|8038 张 VOC/YOLO 数据集、PyQt5 精美 GUI、ONNX 量化推理、全套训练评估曲线落地
  • 基于 Spring Boot + Vue3 的校园管理系统
  • Python字符串操作全解析:从基础增删改查到高效编程实践
  • LVS负载均衡彻底搞懂:三种工作模式原理与DR模式实战踩坑全记录
  • 阿里云Elasticsearch 9.4 Agent Builder:构建智能体,重塑搜索驱动型应用开发
  • 破解物理AI技术困局(33):TVA达成意图预判与主动配合
  • Token钱包下载APP代码开发流程
  • YOLOv8 飞鸟智能预警全栈工程|单类别 VOC/YOLO 航拍数据集、PyQt5 精美 GUI、ONNX 量化推理、全套训练评估曲线落地
  • 蓝速科技可移动多媒体智慧讲台:分散场地下的灵活选型实测
  • Spring Boot WebClient 从入门到精通:非阻塞HTTP客户端实战指南
  • Kimi LeetCode 3910. 统计节点和为偶数的连通子图 Java实现
  • 随手拍也能变成杂志大片:最近值得玩的 9 个照片处理 Skill
  • 【寄电瓶车到外省哪个物流便宜?2026价格对比与推荐,看完不再踩坑】 - 快递物流资讯
  • 换模小车,工厂注塑压铸模具移位简易高效设备 - 优企甄选
  • 春秋云镜靶场漏洞复现:CVE-2022-1014 WP Contacts Manager 未认证 SQL 注入
  • 第5章,[Win32 章节] :边框绘制函数(四)
  • HTX火币钱包官方网站代码全流程
  • 还在为Wand专业版续费?试试这款开源增强器,解锁Pro还送手机遥控
  • 构建可控AI Agent:从ReAct架构到安全实践
  • 小帅VXhook框架
  • Hydro SPJ 配置:告别答案唯一!
  • 春秋云镜靶场漏洞复现:CVE-2022-0948 Order Listener for WooCommerce REST SQL 注入
  • DBeaver数据库管理工具:一站式跨数据库连接与SQL编辑实战指南
  • 朝闻通品牌传播有哪些优势?全域媒体资源与全链条服务详解
  • 从Kimi暂停订阅看AI大模型推理的算力瓶颈与优化策略
  • 液压夹具工业应用,成型机床精准夹紧固定设备解析 - 优企甄选