ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

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

【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. 案例实现思路

核心思路

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

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

技术实现

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

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

7. 扩展建议

功能扩展

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

应用场景扩展

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

8. 总结

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

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

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

返回列表