从入门到精通:多智能体框架CrewAI的简明教程

164 阅读5分钟

CrewAI 框架综述

crewAI是一个创新的开源多智能体编排框架,由João Moura开发,旨在通过协调多个AI智能体的协作来完成复杂任务。这个框架模拟了现实世界中的工作团队,让不同角色的智能体能够自主地相互委派任务和交流,从而实现比单一语言模型更强大的性能表现。

image.png

CrewAI 核心概念

CrewAI的核心概念包括智能体(Agent)、任务(Task)、工具(Tool)、流程(Process)和团队(Crew)。每个智能体都有特定的角色、目标和背景故事,可以执行定制的任务并使用各种功能工具。流程定义了智能体如何协作,而团队则是这些组件的组合容器。这种模块化设计使得CrewAI能够灵活地应对复杂问题,同时保持系统的简洁性和可扩展性。

CrewAI 应用场景

这个创新框架在多个领域展现了其强大的应用潜力。在客户服务方面,它可以自动回答咨询并提供个性化服务;在供应链管理中,协调库存、订单处理和物流跟踪等环节;而在网络安全领域,部署智能体监控网络活动并响应威胁. 此外,CrewAI还可用于市场分析与预测,利用智能体分析数据、预测趋势,为决策提供支持。在企业内部,它可作为智能助手,自动化日程管理等日常任务,提高工作效率.

安装方法[以colab为例]

!pip install crewai langchain openai
!pip install dask[dataframe]

具体代码写法案例

案例一:商业计划书生成

  • 通过下面案例,你可以比较清晰地看出核心概念是如何使用的。
  • 首先需要配置openai_api_key,如果这步不会配置请留言,懂的朋友可以回复教一下他。
export OPENAI_API_KEY="your_openai_api_key_here"
  • 将下面代码命名为app.py,然后运行即可。
## 需要提前通过export把token注入.

from crewai import Agent, Task, Crew
from langchain.chat_models import ChatOpenAI
import os

# 创建GPT-4o mini语言模型实例
llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7)

# 创建智能体
researcher = Agent(
    role='市场研究员',
    goal='深入研究市场趋势和竞争对手',
    backstory='你是一位经验丰富的市场研究员,擅长收集和分析市场数据。',
    verbose=True,
    llm=llm
)

strategist = Agent(
    role='商业策略师',
    goal='制定有效的商业策略',
    backstory='你是一位资深商业策略师,擅长制定创新的商业计划。',
    verbose=True,
    llm=llm
)

writer = Agent(
    role='商业计划撰写人',
    goal='撰写清晰、详细的商业计划',
    backstory='你是一位专业的商业计划撰写人,擅长将复杂的信息转化为易于理解的文档。',
    verbose=True,
    llm=llm
)

# 定义任务
task1 = Task(
    description='进行简要市场研究,分析目标市场的主要特征和主要竞争对手。',
    agent=researcher,
    expected_output="一份简洁的市场研究报告,包括市场主要特征和主要竞争对手。"
)

task2 = Task(
    description='基于市场研究结果,制定7天的初步商业策略,包括产品定位和主要营销方向。',
    agent=strategist,
    expected_output="一份7天的初步商业策略计划,包括产品定位和主要营销方向。"
)

task3 = Task(
    description='将研究结果和策略整合成一份简要的7天商业计划概要。',
    agent=writer,
    expected_output="一份简要的7天商业计划概要,包括市场分析要点和主要策略方向。"
)

# 创建Crew
crew = Crew(
    agents=[researcher, strategist, writer],
    tasks=[task1, task2, task3],
    verbose=True
)

# 运行Crew并获取结果
result = crew.kickoff()

print("最终的7天商业计划概要:")
print(result)

案例二:生成内容并始终以日文输出(适用于i18n)

!pip install crewai langchain openai
!pip install dask[dataframe]
!pip install -U langchain-openai crewai googletrans==4.0.0-rc1

from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI

# 创建GPT-4语言模型实例
llm = ChatOpenAI(model="gpt-4", temperature=0.7)

# 创建智能体
researcher = Agent(
    role='市场研究员',
    goal='深入研究市场趋势和竞争对手',
    backstory='你是一位经验丰富的市场研究员,擅长收集和分析市场数据。',
    verbose=True,
    llm=llm
)

strategist = Agent(
    role='商业策略师',
    goal='制定有效的商业策略',
    backstory='你是一位资深商业策略师,擅长制定创新的商业计划。',
    verbose=True,
    llm=llm
)

writer = Agent(
    role='商业计划撰写人',
    goal='撰写清晰、详细的商业计划',
    backstory='你是一位专业的商业计划撰写人,擅长将复杂的信息转化为易于理解的文档。',
    verbose=True,
    llm=llm
)

translator = Agent(
    role='日语翻译',
    goal='将商业计划准确翻译成日语',
    backstory='你是一位精通中日双语的专业翻译,擅长翻译商业文档。',
    verbose=True,
    llm=llm
)

# 定义任务
task1 = Task(
    description='进行简要市场研究,分析目标市场的主要特征和主要竞争对手。',
    agent=researcher,
    expected_output="一份包含市场主要特征和主要竞争对手分析的简洁市场研究报告。"
)

task2 = Task(
    description='基于市场研究结果,制定7天的初步商业策略,包括产品定位和主要营销方向。',
    agent=strategist,
    expected_output="一份包含产品定位和主要营销方向的7天初步商业策略计划。"
)

task3 = Task(
    description='将研究结果和策略整合成一份简要的7天商业计划概要。',
    agent=writer,
    expected_output="一份包含市场分析要点和主要策略方向的简要7天商业计划概要。"
)

task4 = Task(
    description='将完整的7天商业计划概要翻译成日语。',
    agent=translator,
    expected_output="一份日语版的7天商业计划概要。"
)

# 创建Crew
crew = Crew(
    agents=[researcher, strategist, writer, translator],
    tasks=[task1, task2, task3, task4],
    verbose=True,
    process=Process.sequential  # 确保任务按顺序执行
)

# 运行Crew并获取结果
result = crew.kickoff()

print("最终的7天商业计划概要(日语版):")
print(result)