赞
踩
在这篇文章中,我们将介绍如何使用OpenAI Agent和查询引擎工具来处理大数据查询任务。本文将详细讲解如何安装必要的依赖库、下载数据、构建索引并实现一个简单的查询引擎。
首先,我们需要安装llama-index
库和其OpenAI扩展。可以使用以下命令来安装:
%pip install llama-index-agent-openai
!pip install llama-index
from llama_index.core import (
SimpleDirectoryReader,
VectorStoreIndex,
StorageContext,
load_index_from_storage,
)
from llama_index.core.tools import QueryEngineTool, ToolMetadata
我们将尝试从已有的存储中加载索引,如果加载失败则重新构建索引。
try:
storage_context = StorageContext.from_defaults(
persist_dir="./storage/lyft"
)
lyft_index = load_index_from_storage(storage_context)
storage_context = StorageContext.from_defaults(
persist_dir="./storage/uber"
)
uber_index = load_index_from_storage(storage_context)
index_loaded = True
except:
index_loaded = False
如果索引未加载成功,我们需要下载并处理数据。
!mkdir -p 'data/10k/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/10k/uber_2021.pdf' -O 'data/10k/uber_2021.pdf'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/10k/lyft_2021.pdf' -O 'data/10k/lyft_2021.pdf'
if not index_loaded: # load data lyft_docs = SimpleDirectoryReader( input_files=["./data/10k/lyft_2021.pdf"] ).load_data() uber_docs = SimpleDirectoryReader( input_files=["./data/10k/uber_2021.pdf"] ).load_data() # build index lyft_index = VectorStoreIndex.from_documents(lyft_docs) uber_index = VectorStoreIndex.from_documents(uber_docs) # persist index lyft_index.storage_context.persist(persist_dir="./storage/lyft") uber_index.storage_context.persist(persist_dir="./storage/uber")
lyft_engine = lyft_index.as_query_engine(similarity_top_k=3) uber_engine = uber_index.as_query_engine(similarity_top_k=3) query_engine_tools = [ QueryEngineTool( query_engine=lyft_engine, metadata=ToolMetadata( name="lyft_10k", description=( "Provides information about Lyft financials for year 2021. " "Use a detailed plain text question as input to the tool." ), ), ), QueryEngineTool( query_engine=uber_engine, metadata=ToolMetadata( name="uber_10k", description=( "Provides information about Uber financials for year 2021. " "Use a detailed plain text question as input to the tool." ), ), ), ]
from llama_index.agent.openai import OpenAIAgent
agent = OpenAIAgent.from_tools(query_engine_tools, verbose=True)
agent.chat_repl()
输入以下内容进行测试:
=== Calling Function ===
Calling function: lyft_10k with args: {
"input": "What was Lyft's revenue growth in 2021?"
}
Got output:
Lyft's revenue growth in 2021 was 36%.
========================
=== Calling Function ===
Calling function: uber_10k with args: {
"input": "What was Uber's revenue growth in 2021?"
}
Got output:
Uber's revenue growth in 2021 was 57%.
========================
Assistant: Lyft's revenue growth in 2021 was 36%, while Uber's revenue growth in 2021 was 57%.
依赖安装失败:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple llama-index-agent-openai
。数据下载失败:
索引加载或构建失败:
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。