无法将 Llama 索引与 AWS Lambda 一起使用

问题描述 投票:0回答:1

我正在使用 Llama Index 创建一个使用 AWS Lambda 的自定义机器人,但是当我尝试创建其层并将其上传到 AWS 层时,我收到不同库的“找不到包”错误。我尝试从 Llama Index 包中删除一些包并使用 Pandas 和 NumPy 等 AWS 包,但出现“最大大小”错误。

我使用 WSL2 Ubuntu 创建了该包。

这是我尝试使用图层时遇到的错误

{
  "errorMessage": "Unable to import module 'lambda_handler': Unable to import required dependencies:\nnumpy: \n\nIMPORTANT: PLEASE READ THIS FOR ADVICE ON HOW TO SOLVE THIS ISSUE!\n\nImporting the numpy C-extensions failed. This error can happen for\nmany reasons, often due to issues with your setup or how NumPy was\ninstalled.\n\nWe have compiled some common reasons and troubleshooting tips at:\n\n    https://numpy.org/devdocs/user/troubleshooting-importerror.html\n\nPlease note and check the following:\n\n  * The Python version is: Python3.8 from \"/var/lang/bin/python3.8\"\n  * The NumPy version is: \"1.24.2\"\n\nand make sure that they are the versions you expect.\nPlease carefully study the documentation linked above for further help.\n\nOriginal error was: No module named 'numpy.core._multiarray_umath'\n",
  "errorType": "Runtime.ImportModuleError",
  "stackTrace": []
}

示例代码

import json
from llama_index import GPTSimpleVectorIndex
import os
import boto3



def lambda_handler(event, context): 
    s3 = boto3.resource('s3')
    #added key
    try:
        event = json.loads(event['body'])
        prompt = event.get("prompt", None)
        if(prompt is None):
            raise Exception("prompt is None")

        bucket_name = ''
        object_key = ''
        index_object = s3.Object(bucket_name, object_key)
        index_content = index_object.get()['Body'].read()
        index = GPTSimpleVectorIndex.load_from_disk(index_content)
        # Query the index
        RESPONSE = index.query(prompt)

        return {
            "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Access-Control-Allow-Origin": "*",
                "Access-Control-Allow-Methods": "POST"
            },
            "statusCode": 200,
            "body": json.dumps(
                {'message': json.dumps({"message": RESPONSE})}
            )
        }
    except Exception as e:
        print(e)
        return {
            "headers": {
                "Access-Control-Allow-Headers": "Content-Type",
                "Access-Control-Allow-Origin": "*",
                "Access-Control-Allow-Methods": "POST"
            },
            "statusCode": 500,
            "body": json.dumps(
                {'message': json.dumps(e, default=str)}
            )
        }

我尝试通过从 Llama Index 包中删除库并使用 AWS 自定义库来解决该问题,但错误不断发生。首先,错误是针对 NumPy 的,我添加了 AWS NumPy 包来修复它。然后,我遇到了 Pandas 错误并尝试使用 AWS Pandas 库,然后尝试使用 numexpr。但是,我开始收到“层的最大尺寸”错误。

更多解释:

Llama-Index 包最初包含 NumPy 包,但我遇到了一个错误(我在问题中提到过)。我从 Llama-Index 包中删除了 NumPy,并尝试使用 AWS 层中的 AWSLambda-Python38-SciPy1x 包,这修复了 NumPy 错误。然而,出现了一个新错误:“没有名为‘pandas._libs.interval’的模块”。为了解决此问题,我添加了 AWS 中的 AWSPandasSDK 层,但合并后的层大小超出了 AWS 的限制。为了克服这个限制,我删除了之前添加的 NumPy 包并添加了 AWSPandasSDK 层,这解决了 NumPy 和 Pandas 问题。但是,我遇到了一个新错误:“没有名为 numexpr 的模块”,即使所有这些库都已存在于 AWS Llama-Index 包中。

python aws-lambda openai-api chatgpt-api llama-index
1个回答
0
投票

您找到答案了吗?正在为同样的事情而奋斗!

© www.soinside.com 2019 - 2024. All rights reserved.