Llama Packs 示例¶
这个示例向您展示了如何在VoyageAI中使用一个简单的Llama Pack。我们将展示以下内容:
- 如何下载一个Llama Pack
- 如何检查其模块
- 如何直接运行它
- 如何自定义它。
您可以在 https://llamahub.ai 找到所有的packs。
import pandas as pd
# 读取数据
data = pd.read_csv('data.csv')
# 显示数据的前5行
data.head()
In [ ]:
Copied!
!wget "https://www.dropbox.com/s/f6bmb19xdg0xedm/paul_graham_essay.txt?dl=1" -O paul_graham_essay.txt
!wget "https://www.dropbox.com/s/f6bmb19xdg0xedm/paul_graham_essay.txt?dl=1" -O paul_graham_essay.txt
In [ ]:
Copied!
from llama_index.core import SimpleDirectoryReader# 加载一些示例数据reader = SimpleDirectoryReader(input_files=["paul_graham_essay.txt"])documents = reader.load_data()
from llama_index.core import SimpleDirectoryReader# 加载一些示例数据reader = SimpleDirectoryReader(input_files=["paul_graham_essay.txt"])documents = reader.load_data()
In [ ]:
Copied!
from llama_index.core.llama_pack import download_llama_pack
VoyageQueryEnginePack = download_llama_pack(
"VoyageQueryEnginePack", "./voyage_pack"
)
from llama_index.core.llama_pack import download_llama_pack
VoyageQueryEnginePack = download_llama_pack(
"VoyageQueryEnginePack", "./voyage_pack"
)
In [ ]:
Copied!
voyage_pack = VoyageQueryEnginePack(documents)
voyage_pack = VoyageQueryEnginePack(documents)
检查模块¶
In [ ]:
Copied!
modules = voyage_pack.get_modules()
display(modules)
modules = voyage_pack.get_modules()
display(modules)
{'llm': OpenAI(callback_manager=<llama_index.callbacks.base.CallbackManager object at 0x11fdaae90>, model='gpt-4', temperature=0.1, max_tokens=None, additional_kwargs={}, max_retries=3, timeout=60.0, api_key='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', api_base='https://api.openai.com/v1', api_version=''), 'index': <llama_index.indices.vector_store.base.VectorStoreIndex at 0x2bccb3b50>}
In [ ]:
Copied!
llm = modules["llm"]
vector_index = modules["index"]
llm = modules["llm"]
vector_index = modules["index"]
In [ ]:
Copied!
# 尝试使用LLMresponse = llm.complete("你好,世界")print(str(response))
# 尝试使用LLMresponse = llm.complete("你好,世界")print(str(response))
In [ ]:
Copied!
# 尝试检索器retriever = vector_index.as_retriever()results = retriever.retrieve("作者在成长过程中做了什么?")print(str(results[0].get_content()))
# 尝试检索器retriever = vector_index.as_retriever()results = retriever.retrieve("作者在成长过程中做了什么?")print(str(results[0].get_content()))
运行包¶
每个包都有一个run
函数,可以直接完成特定的任务。在这里,我们将使用VoyageAI嵌入来完整运行RAG流程。
In [ ]:
Copied!
# 这将运行完整的包response = voyage_pack.run( "作者在成长过程中做了什么?", similarity_top_k=2)
# 这将运行完整的包response = voyage_pack.run( "作者在成长过程中做了什么?", similarity_top_k=2)
In [ ]:
Copied!
print(str(response))
print(str(response))
The author spent his time outside of school mainly writing and programming. He wrote short stories and attempted to write programs on an IBM 1401. Later, he started programming on a TRS-80, creating simple games and a word processor. He also painted still lives while studying at the Accademia.
尝试自定义包¶
LlamaPacks的一个重要特性是您可以并且应该检查和修改代码模板!
在这个示例中,我们将展示如何使用不同的LLM自定义模板,同时保留Voyage嵌入,并且可以重复使用它。我们将使用Anthropic。
让我们进入voyage_pack
并创建一个副本。
- 为了演示目的,我们将
voyage_pack
复制到voyage_pack_copy
。 - 进入
voyage_pack_copy/base.py
并查看VoyageQueryEnginePack
类的定义。这是所有核心逻辑所在的地方。正如您所看到的,包类本身是一个非常轻量级的基本抽象。您可以自由地按照您的意愿复制/粘贴代码。 - 进入
__init__
中执行llm = OpenAI(model="gpt-4")
的行,并将其改为llm = Anthropic()
(默认为claude-2)。 - 执行
from llama_index.llms import Anthropic
,并确保您的环境变量中设置了ANTHROPIC_API_KEY
。 - 现在您可以使用了!
在下面的部分中,我们将直接重新导入修改后的VoyageQueryEnginePack
并使用它。
In [ ]:
Copied!
from voyage_pack_copy.base import VoyageQueryEnginePack
voyage_pack = VoyageQueryEnginePack(documents)
from voyage_pack_copy.base import VoyageQueryEnginePack
voyage_pack = VoyageQueryEnginePack(documents)
In [ ]:
Copied!
response = voyage_pack.run("What did the author do during his time in RISD?")
print(str(response))
response = voyage_pack.run("What did the author do during his time in RISD?")
print(str(response))
Unfortunately I do not have enough context in the provided information to definitively state what the author did during his time at RISD. The passage mentions that he learned a lot in a color class he took there, that he was basically teaching himself to paint, and that in 1993 he dropped out. But there are no specific details provided about his activities or course of study during his time enrolled at RISD. I apologize that I cannot provide a more complete response.