基于CrewAI多智能体框架,手把手构建一个自动化写作应用实战
基于CrewAI多智能体框架,手把手构建一个自动化写作应用实战
中秋佳节之际,祝大家节日快乐!本文将介绍如何使用CrewAI多智能体框架构建一个自动化写作应用。
在上一篇文章中,我们初步了解了Agent(智能体)的概念及其特性,并尝试使用MetaGPT这个国内开源的多智能体系统来实现一个需求。然而,MetaGPT对基础大语言模型的依赖较高,通常需要100B参数量级的大模型才能获得较好的效果。
今天,我们将介绍另一个多智能体框架——CrewAI。与MetaGPT相比,CrewAI更加轻量化,定制的灵活性更高,适合用来搭建各种工作流。
CrewAI框架基本介绍
CrewAI是一个多智能体框架,主要用于角色扮演中的智能体自动化配置,以促进智能体之间的合作,共同解决复杂问题。其核心组件包括:
- Agent(智能体):具有角色和背景故事、目标和记忆的团队成员
- Task(任务):智能体需要完成的任务
- Tool(工具):智能体使用的设备,用于辅助完成任务
- Crew(团队):智能体和任务相结合的容器,是智能体协调合作执行任务的实际场所
CrewAI框架的主要特点包括:
- 角色定制代理:可以根据不同的角色、目标和工具来量身定制代理。
- 自动任务委派:代理之间能够自主地分配任务和进行交流,有效提升解题效率。
- 任务管理灵活性:可以根据需要自定义任务和工具,并灵活地指派给不同代理。
- 流程导向:目前系统仅支持按顺序执行任务,但更加复杂的如基于共识和层级的流程正在研发中。
本地安装CrewAI框架依赖
为了使用CrewAI框架,我们需要先搭建本地开发环境。这里推荐使用Miniconda来管理Python虚拟环境。以下是具体步骤:
# 创建Python虚拟环境,版本号为3.10
conda create -n CrewAI python=3.10 -y
# 激活虚拟环境
conda activate CrewAI
# 安装CrewAI框架
pip install crewai
至此,CrewAI框架的依赖就安装完成了,接下来我们可以使用它来构建一个自动化协作应用。
使用CrewAI搭建自动化写作系统
我们将通过CrewAI框架搭建一个自动化写作系统,该系统将完成儿童绘本故事的创作。整个系统将包含两个智能体:
- 故事内容构思者
- 故事内容协作者
第一步:明确需求
我们的需求是:提供一个主题,由第一个智能体产出绘本故事的构思内容,然后由第二个智能体根据第一个智能体的构思内容产出完整的故事内容。
第二步:定义构思者角色的智能体
对于构思者智能体,我们需要定义以下属性:
- 角色(role):构思者
- 目标(goal):根据给定的主题产出儿童绘本故事内容创意
- 背景故事(backstory):设定相关的上下文,比如职责和产出要求
- 其他属性:allow_delegation(不允许委托)和verbose(记录详细过程)
第三步:定义写作者角色的智能体
写作者智能体的目标是:根据构思者所提供的儿童绘本故事创意来编写故事内容。
第四步:定义每个智能体的任务
我们需要为两个智能体分别定义任务,每个任务包含以下属性:
- 描述(description):期望智能体能做什么
- 预期的输出(expected_output):明确任务的产出结果
- 智能体(agent):为任务分配的智能体
第五步:让智能体和任务协同工作
智能体是按照顺序执行任务的,上一个任务的输出会被作为下一个任务的输入。我们可以通过提供topic
上下文参数来实现这一点。
运行程序后,我们可以看到构思者智能体和写作者智能体的运行过程,并最终获得生成的故事内容。
最后:CrewAI总结说明
通过以上示例,我们了解了CrewAI的三个核心模块:
- Agent:一般情况下,一个Agent只做一件事,明确智能体的目标和期望;当然,一个Agent可以执行多项任务。
- Task:无论是创建Agent还是Task都需要明确自己的职责,以及对自己的期望。
- Crew:最终把任务,按照串行或并行的方式组织起来。
通过CrewAI框架,我们可以像搭乐高积木一样,灵活地搭建各种自动化工作流。对于需要使用多智能体协作完成复杂任务的场景,CrewAI提供了一个很好的解决方案。
本文所有涉及到的源代码,不出意外的话,源代码地址会放在评论区。