AI Agent白手起家76:使用 CrewAI 搭建多智能体营销策略生成器
纲要项目介绍与核心概念CrewAI多智能体框架的特点营销策略生成器的目标项目结构总览智能体与任务配置四个智能体的角色与目标五个任务的流水线与输出数据模型定义营销创意模型策略与文案模型运行模式选择顺序执行 vs. 层级管理完整可运行代码依赖与入口脚本YAML 配置文件执行流程与日志解读效果展示与改进方向总结项目介绍CrewAI是一个基于角色的多智能体编排框架通过 YAML 配置即可快速构建协作型 AI 应用。它抽象了智能体Agent、任务Task、流程Process等组件让开发者无需深入底层 Prompt 拼接就能搭建出工业级的多智能体系统。本文将以一个营销策略生成器为例展示如何利用CrewAI让多个智能体协作完成市场分析、策略制定、创意生成和文案输出。整个项目采用配置驱动的方式新手也能在几分钟内跑通。项目结构项目使用poetry管理依赖核心代码与配置文件分离结构清晰marketing-post/ ├── pyproject.toml ├── README.md ├── .env └── src ├── main.py └── marketing_post_crew ├── __init__.py ├── crew.py ├── config │ ├── agents.yaml │ └── tasks.yaml └── models.py.env存放OPENAI_API_KEY等密钥main.py程序入口调用Crew并传递输入crew.py定义MarketingPostCrew类组装智能体和任务config/agents.yaml、config/tasks.yaml智能体与任务的配置文件models.pyPydantic 数据模型控制结构化输出智能体与任务配置智能体定义agents.yaml在本案例中定义了四个智能体分别扮演不同角色首席市场分析师market_analyst深入分析产品与竞争对手输出洞察报告。首席营销策略师marketing_strategist综合分析师结果制定完整营销策略。创意内容创作者creative_content_creator根据策略生成高影响力的广告文案与活动创意。首席创意总监chief_creative_director审核、优化团队产出保证质量与目标一致性。示例配置片段chief_market_analyst:role:首席市场分析师goal:对产品和竞争对手进行出色分析提供深入见解以指导营销策略backstory:作为一家顶级数字营销公司的首席市场分析师你专长于剖析在线商业环境 能从海量信息中提炼出影响竞争格局的关键洞察。chief_marketing_strategist:role:首席营销策略师goal:综合产品分析中的精彩见解制定卓越的营销策略backstory:你是一家领先数字营销机构的首席策略师以打造推动成功的高度定制化策略而闻名。creative_content_creator:role:创意内容创作者goal:开发引人入胜的社交媒体内容重点创作高影响力的广告文案backstory:作为顶级营销机构的创意内容创作者你擅长用叙事与受众共鸣 产出能在嘈杂信息流中脱颖而出的作品。chief_creative_director:role:首席创意总监goal:监督团队工作确保产出最佳且与产品目标一致必要时提出澄清或追加任务backstory:你是一位资深创意总监对视觉与文字有极高审美标准 并能精准把控品牌调性与市场目标之间的平衡。任务定义tasks.yaml共设计五个任务形成从研究到最终文案的完整流水线research_task在指定行业背景下对客户及竞争对手进行彻底研究输出包含人口偏好、市场定位和受众参与度的完整报告。project_understanding_task理解项目细节与目标受众收集额外信息输出详细摘要与受众画像。marketing_strategy_task制定详细营销策略涵盖目标、关键信息、建议战术、渠道和 KPI。campaign_ideation_task基于策略生成五个营销活动创意每个附带简短描述与预期效果。copywriting_task为每个创意活动撰写最终文案包括标题和正文。每个任务都通过expected_output规定了输出格式配合结构化数据模型确保结果可直接解析。数据模型设计为了让智能体的输出结构化且可控我们定义了三个 Pydantic 模型frompydanticimportBaseModel,FieldfromtypingimportList,OptionalclassCampaignIdea(BaseModel):name:strField(...,description活动名称)description:strField(...,description活动简短描述)target_audience:strField(...,description目标受众)channel:strField(...,description营销渠道如抖音、公众号、小红书)expected_impact:strField(...,description预期影响)classMarketingStrategy(BaseModel):strategy_name:strField(...,description策略名称)tactics:List[str]Field(...,description战术列表)channels:List[str]Field(...,description营销渠道)kpis:List[str]Field(...,description关键绩效指标)target_audience:strField(...,description目标受众描述)key_message:strField(...,description关键信息)classAdCopy(BaseModel):title:strField(...,description文案标题)body:strField(...,description文案正文)campaign_name:Optional[str]Field(None,description所属活动名称)这些模型会绑定到对应任务的output_pydantic字段CrewAI内部会引导大模型输出符合 Schema 的 JSON 结果。运行模式选择CrewAI支持两种任务执行流程模式Process 参数说明顺序执行Process.sequential任务一个接一个线性执行上一个任务的输出作为下一个的输入层级管理Process.hierarchical指定一个 Manager LLM 或 Manager Agent 进行任务委派、审核与调度类似“主管-成员”结构层级模式更适合需要全局把控与质量审查的场景。本案例使用层级模式并设置一个manager_llm负责分配任务给各个专家角色。分配任务分配任务分配任务审核反馈报告策略文档创意/文案最终审核Manager LLM首席市场分析师首席营销策略师创意内容创作者首席创意总监完整可运行代码下面提供一个可以直接运行的 Python 项目只需配置好 API Key 并安装依赖即可执行。环境准备新建项目目录创建pyproject.toml或用requirements.txt[tool.poetry] name marketing-post-crew version 0.1.0 description Multi-agent marketing strategy generator with CrewAI authors [Your Name youexample.com] [tool.poetry.dependencies] python ^3.10 crewai 0.28.0 python-dotenv ^1.0.0 [build-system] requires [poetry-core] build-backend poetry.core.masonry.api运行poetry install安装依赖。然后创建.env文件OPENAI_API_KEYyour-api-key-here主入口脚本src/main.pyimportosfromdotenvimportload_dotenvfrommarketing_post_crew.crewimportMarketingPostCrew load_dotenv()defrun():inputs{product_name:智能会议记录仪,industry:企业服务 / SaaS,target_audience:中小企业主、远程办公团队、会议频繁的项目经理,competitors:Notion AI, Otter.ai, Fireflies.ai,unique_selling_point:本地化多语言会议纪要支持定制化模板与私有部署}crewMarketingPostCrew().crew()resultcrew.kickoff(inputsinputs)print(\n 最终输出 \n)print(result)if__name____main__:run()Crew 组装src/marketing_post_crew/crew.pyfromcrewaiimportAgent,Task,Crew,Processfromcrewai.projectimportCrewBase,agent,task,crewfrommarketing_post_crew.modelsimportCampaignIdea,MarketingStrategy,AdCopyimportosCrewBaseclassMarketingPostCrew:agents_configos.path.join(os.path.dirname(__file__),config,agents.yaml)tasks_configos.path.join(os.path.dirname(__file__),config,tasks.yaml)# -------------------- Agents --------------------agentdefchief_market_analyst(self)-Agent:returnAgent(configself.agents_config[chief_market_analyst],verboseTrue,allow_delegationFalse)agentdefchief_marketing_strategist(self)-Agent:returnAgent(configself.agents_config[chief_marketing_strategist],verboseTrue,allow_delegationFalse)agentdefcreative_content_creator(self)-Agent:returnAgent(configself.agents_config[creative_content_creator],verboseTrue,allow_delegationFalse)agentdefchief_creative_director(self)-Agent:returnAgent(configself.agents_config[chief_creative_director],verboseTrue,allow_delegationTrue)# -------------------- Tasks --------------------taskdefresearch_task(self)-Task:returnTask(configself.tasks_config[research_task],output_fileoutput/research_report.md)taskdefproject_understanding_task(self)-Task:returnTask(configself.tasks_config[project_understanding_task],output_fileoutput/project_summary.md)taskdefmarketing_strategy_task(self)-Task:returnTask(configself.tasks_config[marketing_strategy_task],output_pydanticMarketingStrategy,output_fileoutput/strategy.json)taskdefcampaign_ideation_task(self)-Task:returnTask(configself.tasks_config[campaign_ideation_task],output_pydanticCampaignIdea,output_fileoutput/campaign_ideas.json)taskdefcopywriting_task(self)-Task:returnTask(configself.tasks_config[copywriting_task],output_pydanticAdCopy,output_fileoutput/ad_copies.json)crewdefcrew(self)-Crew:returnCrew(agents[self.chief_market_analyst(),self.chief_marketing_strategist(),self.creative_content_creator(),self.chief_creative_director()],tasks[self.research_task(),self.project_understanding_task(),self.marketing_strategy_task(),self.campaign_ideation_task(),self.copywriting_task()],processProcess.hierarchical,manager_llmself.chief_market_analyst().llm,# 使用默认配置的 LLM 作为管理者verboseTrue)任务配置文件src/marketing_post_crew/config/tasks.yamlresearch_task:description:在 {industry} 背景下对产品 {product_name} 及其竞争对手 {competitors} 进行全面研究。 分析市场趋势、用户偏好、竞争对手的优势与弱点。expected_output:一份包含客户分析、竞争对手对比、市场定位建议、人口统计偏好和受众参与度的完整报告。project_understanding_task:description:审查项目材料深刻理解产品 {product_name} 的独特卖点 ({unique_selling_point}) 及目标受众 ({target_audience})。 收集任何缺失的信息确保所有细节明确。expected_output:项目详细摘要与目标受众画像包括需求、痛点、获取信息的渠道偏好。marketing_strategy_task:description:基于研究结果和受众画像为 {product_name} 制定一套完整的营销策略。 需包含目标、关键信息、建议战术、营销渠道和 KPI 指标。expected_output:结构化的营销策略文档符合 MarketingStrategy 数据模型。campaign_ideation_task:description:根据营销策略发散思维生成 5 个具体营销活动创意。 每个创意应包含名称、简短描述、目标受众、渠道和预期效果。expected_output:5 个 CampaignIdea 对象的列表。copywriting_task:description:为每个营销活动撰写最终投放文案包括吸引人的标题和正文。expected_output:AdCopy 对象列表每条对应一个活动。运行结果示例执行poetry run python src/main.py后控制台会输出各智能体的思考过程和最终生成的 JSON 文件。日志清楚地展示了 Manager LLM 如何将任务委派给不同专家以及各智能体之间的数据流转。最终output/目录下会生成research_report.md市场研究报告project_summary.md项目摘要与受众画像strategy.json符合MarketingStrategy模型的策略文档campaign_ideas.json五个活动创意ad_copies.json对应的广告文案整个流程在几分钟内完成产出的营销材料可直接供人类团队评审、修改后使用。总结本文基于CrewAI构建了一个完整的多智能体营销策略生成器从市场分析到最终文案输出全由多个 AI 智能体协同完成。通过 YAML 配置与 Pydantic 数据模型开发者可以快速定义角色、任务和输出格式极大地降低了多智能体应用的门槛。层级管理模式让任务分配与质量控制更加自动化适合真实商业场景。本文覆盖了原文中提到的项目结构、智能体配置、任务流程、运行模式以及最终的输出展示并补充了代码示例。