AI Agent 实战:Python + CrewAI 打造多智能体自动化工作流

在这里插入图片描述

🌸你好呀!我是 lbb小魔仙
🌟 感谢陪伴~ 小白博主在线求友
🌿 跟着小白学Linux/Java/Python
📖 专栏汇总:
《Linux》专栏 | 《Java》专栏 | 《Python》专栏

在这里插入图片描述

在这里插入图片描述

一、引言:多智能体与 CrewAI 核心价值

在AI自动化领域,单一智能体往往受限于角色定位和能力边界,难以高效完成复杂的多步骤任务。而多智能体系统(Multi-Agent System)通过多个具备不同专业能力的智能体协同合作,分工明确、各司其职,可实现“任务拆解-专业执行-结果汇总”的全流程自动化,大幅提升工作效率、降低人工干预成本。

CrewAI 是一款轻量且强大的Python多智能体框架,专为协同工作流设计,其核心特性的优势在于:无需复杂的底层开发,即可快速定义智能体角色、分配任务、设置依赖关系;支持多种大语言模型(LLM)集成(如OpenAI、本地模型);内置任务调度机制,自动处理智能体间的协作与数据流转,让开发者聚焦业务逻辑,快速落地多智能体自动化方案。

本文面向具备基础Python编程能力的开发者,通过“市场调研→内容生成→社交媒体发布”的完整实战示例,手把手教你使用CrewAI构建多智能体自动化工作流,所有代码可直接运行,突出“实战性”与“自动化”核心。

二、实战准备:环境搭建与依赖安装

在开始编码前,需完成环境配置和依赖安装,确保CrewAI及相关组件正常运行。

2.1 环境要求

  • Python 3.8+(推荐3.10版本,兼容性最佳)

  • 网络环境(若使用OpenAI模型,需能访问外网;使用本地模型可离线运行)

  • API密钥(使用OpenAI模型需准备OpenAI API Key;本地模型无需密钥)

2.2 依赖安装

通过pip安装所需依赖包,执行以下命令:

pip install crewai openai python-dotenv  # OpenAI模型依赖
# 若使用本地模型(如Llama 3),需额外安装:
pip install crewai llama-cpp-python

说明:python-dotenv 用于加载环境变量(存储API密钥),避免硬编码密钥导致安全风险。

三、完整实战:构建“市场调研→内容生成→社交媒体发布”工作流

本次实战将构建一个三阶段自动化工作流,涉及3个不同角色的智能体,各智能体协同完成从市场洞察到内容发布的全流程,无需人工干预。具体流程如下:

  1. 研究员(Researcher):负责市场调研,收集指定领域的热点趋势、目标用户需求,输出调研报告;

  2. 文案撰写员(Copywriter):基于调研报告,撰写符合目标人群的推广文案(适配社交媒体场景);

  3. 社交媒体经理(SocialMediaManager):将撰写好的文案,适配不同社交媒体平台(如小红书、微博)的格式,生成可直接发布的内容。

各智能体的协作关系与数据流向,可通过以下Mermaid流程图清晰展示:

输出:市场调研报告

输出:推广文案

输出:各平台发布内容

用户发起任务

研究员Agent

文案撰写员Agent

社交媒体经理Agent

完成自动化发布

3.1 代码实现:定义智能体(Agent)

首先,导入所需模块,加载环境变量(API密钥),然后定义3个不同角色的智能体,每个智能体需指定“角色、目标、背景、工具、LLM”等核心参数。

import os
from dotenv import load_dotenv
from crewai import Agent, Task, Crew
from crewai_tools import SerperDevTool  # 用于市场调研的工具(获取网络数据)
from openai import OpenAI

# 1. 加载环境变量(存储OpenAI API Key)
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

# 2. 定义工具:SerperDevTool用于网络搜索(市场调研需获取最新数据)
search_tool = SerperDevTool(api_key=os.getenv("SERPER_API_KEY"))  # Serper API需单独申请(免费额度足够测试)

# 3. 定义第一个智能体:研究员(负责市场调研)
researcher = Agent(
    role="市场研究员",
    goal="深入调研指定领域的最新热点趋势、目标用户需求,输出结构化调研报告,为文案撰写提供核心依据",
    backstory="你是一名资深市场研究员,擅长通过网络搜索、数据整理,挖掘行业热点和用户痛点,具备极强的信息筛选和总结能力,能快速输出有价值的调研结论。",
    tools=[search_tool],  # 研究员需要使用搜索工具获取外部数据
    llm=client.chat.completions.create,  # 调用OpenAI的LLM
    model="gpt-3.5-turbo",  # 选用gpt-3.5-turbo,兼顾成本和效果
    verbose=True  # 开启详细日志,便于调试
)

# 4. 定义第二个智能体:文案撰写员(负责内容生成)
copywriter = Agent(
    role="文案撰写员",
    goal="基于市场调研报告,撰写贴合目标用户的推广文案,语言生动、有吸引力,适配社交媒体传播场景",
    backstory="你是一名资深社交媒体文案师,擅长结合市场热点和用户需求,撰写接地气、有传播力的文案,熟悉年轻人的语言风格,能快速将调研信息转化为优质文案。",
    llm=client.chat.completions.create,
    model="gpt-3.5-turbo",
    verbose=True
)

# 5. 定义第三个智能体:社交媒体经理(负责内容发布适配)
social_media_manager = Agent(
    role="社交媒体经理",
    goal="将推广文案适配小红书、微博两个平台的格式要求,生成可直接复制发布的内容(含标题、话题标签、排版)",
    backstory="你是一名经验丰富的社交媒体运营经理,熟悉小红书、微博的平台规则和用户喜好,能根据文案内容优化标题、添加合适的话题标签,适配平台排版风格。",
    llm=client.chat.completions.create,
    model="gpt-3.5-turbo",
    verbose=True
)

说明:

  • SerperDevTool 是CrewAI官方提供的搜索工具,需申请Serper API Key(免费额度可满足测试需求,申请地址:https://serper.dev/);

  • 若不使用网络搜索工具,可删除tools参数,研究员将基于LLM的内置知识进行调研(但数据时效性会下降);

  • 若使用本地模型(如Llama 3),需替换llm参数,示例:llm=ollama.chat.completions.create, model="llama3"(需提前安装ollama并下载模型)。

3.2 代码实现:定义任务(Task)与依赖关系

每个智能体对应一个任务,同时设置任务依赖(文案撰写依赖调研报告,社交媒体发布依赖文案),确保工作流按顺序执行。

# 1. 定义任务1:市场调研(研究员执行)
research_task = Task(
    description="调研当前「AI工具」领域的最新热点趋势,目标用户为25-35岁的开发者,重点收集:1. 最受开发者欢迎的AI工具类型;2. 开发者使用AI工具的核心需求;3. 近期AI工具领域的热门功能。输出1页纸的结构化调研报告,分点清晰、数据准确。",
    expected_output="结构化市场调研报告,包含热点趋势、用户需求、热门功能3个部分,语言简洁,重点突出,可直接用于文案撰写参考。",
    agent=researcher  # 指定该任务由研究员执行
)

# 2. 定义任务2:文案撰写(文案撰写员执行,依赖调研任务完成)
copywriting_task = Task(
    description="基于研究员输出的市场调研报告,撰写一篇推广文案,核心突出AI工具的优势,贴合25-35岁开发者的需求,语言生动、有感染力,字数控制在300字左右,适合社交媒体传播。",
    expected_output="300字左右的推广文案,语言流畅、有吸引力,贴合目标用户需求,突出AI工具的核心价值。",
    agent=copywriter,  # 指定该任务由文案撰写员执行
    dependencies=[research_task]  # 依赖调研任务完成后,再执行该任务
)

# 3. 定义任务3:社交媒体发布适配(社交媒体经理执行,依赖文案任务完成)
social_media_task = Task(
    description="将文案撰写员输出的推广文案,分别适配小红书和微博两个平台:1. 小红书:标题吸引人(含emoji),添加3-5个相关话题标签,排版清晰(分2-3段);2. 微博:标题简洁有力,添加2-3个话题标签,适配微博短平快的风格。输出两个平台可直接复制发布的完整内容。",
    expected_output="包含小红书、微博两个平台的发布内容,各平台内容符合格式要求,可直接复制发布,无需额外修改。",
    agent=social_media_manager,  # 指定该任务由社交媒体经理执行
    dependencies=[copywriting_task]  # 依赖文案任务完成后,再执行该任务
)

关键说明:通过dependencies参数设置任务依赖,CrewAI会自动调度,确保前一个任务完成后,再执行下一个任务,避免数据缺失导致的错误。

3.3 代码实现:创建 Crew 并运行工作流

将智能体和任务组织成Crew(团队),设置工作流模式,然后运行,即可实现全流程自动化。

# 创建Crew(团队),整合智能体和任务
crew = Crew(
    agents=[researcher, copywriter, social_media_manager],
    tasks=[research_task, copywriting_task, social_media_task],
    verbose=2  # 日志级别:2表示显示详细的执行过程(包括每个智能体的思考和输出)
)

# 运行工作流,获取最终结果
result = crew.kickoff()

# 打印最终结果
print("="*50)
print("多智能体工作流执行完成,最终结果:")
print("="*50)
print(result)

3.4 代码运行说明与示例输出

3.4.1 前置准备

在项目根目录创建.env文件,填入以下内容(替换为自己的API密钥):

OPENAI_API_KEY=your_openai_api_key
SERPER_API_KEY=your_serper_api_key

3.4.2 运行结果示例

运行代码后,控制台会输出详细的执行日志,最终会打印出3个阶段的结果,示例如下(简化版):

【市场调研报告】

  1. 热门AI工具类型:代码生成类(如Copilot)、数据分析类(如ChatGPT-4o)、自动化部署类(如AI Agent框架);

  2. 开发者核心需求:提升编码效率、降低重复工作、快速解决技术难题;

  3. 热门功能:多模态交互、本地部署、自定义工作流。


【推广文案】

对于25-35岁的开发者而言,高效编码、少走弯路才是核心需求!当下AI工具已成为开发者的“得力助手”,无论是代码生成、数据分析,还是自动化部署,都能轻松搞定。无需重复编写基础代码,无需花费大量时间处理繁琐任务,一款适配开发者的AI工具,就能帮你节省时间、提升效率,专注核心业务突破。赶紧尝试,解锁编码新体验!


【小红书发布内容】

✨开发者必看!AI工具帮你解锁编码高效模式✨

作为25-35岁的开发者,每天被重复代码、繁琐任务消耗精力?

当下热门的AI工具,简直是为我们量身打造!代码生成、数据分析、自动化部署一键搞定,省去大量无效时间,专注核心业务突破~

谁懂啊!有了AI助手,编码效率直接翻倍✅

#AI工具 #开发者必备 #编码效率 #AI助手 #技术干货


【微博发布内容】

开发者福音🔥 热门AI工具解锁编码高效模式!

25-35岁开发者必看:AI工具帮你搞定代码生成、数据分析、自动化部署,告别重复工作,提升编码效率,专注核心突破~

#开发者必备 #AI工具推荐 #编码技巧

可以看到,整个工作流从调研到内容发布,完全由3个智能体协同完成,无需人工干预,实现了自动化闭环。

四、工作流优化与扩展建议

上述示例实现了基础的多智能体自动化工作流,结合实际业务场景,可从以下几个方面进行优化和扩展,提升工作流的实用性和稳定性。

4.1 加入人类反馈(Human-in-the-Loop)

在关键任务节点加入人类反馈,避免智能体输出不符合预期的内容。例如,在文案撰写完成后,让人类审核确认,再进入社交媒体适配阶段。CrewAI支持通过human_input=True参数实现这一功能,修改文案任务如下:

copywriting_task = Task(
    description="基于研究员输出的市场调研报告,撰写一篇推广文案...",
    expected_output="300字左右的推广文案...",
    agent=copywriter,
    dependencies=[research_task],
    human_input=True  # 开启人类反馈,文案完成后需人工确认,再继续执行
)

4.2 实现持久化记忆

默认情况下,智能体的记忆仅在单次工作流中有效,若需让智能体记住历史任务信息(如多次调研的趋势变化、文案风格偏好),可集成记忆工具,如RedisMemoryChromaMemory。示例如下:

from crewai.memory import RedisMemory

# 初始化Redis记忆(需提前安装Redis并启动)
memory = RedisMemory(redis_url="redis://localhost:6379")

# 定义智能体时添加memory参数
researcher = Agent(
    role="市场研究员",
    goal="...",
    backstory="...",
    tools=[search_tool],
    llm=client.chat.completions.create,
    model="gpt-3.5-turbo",
    memory=memory,  # 启用持久化记忆
    verbose=True
)

4.3 集成更多工具扩展能力

CrewAI支持集成多种工具,可根据业务需求扩展智能体能力:

  • 文件操作工具:FileReadToolFileWriteTool,用于读取本地文件或保存输出结果;

  • 邮件工具:EmailTool,用于完成文案发布后发送通知邮件;

  • 自定义工具:根据业务需求编写工具(如对接企业内部系统、数据库查询)。

4.4 优化LLM选择与性能

根据任务复杂度选择合适的LLM:简单任务(如文案适配)可用gpt-3.5-turbo,复杂任务(如深度调研、复杂文案)可用gpt-4-turbo;若需离线运行,可替换为本地模型(如Llama 3、Qwen),降低API成本。

五、总结

本文通过Python + CrewAI,实现了“市场调研→内容生成→社交媒体发布”的全流程多智能体自动化工作流,展示了多智能体系统“分工协作、高效自动化”的核心优势,同时提供了可直接运行的代码示例和清晰的协作流程图。

对于开发者而言,CrewAI框架大幅降低了多智能体系统的开发门槛,无需关注底层协同逻辑,只需聚焦角色定义、任务分配和工具集成,即可快速落地自动化方案。无论是市场运营、内容创作,还是研发协同、客户服务,多智能体自动化工作流都能大幅提升效率、降低人工成本。

后续可结合实际业务场景,扩展智能体角色、集成更多工具、加入人类反馈和持久化记忆,让多智能体工作流更贴合业务需求,实现更复杂的自动化场景落地。

📕个人领域 :Linux/C++/java/AI
🚀 个人主页有点流鼻涕 · CSDN
💬 座右铭“向光而行,沐光而生。”

在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐