(多)CrewAI 多智能体框架
概述
CrewAI 是一个先进的多智能体编排框架,专为构建基于任务的多智能体系统而设计。与其他框架不同,CrewAI 采用"船员"(Crew)的概念,将一组智能体组织成一个高效协作的团队,每个成员都有特定的角色和职责,共同完成复杂任务。
CrewAI 的设计灵感来源于人类团队的协作方式,强调角色专业化、任务分解和顺序工作流。这种方法使得复杂任务能够被分解为更小、更可管理的部分,由专业化的智能体处理,从而提高整体效率和输出质量。
核心概念
1. 智能体 (Agents)
在 CrewAI 中,智能体是具有特定角色和技能的虚拟团队成员。每个智能体都被定义为:
角色: 明确的职位或专业领域
目标: 该角色希望实现的具体目标
背景: 智能体的"背景故事",增加个性和专业性
工具: 可以使用的工具集和API
允许委托: 是否可以将任务委派给其他智能体
语言模型: 为该智能体提供支持的LLM(可以为不同智能体使用不同的模型)
记忆: 智能体的上下文记忆,用于存储和检索信息
2. 任务 (Tasks)
任务是分配给智能体的工作单元,通常包括:
描述: 详细说明任务内容和期望
期望输出: 明确定义的输出格式或结果
上下文: 与任务相关的背景信息
智能体: 负责执行任务的智能体
依赖任务: 此任务依赖的其他任务(用于创建工作流)
3. 船员 (Crew)
CrewAI 的核心概念——船员,是一组协作的智能体团队:
智能体集合: 组成团队的所有智能体
工作流: 智能体协作的方式(如顺序、分层等)
任务: 团队需要完成的任务集合
进程: 执行模式(如按任务顺序、并行等)
4. 工具 (Tools)
工具是智能体可以调用的特殊函数或API,扩展其能力范围:
网络搜索: 允许智能体搜索网络获取信息
数据分析: 处理和分析数据的工具
内容生成: 创建特定形式内容的工具
API集成: 连接外部服务和数据源
工作流类型
CrewAI 支持多种工作流配置:
1. 顺序工作流 (Sequential)
任务按照预定义的顺序依次执行,前一个任务的输出可以作为后续任务的输入。这种工作流适合有明确依赖关系的任务链。
2. 分层工作流 (Hierarchical)
一个主管智能体将任务分配给下属智能体,并综合他们的结果。适合有明确领导和汇报结构的场景。
3. 并行工作流 (Parallel)
多个智能体同时工作在不同任务上,然后结果被合并。适合相对独立但需要同时进行的任务。
4. 指定任务流 (Task-specific)
根据每个任务的具体要求动态决定执行流程,提供最大的灵活性。
主要组件
1. Agent 类
Agent
是 CrewAI 中智能体的核心类,提供如下功能:
定义智能体角色和特性
处理任务执行逻辑
管理与其他智能体的交互
使用工具和API
2. Task 类
Task
类用于定义和管理任务:
任务创建和配置
依赖关系管理
输出处理
任务状态跟踪
3. Crew 类
Crew
类管理整个协作过程:
智能体团队组织
工作流配置
任务分配和协调
整体执行过程管理
4. CrewAI Tools
CrewAI 提供了一系列内置工具,如:
SearchTool
: 网络搜索工具FileReadTool
: 文件读取工具FileWriteTool
: 文件写入工具PythonREPLTool
: Python代码执行工具
基本用法示例
1. 创建简单的研究团队
以下是创建一个简单的研究团队,由研究员和作家两个角色组成的示例:
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI
# 初始化语言模型
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.7,
api_key="YOUR_API_KEY"
)
# 创建智能体
researcher = Agent(
role="研究分析师",
goal="进行深入的市场研究,提供有见地的分析",
backstory="你是一位经验丰富的市场研究分析师,擅长收集和分析数据,发现市场趋势和机会。",
verbose=True,
allow_delegation=False,
llm=llm
)
writer = Agent(
role="商业报告撰写人",
goal="创作清晰、引人入胜且信息丰富的商业报告",
backstory="你是一位专业的商业写作者,擅长将复杂的数据和分析转化为清晰、有说服力的报告。",
verbose=True,
allow_delegation=False,
llm=llm
)
# 创建任务
research_task = Task(
description="研究人工智能在金融服务行业的当前应用和未来趋势。关注主要使用案例、领先公司和潜在增长领域。",
expected_output="一份详细的研究报告,包括主要发现、数据点和趋势分析。",
agent=researcher
)
write_task = Task(
description="根据研究结果,撰写一份关于AI在金融服务中的应用的全面报告,面向银行业高管。",
expected_output="一份20页的精美报告,包括执行摘要、关键发现、案例研究和战略建议。",
agent=writer,
dependencies=[research_task]
)
# 创建船员(团队)
crew = Crew(
agents=[researcher, writer],
tasks=[research_task, write_task],
verbose=2, # 详细日志级别
process=Process.sequential # 顺序执行任务
)
# 执行团队任务
result = crew.kickoff()
print("\n最终报告:\n")
print(result)
2. 使用工具增强智能体能力
以下示例展示了如何使用工具扩展智能体的能力:
from crewai import Agent, Task, Crew, Process
from crewai.tools import FileReadTool, FileWriteTool, SearchTool
import os
# 创建工具
search_tool = SearchTool()
file_read_tool = FileReadTool()
file_write_tool = FileWriteTool()
# 创建带工具的智能体
researcher = Agent(
role="网络研究专员",
goal="查找并整理关于特定主题的最新信息",
backstory="你是一位擅长在线研究的专家,能够找到并验证各种主题的最新信息。",
verbose=True,
tools=[search_tool], # 添加搜索工具
llm=llm
)
content_writer = Agent(
role="内容创作者",
goal="基于研究创作有价值的内容",
backstory="你是一位有才华的作家,擅长将研究材料转化为引人入胜的内容。",
verbose=True,
tools=[file_read_tool, file_write_tool], # 添加文件读写工具
llm=llm
)
data_analyst = Agent(
role="数据分析师",
goal="分析研究数据,提取见解和趋势",
backstory="你是一位数据分析专家,擅长识别数据中的模式和趋势。",
verbose=True,
tools=[file_read_tool], # 添加文件读取工具
llm=llm
)
# 创建任务
research_task = Task(
description="研究最近5年电动汽车市场的发展趋势,重点关注主要制造商、技术进步和市场份额变化。",
expected_output="一个包含关键发现和数据点的研究文档,保存为'ev_research.txt'。",
agent=researcher
)
analysis_task = Task(
description="分析电动汽车研究数据,识别主要趋势、增长机会和挑战。",
expected_output="一份趋势分析报告,包括关键见解、图表建议和预测。",
agent=data_analyst,
dependencies=[research_task]
)
create_content_task = Task(
description="基于研究和分析,创作一篇关于电动汽车行业未来的深度文章。文章应该信息丰富、引人入胜,适合发布在科技博客上。",
expected_output="一篇2000字的文章,包含引人入胜的标题、小标题、关键数据点和前瞻性见解。将文章保存为'ev_industry_future.txt'。",
agent=content_writer,
dependencies=[analysis_task]
)
# 创建船员(团队)
ev_research_crew = Crew(
agents=[researcher, data_analyst, content_writer],
tasks=[research_task, analysis_task, create_content_task],
verbose=2,
process=Process.sequential
)
# 执行团队任务
result = ev_research_crew.kickoff()
# 查看结果文件
if os.path.exists("ev_industry_future.txt"):
with open("ev_industry_future.txt", "r") as f:
content = f.read()
print("\n文章预览(前500字):\n")
print(content[:500] + "..." if len(content) > 500 else content)
高级用法
1. 自定义工具
创建自定义工具来扩展智能体的能力:
from crewai import Agent, Task, Crew
from crewai.tools import BaseTool
import requests
from typing import Type
# 创建自定义股票价格查询工具
class StockPriceTool(BaseTool):
name: str = "查询股票价格"
description: str = "获取特定股票的最新价格信息"
def _run(self, stock_symbol: str) -> str:
"""查询股票价格"""
try:
# 使用Alpha Vantage API(仅为示例,实际使用需要API密钥)
url = f"https://www.alphavantage.co/query?function=GLOBAL_QUOTE&symbol={stock_symbol}&apikey=YOUR_API_KEY"
response = requests.get(url)
data = response.json()
if "Global Quote" in data and data["Global Quote"]:
quote = data["Global Quote"]
price = quote.get("05. price", "未知")
change = quote.get("09. change", "未知")
change_percent = quote.get("10. change percent", "未知")
return f"{stock_symbol} 当前价格: ${price}, 变化: {change} ({change_percent})"
else:
return f"无法获取 {stock_symbol} 的价格信息,请检查股票代码是否正确。"
except Exception as e:
return f"查询股票价格时出错: {str(e)}"
# 创建自定义新闻查询工具
class NewsSearchTool(BaseTool):
name: str = "搜索最新新闻"
description: str = "搜索特定主题的最新新闻文章"
def _run(self, query: str) -> str:
"""搜索新闻"""
try:
# 使用News API(仅为示例,实际使用需要API密钥)
url = f"https://newsapi.org/v2/everything?q={query}&sortBy=publishedAt&apiKey=YOUR_API_KEY&language=zh&pageSize=5"
response = requests.get(url)
data = response.json()
if data.get("status") == "ok" and data.get("articles"):
articles = data["articles"]
result = f"找到 {len(articles)} 条关于 '{query}' 的最新新闻:\n\n"
for i, article in enumerate(articles, 1):
result += f"{i}. {article['title']}\n"
result += f" 来源: {article['source']['name']}\n"
result += f" 发布时间: {article['publishedAt']}\n"
result += f" 摘要: {article['description']}\n\n"
return result
else:
return f"未找到关于 '{query}' 的新闻"
except Exception as e:
return f"搜索新闻时出错: {str(e)}"
# 创建使用自定义工具的智能体
financial_analyst = Agent(
role="金融分析师",
goal="提供准确的市场分析和股票建议",
backstory="你是一位经验丰富的金融分析师,专注于股票市场分析和投资建议。",
verbose=True,
tools=[StockPriceTool(), NewsSearchTool()],
llm=llm
)
investment_advisor = Agent(
role="投资顾问",
goal="为客户提供个性化投资建议",
backstory="你是一位专业的投资顾问,擅长为客户制定投资策略和组合。",
verbose=True,
llm=llm
)
# 创建任务
market_analysis_task = Task(
description="分析特斯拉(TSLA)、苹果(AAPL)和微软(MSFT)的股票表现和最新新闻。评估当前市场趋势和这些公司的前景。",
expected_output="一份详细的股票分析报告,包括当前价格、最近趋势和基于新闻的见解。",
agent=financial_analyst
)
investment_advice_task = Task(
description="基于市场分析,为一位想要投资科技行业、风险承受能力中等的35岁客户提供投资建议。",
expected_output="一份个性化投资建议,包括推荐的股票配置、入场点和投资策略。",
agent=investment_advisor,
dependencies=[market_analysis_task]
)
# 创建船员(团队)
investment_crew = Crew(
agents=[financial_analyst, investment_advisor],
tasks=[market_analysis_task, investment_advice_task],
verbose=2,
process=Process.sequential
)
# 执行团队任务
result = investment_crew.kickoff()
print(result)
2. 分层团队结构
实现更复杂的分层团队结构,模拟企业组织:
from crewai import Agent, Task, Crew, Process
from typing import List
# 创建高管团队
ceo = Agent(
role="CEO",
goal="制定公司战略方向,确保业务增长和盈利能力",
backstory="你是一位有远见的CEO,擅长战略思考和决策制定。你负责公司的整体方向和业绩。",
verbose=True,
llm=llm
)
cto = Agent(
role="CTO",
goal="领导技术战略和创新,确保技术优势",
backstory="你是一位经验丰富的技术领导者,对新兴技术有深入了解。你负责公司的技术战略和工程团队。",
verbose=True,
llm=llm
)
cmo = Agent(
role="CMO",
goal="制定和执行营销策略,提升品牌知名度和客户获取",
backstory="你是一位创新的营销领导者,擅长品牌建设和营销策略。你负责公司的营销和客户获取策略。",
verbose=True,
llm=llm
)
# 创建技术团队
engineering_manager = Agent(
role="工程经理",
goal="领导工程团队,确保产品开发按时高质量完成",
backstory="你是一位有经验的工程经理,擅长项目管理和团队领导。你负责开发团队的日常管理和产品交付。",
verbose=True,
llm=llm
)
senior_developer = Agent(
role="高级开发人员",
goal="设计和实现核心功能,确保代码质量和性能",
backstory="你是一位资深开发者,有丰富的编程经验和技术专长。你负责核心系统的设计和实现。",
verbose=True,
llm=llm
)
qa_engineer = Agent(
role="QA工程师",
goal="确保产品质量,发现和报告问题",
backstory="你是一位细致的QA工程师,擅长测试和质量保证。你负责确保产品在发布前没有关键问题。",
verbose=True,
llm=llm
)
# 创建营销团队
marketing_manager = Agent(
role="营销经理",
goal="执行营销计划,管理营销活动",
backstory="你是一位有经验的营销经理,擅长活动策划和执行。你负责日常营销活动和团队管理。",
verbose=True,
llm=llm
)
content_specialist = Agent(
role="内容专家",
goal="创建引人入胜的营销内容",
backstory="你是一位有才华的内容创作者,擅长讲故事和内容营销。你负责创建各种形式的营销内容。",
verbose=True,
llm=llm
)
# 定义任务 - 高管层
strategy_task = Task(
description="制定公司未来12个月的战略计划,重点关注市场扩张、产品开发和收入增长。",
expected_output="一份全面的公司战略文档,包括愿景、目标、关键举措和预期成果。",
agent=ceo
)
tech_strategy_task = Task(
description="基于公司战略,制定技术路线图,包括产品开发计划、技术栈选择和资源需求。",
expected_output="一份详细的技术路线图,包括项目时间线、所需资源和关键里程碑。",
agent=cto,
dependencies=[strategy_task]
)
marketing_strategy_task = Task(
description="基于公司战略,制定营销计划,包括目标受众、渠道策略和活动计划。",
expected_output="一份全面的营销策略文档,包括受众分析、渠道策略和预算分配。",
agent=cmo,
dependencies=[strategy_task]
)
# 定义任务 - 技术团队
project_plan_task = Task(
description="根据技术路线图,创建详细的项目计划,包括任务分解、资源分配和时间表。",
expected_output="一份项目计划文档,包括任务列表、责任分配和时间线。",
agent=engineering_manager,
dependencies=[tech_strategy_task]
)
devlopment_task = Task(
description="根据项目计划,设计和实现核心产品功能,编写必要的技术文档。",
expected_output="功能设计文档和实施计划,包括架构图和关键组件说明。",
agent=senior_developer,
dependencies=[project_plan_task]
)
qa_task = Task(
description="设计测试计划和测试用例,确保产品功能和质量符合要求。",
expected_output="测试计划和测试用例文档,包括测试策略和质量标准。",
agent=qa_engineer,
dependencies=[project_plan_task]
)
# 定义任务 - 营销团队
marketing_plan_task = Task(
description="根据营销策略,制定详细的营销执行计划,包括具体活动、时间表和预算。",
expected_output="一份营销执行计划,包括活动日历、预算明细和绩效指标。",
agent=marketing_manager,
dependencies=[marketing_strategy_task]
)
content_creation_task = Task(
description="根据营销计划,创建必要的营销内容,包括网站文案、社交媒体帖子和电子邮件活动。",
expected_output="一套营销内容样本,包括网站内容、社交媒体帖子和电子邮件模板。",
agent=content_specialist,
dependencies=[marketing_plan_task]
)
# 创建三个层级的船员团队
executive_team = Crew(
agents=[ceo, cto, cmo],
tasks=[strategy_task, tech_strategy_task, marketing_strategy_task],
verbose=2,
process=Process.sequential
)
tech_team = Crew(
agents=[engineering_manager, senior_developer, qa_engineer],
tasks=[project_plan_task, devlopment_task, qa_task],
verbose=2,
process=Process.sequential
)
marketing_team = Crew(
agents=[marketing_manager, content_specialist],
tasks=[marketing_plan_task, content_creation_task],
verbose=2,
process=Process.sequential
)
# 先执行高管团队的工作
executive_result = executive_team.kickoff()
print("\n高管团队计划完成!\n")
# 然后并行执行技术和营销团队的工作
import threading
def run_tech_team():
global tech_result
tech_result = tech_team.kickoff()
print("\n技术团队工作完成!\n")
def run_marketing_team():
global marketing_result
marketing_result = marketing_team.kickoff()
print("\n营销团队工作完成!\n")
# 启动并行执行
tech_thread = threading.Thread(target=run_tech_team)
marketing_thread = threading.Thread(target=run_marketing_team)
tech_thread.start()
marketing_thread.start()
# 等待两个团队都完成
tech_thread.join()
marketing_thread.join()
# 打印最终结果摘要
print("\n项目规划完成,各团队成果:\n")
print("1. 公司战略计划 (CEO)")
print("2. 技术路线图 (CTO)")
print("3. 营销策略 (CMO)")
print("4. 项目实施计划 (工程团队)")
print("5. 营销执行计划和内容 (营销团队)")
实际应用场景
1. 市场研究与分析
CrewAI 可以组建专业的市场研究团队,收集和分析竞争情报:
from crewai import Agent, Task, Crew
from crewai.tools import SearchTool
# 初始化搜索工具
search_tool = SearchTool()
# 创建市场研究团队
market_researcher = Agent(
role="市场研究员",
goal="收集和分析特定行业或竞争对手的详细信息",
backstory="你是一位专业的市场研究员,擅长收集竞争情报和行业数据。",
verbose=True,
tools=[search_tool],
llm=llm
)
trend_analyst = Agent(
role="趋势分析师",
goal="识别和分析市场趋势和模式",
backstory="你是一位经验丰富的趋势分析师,擅长识别新兴趋势和市场变化。",
verbose=True,
llm=llm
)
competitor_analyst = Agent(
role="竞争对手分析师",
goal="深入分析竞争对手策略和优势",
backstory="你是一位专注于竞争分析的专家,擅长评估竞争对手的优势、劣势和市场策略。",
verbose=True,
tools=[search_tool],
llm=llm
)
# 定义任务
research_task = Task(
description="研究全球电动汽车市场,重点关注主要参与者(如特斯拉、比亚迪、大众)、市场份额和近期发展。",
expected_output="一份全面的市场研究报告,包含关键参与者、市场规模和近期发展。",
agent=market_researcher
)
trend_task = Task(
description="基于市场研究,分析电动汽车行业的主要趋势、增长驱动因素和潜在障碍。",
expected_output="一份趋势分析报告,确定关键趋势、驱动因素和未来5年的预测。",
agent=trend_analyst,
dependencies=[research_task]
)
competitor_task = Task(
description="对特斯拉、比亚迪和大众汽车在电动汽车市场的策略进行详细对比分析。",
expected_output="一份竞争对手分析报告,详细比较三家公司的技术、市场策略、优势和劣势。",
agent=competitor_analyst,
dependencies=[research_task]
)
# 创建研究团队
market_research_crew = Crew(
agents=[market_researcher, trend_analyst, competitor_analyst],
tasks=[research_task, trend_task, competitor_task],
verbose=2,
process=Process.sequential
)
# 执行研究
result = market_research_crew.kickoff()
2. 内容创作与营销
CrewAI 可以组建内容创作团队,生成高质量的营销内容:
from crewai import Agent, Task, Crew
# 创建内容团队
seo_specialist = Agent(
role="SEO专家",
goal="优化内容以提高搜索引擎排名",
backstory="你是一位经验丰富的SEO专家,擅长关键词研究和内容优化策略。",
verbose=True,
llm=llm
)
content_strategist = Agent(
role="内容策略师",
goal="制定有效的内容战略和计划",
backstory="你是一位创意内容策略师,擅长制定吸引目标受众的内容计划。",
verbose=True,
llm=llm
)
copywriter = Agent(
role="文案撰写人",
goal="创作引人入胜、有说服力的内容",
backstory="你是一位才华横溢的文案撰写人,能够创作引人入胜的文案,驱动读者采取行动。",
verbose=True,
llm=llm
)
editor = Agent(
role="内容编辑",
goal="确保内容质量和一致性",
backstory="你是一位细致的编辑,擅长完善内容,确保其清晰、准确且符合品牌风格。",
verbose=True,
llm=llm
)
# 定义任务
keyword_research_task = Task(
description="为一家提供云计算服务的科技公司进行关键词研究,确定5个高价值目标关键词。",
expected_output="一份关键词研究报告,包含5个推荐目标关键词及其搜索量、竞争程度和相关性分析。",
agent=seo_specialist
)
content_strategy_task = Task(
description="基于关键词研究,制定一个6个月的博客内容策略,旨在提升公司在云计算领域的权威性。",
expected_output="一份6个月内容计划,包含博客主题、内容类型、发布频率和关键绩效指标。",
agent=content_strategist,
dependencies=[keyword_research_task]
)
content_creation_task = Task(
description="为内容计划的第一个月创作三篇引人入胜的博客文章,每篇约1500字。",
expected_output="三篇原创博客文章,包含引人入胜的标题、SEO优化的元描述和内容大纲。",
agent=copywriter,
dependencies=[content_strategy_task]
)
editing_task = Task(
description="编辑和完善创作的博客文章,确保内容质量、准确性和品牌一致性。",
expected_output="三篇经过编辑的博客文章,修正语法错误、改进结构和增强可读性。",
agent=editor,
dependencies=[content_creation_task]
)
# 创建内容团队
content_crew = Crew(
agents=[seo_specialist, content_strategist, copywriter, editor],
tasks=[keyword_research_task, content_strategy_task, content_creation_task, editing_task],
verbose=2,
process=Process.sequential
)
# 启动内容创作流程
result = content_crew.kickoff()
最佳实践
1. 设计智能体角色
明确职责:为每个智能体定义清晰的角色和职责
避免重叠:减少智能体之间的职责重叠
匹配专长:根据任务需求选择合适的智能体组合
2. 有效的系统提示
详细说明:为智能体提供详细的背景故事和目标,明确其角色、任务和限制
角色沉浸:使用丰富的背景描述,让智能体更好地融入角色
明确目标:确保每个智能体的目标明确且可衡量
示例改进的背景设置:
data_scientist = Agent(
role="数据科学家",
goal="通过高级分析和机器学习,从数据中提取有价值的见解和预测",
backstory="""你是一位世界级的数据科学家,拥有顶尖大学的博士学位和多年在硅谷科技巨头的工作经验。
你擅长应用各种分析技术和算法,将复杂的数据转化为可操作的见解。
你特别擅长:
1. 设计和实现复杂的数据分析流程
2. 开发预测模型和机器学习算法
3. 将技术发现转化为业务语言和建议
4. 识别数据中的模式和异常
你对工作的方法论是:先深入理解业务问题,然后仔细分析可用数据,设计适当的分析方法,
执行严谨的分析过程,最后将发现转化为清晰的见解和建议。
在团队中,你习惯于与业务分析师和工程师密切合作,确保分析结果既科学严谨又具有实用价值。
""",
verbose=True,
llm=llm
)
3. 任务设计
明确描述:提供详细的任务描述和期望输出
合理分解:将复杂任务分解为更小的子任务
正确依赖:仔细设置任务依赖关系,确保信息流畅通
4. 工作流选择
顺序工作流:适用于有明确依赖关系的任务链
分层工作流:适用于需要领导和协调的复杂项目
并行工作流:适用于相对独立但需要综合结果的任务
5. 错误处理
健壮性:实现错误处理机制,处理可能的异常情况
重试逻辑:为不稳定的操作(如API调用)添加重试机制
详细日志:启用详细日志记录以便故障排除
常见问题与解决方案
智能体回应不一致
问题:智能体有时会偏离其角色定义
解决方案:提供更详细的背景故事,增加系统提示中的具体示例,降低温度设置
任务之间的信息传递不畅
问题:依赖任务之间的信息没有被正确传递
解决方案:确保任务输出格式明确定义,添加上下文总结,调整任务描述以包含必要的前置信息
工具使用不当
问题:智能体不正确地使用分配的工具
解决方案:在工具描述中提供使用示例,添加输入验证,在任务描述中明确指示工具使用
任务复杂度过高
问题:任务过于复杂,导致智能体无法有效完成
解决方案:将复杂任务分解为更小的子任务,确保每个任务都有明确且可实现的目标
与其他框架的比较
总结
CrewAI是一个强大的多智能体框架,特别适合需要多种专业角色协作完成的复杂任务。其核心优势在于:
强大的角色系统:通过详细的背景故事和目标,创建具有特定专业知识的智能体
灵活的工作流:支持多种工作流模式,适应不同的协作需求
结构化任务管理:清晰的任务依赖系统,确保信息流畅通
易于扩展:可以通过自定义工具和智能体扩展功能
对于需要模拟人类团队协作、处理复杂任务链或需要多种专业知识协同工作的应用场景,CrewAI提供了一个结构化且高效的解决方案。
- 感谢你赐予我前进的力量