欢迎光临
我们一直在努力

【Use Cases】15. CrewAI与LlamaIndex集成案例分析

1. 案例目标

本案例展示了如何将CrewAI多智能体框架与LlamaIndex的RAG(检索增强生成)管道集成,创建能够协同工作的智能体团队。主要目标包括:

  • 演示CrewAI与LlamaIndex的基本集成方法
  • 展示如何使用LlamaIndex工具作为CrewAI智能体的查询接口
  • 构建一个基于Uber 10K报告的金融分析师智能体团队
  • 实现多智能体协作完成复杂任务的工作流程

2. 技术栈与核心依赖

核心依赖库

  • crewai – 多智能体协作框架,用于创建和管理智能体团队
  • llama-index – RAG框架,用于构建检索增强生成系统
  • llama-index-llms-openai – LlamaIndex的OpenAI语言模型集成
  • openai – OpenAI API客户端
  • langchain-openai – LangChain的OpenAI集成,用于CrewAI工具
  • wget – 用于下载文件

3. 环境配置

安装依赖

!pip install llama-index crewai llama-index-llms-openai openai langchain-openai

API密钥设置

import os
os.environ["OPENAI_API_KEY"] = "sk-…"

4. 案例实现

4.1 基础CrewAI与LlamaIndex集成

首先,案例展示了基础的集成方法,创建一个简单的数学教师智能体团队:

导入必要的库

from crewai import Agent, Task, Crew
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex, Document
from llama_index.llms.openai import OpenAI
from llama_index.core.tools import LlamaIndexTool

创建测试文档和索引

# 创建一个简单的数学文档
document = Document(text="""
数学公式和计算示例:
1. 加法:(25 + 13) * 2 = 76
2. 减法:100 / (5 + 3) = 12.5
3. 乘法:(45 – 15) * 3 = 90
4. 除法:75 / (5 * 3) = 5
""")

# 创建向量索引
llm = OpenAI(model="gpt-4o")
index = VectorStoreIndex.from_documents([document])
query_engine = index.as_query_engine(llm=llm)

创建LlamaIndex工具

# 创建查询工具
query_tool = LlamaIndexTool.from_query_engine(
query_engine,
name="Math Query Tool",
description="Use this tool to answer math questions",
)

创建智能体和任务

# 创建教师智能体
teacher = Agent(
role="数学教师",
goal="帮助学生理解数学概念和解决问题",
backstory="""你是一位经验丰富的数学教师,擅长解释复杂的数学概念,
并帮助学生解决各种数学问题。""",
verbose=True,
allow_delegation=False,
tools=[query_tool],
)

# 创建任务
task = Task(
description="""创建一个包含10道数学选择题的测试,
每道题有4个选项,并标明正确答案。""",
expected_output="完整的数学测试,包含题目、选项和正确答案",
agent=teacher,
)

# 创建团队
crew = Crew(
agents=[teacher],
tasks=[task],
verbose=2,
)

执行结果

执行团队任务后,智能体生成了包含10道数学选择题的完整测试,每道题都有4个选项和正确答案。这展示了CrewAI智能体如何使用LlamaIndex工具来获取信息并完成任务。

4.2 金融分析师智能体团队

接下来,案例展示了一个更复杂的应用:创建一个基于Uber 10K报告的金融分析师团队:

下载和加载Uber 10K报告

# 下载Uber 10K报告
!wget "https://s23.q4cdn.com/407969754/files/doc_financials/2019/ar/Uber-Technologies-Inc-2019-Annual-Report.pdf" -O uber_10k.pdf

# 加载文档
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex
from llama_index.llms.openai import OpenAI

reader = SimpleDirectoryReader(input_files=["uber_10k.pdf"])
docs = reader.load_data()

创建RAG查询引擎

# 创建索引和查询引擎
llm = OpenAI(model="gpt-4o")
index = VectorStoreIndex.from_documents(docs)
query_engine = index.as_query_engine(similarity_top_k=5, llm=llm)

创建金融分析师工具

# 创建查询工具
query_tool = LlamaIndexTool.from_query_engine(
query_engine,
name="Uber 2019 10K Query Tool",
description="Use this tool to lookup the 2019 Uber 10K Annual Report",
)

创建智能体团队

# 定义智能体
researcher = Agent(
role="高级金融分析师",
goal="揭示不同科技公司的洞察",
backstory="""你在一家资产管理公司工作。
你的目标是理解像Uber这样的科技股票。""",
verbose=True,
allow_delegation=False,
tools=[query_tool],
)

writer = Agent(
role="技术内容策略师",
goal="撰写关于技术进步的引人入胜的内容",
backstory="""你是一位著名的内容策略师,以富有洞察力和吸引力的文章而闻名。
你将复杂的概念转化为引人入胜的叙述。""",
verbose=True,
allow_delegation=False,
)

# 创建任务
task1 = Task(
description="""对Uber 2019年的风险因素进行全面分析。""",
expected_output="完整的分析报告,以要点形式呈现",
agent=researcher,
)

task2 = Task(
description="""利用提供的洞察,撰写一篇引人入胜的博客文章,
突出Uber面临的阻力。你的文章应该信息丰富且易于理解,
面向普通受众。让它听起来很酷,避免复杂的词汇。""",
expected_output="至少4段的完整博客文章",
agent=writer,
)

# 创建团队
crew = Crew(
agents=[researcher, writer],
tasks=[task1, task2],
verbose=2,
)

执行结果

执行团队任务后,研究分析师智能体首先使用LlamaIndex工具查询Uber 10K报告中的风险因素,然后内容策略师智能体基于这些洞察撰写了一篇关于Uber面临阻力的博客文章。这展示了多智能体协作如何完成复杂的分析和内容创作任务。

5. 案例效果

实现效果

  • 成功将CrewAI多智能体框架与LlamaIndex RAG管道集成
  • 创建了能够使用LlamaIndex工具进行信息检索的智能体
  • 实现了多智能体协作完成复杂任务的工作流程
  • 智能体能够基于检索到的信息生成高质量的分析和内容
  • 展示了从简单数学教师到复杂金融分析师团队的多种应用场景

关键输出

金融分析师智能体团队的关键输出包括:

  • 对Uber 2019年风险因素的全面分析,包括数据安全漏洞、用户保留挑战、新产品投资需求等
  • 基于分析结果撰写的博客文章,以通俗易懂的方式解释了Uber面临的挑战
  • 智能体之间的有效协作,研究分析师提供洞察,内容策略师将其转化为引人入胜的内容

6. 案例实现思路

核心思路

本案例的实现基于以下核心思路:

  • 工具集成:使用LlamaIndexTool将LlamaIndex查询引擎转换为CrewAI可用的工具
  • 智能体设计:为每个智能体定义明确的角色、目标和背景故事
  • 任务分配:将复杂任务分解为多个子任务,分配给不同的智能体
  • 工作流程:设计智能体之间的协作流程,确保信息有效传递
  • RAG增强:利用检索增强生成技术,使智能体能够访问和利用外部知识
  • 技术实现

    技术实现的关键步骤包括:

  • 使用VectorStoreIndex创建文档的向量索引
  • 通过LlamaIndexTool将查询引擎转换为CrewAI工具
  • 定义具有特定角色和工具的Agent对象
  • 创建具有明确描述和预期输出的Task对象
  • 将智能体和任务组合成Crew对象并执行
  • 7. 扩展建议

    功能扩展

    • 多智能体协作模式:探索不同的协作模式,如并行处理、竞争式处理等
    • 自定义工具:开发更多自定义LlamaIndex工具,扩展智能体的能力
    • 多模态支持:集成多模态处理能力,使智能体能够处理图像、音频等
    • 实时数据更新:实现实时数据更新机制,使智能体能够获取最新信息
    • 性能优化:优化检索和生成过程,提高响应速度和质量

    应用场景扩展

    • 客户服务:创建多智能体客户服务团队,处理不同类型的客户查询
    • 研究分析:构建研究团队,自动收集、分析和报告特定领域的信息
    • 内容创作:开发内容创作团队,自动生成各类文章、报告和营销材料
    • 教育培训:创建教育团队,提供个性化的学习体验和辅导
    • 决策支持:构建决策支持团队,为复杂决策提供多角度分析和建议

    8. 总结

    本案例成功展示了CrewAI与LlamaIndex的集成方法,通过将LlamaIndex的RAG能力与CrewAI的多智能体协作框架结合,创建了一个强大的智能体团队。案例从简单的数学教师示例开始,逐步扩展到复杂的金融分析师团队,展示了这种集成方法的灵活性和实用性。

    通过这种集成,智能体能够访问和利用外部知识库,大大扩展了其能力和应用范围。多智能体协作机制使得复杂任务可以被分解为多个子任务,由不同专长的智能体协同完成,提高了任务完成的效率和质量。

    这种方法在金融分析、内容创作、客户服务、研究分析等多个领域都有广泛的应用前景,为构建更智能、更强大的AI系统提供了有效的解决方案。

    赞(0)
    未经允许不得转载:171主机测评 » 【Use Cases】15. CrewAI与LlamaIndex集成案例分析
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址