LlamaIndex

月伴飞鱼 2025-04-07 16:42:51
AI相关 > AI框架
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

LlamaIndex 是一个开源框架,旨在帮助开发者将外部数据与大型语言模型(LLM)进行高效连接和交互

它通过索引的方式,将文档或其他数据源与 LLM 结合,从而实现更精准的问答、检索增强生成(RAG)以及其他复杂的应用。

LlamaIndex官网:https://www.llamaindex.ai/

# 加载环境变量
from dotenv import load_dotenv
load_dotenv()

# 创建读取文档的实例
from llama_index.core import SimpleDirectoryReader
A_docs = SimpleDirectoryReader(input_files=["./A.pdf"]).load_data()
B_docs = SimpleDirectoryReader(input_files=["./B.pdf"]).load_data()

# 从文档中创建索引
from llama_index.core import VectorStoreIndex
A_index = VectorStoreIndex.from_documents(A_docs)
B_index = VectorStoreIndex.from_documents(B_docs)

# 持久化索引(保存到本地)
from llama_index.core import StorageContext
A_index.storage_context.persist(persist_dir="./storage/A")
B_index.storage_context.persist(persist_dir="./storage/B")

# 从本地读取索引
from llama_index.core import load_index_from_storage
try:
    storage_context = StorageContext.from_defaults(persist_dir="./storage/A")
    A_index = load_index_from_storage(storage_context)

    storage_context = StorageContext.from_defaults(persist_dir="./storage/B")
    B_index = load_index_from_storage(storage_context)

    index_loaded = True
except:
    index_loaded = False

# 创建查询引擎
A_engine = A_index.as_query_engine(similarity_top_k=3)
B_engine = B_index.as_query_engine(similarity_top_k=3)

# 配置查询工具
from llama_index.core.tools import QueryEngineTool
from llama_index.core.tools import ToolMetadata

query_engine_tools = [
    QueryEngineTool(query_engine=A_engine, metadata=ToolMetadata(
        name="A_Finance", description=("用于提供A公司的财务信息 "),),
    ),
    QueryEngineTool(query_engine=B_engine, metadata=ToolMetadata(
        name="B_Finance", description=("用于提供B公司的财务信息 "),),
    ),
]

# 配置LLM
from llama_index.llms.openai import OpenAI
llm = OpenAI(
    model="gpt-4"
)

# 创建ReAct Agent
from llama_index.core.agent import ReActAgent
agent = ReActAgent.from_tools(
    query_engine_tools, 
    llm=llm, 
    verbose=True
)

# 让Agent完成任务
print(agent.chat("Compare the sales of the two companies"))
正在运行步骤 f31bcb07-c5c0-43a2-95b9-8b4e75a1d9e8。步骤输入:比较两家公司的销售额。
思考:用户当前使用的语言是英语。我需要先使用 A_Finance 工具获取公司 A 的销售信息。
行动:A_Finance
行动输入:{'input': 'sales'}
观察结果:2023 年第三季度,销售和营销费用从 2022 年第三季度的 8.167 亿美元增加 12.4%,达到 9.18 亿美元。核心市场收入(包括基于交易的费用和广告收入)同比增长 31.7%,达到 13 亿美元。

正在运行步骤 2df10410-2566-44e4-8004-2cd08fddd0c3。步骤输入:无
思考:我已经获取了公司 A 的销售信息。现在我需要使用 B_Finance 工具获取公司 B 的销售信息。
行动:B_Finance
行动输入:{'input': 'sales'}
观察结果:淘宝及天猫集团、阿里巴巴国际数字商业集团、本地服务集团、菜鸟智能物流网络有限公司、云智能集团、数字媒体与娱乐集团和其他业务的销售数据已在上下文中提供。

正在运行步骤 042efd6d-2b18-4603-9568-a51a4d1d8b55。步骤输入:无
思考:B_Finance 工具的观察结果没有提供公司 B 的具体销售数据。没有这些信息,我无法比较两家公司的销售额。
答案:很抱歉,由于没有提供公司 B 的销售数据,我无法提供两家公司销售额的比较。
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!