当我通过 AWS CDK 创建 lambda 层时,Langchain 给了我 NUMPY 导入错误

Langchain is giving me NUMPY import error when I am creating a lambda layer via AWS CDK

提问人:dinesh mane 提问时间:11/15/2023 最后编辑:gshpychkadinesh mane 更新时间:11/17/2023 访问量:32

问:

我正在使用 MAC M1 并通过 AWS CDK python 创建容器映像

层:

langchain_lambda_layer = _alambda.PythonLayerVersion(
    self,
    "langchain-lambda-layer",
    entry="./aws_bedrock_langchain_python_cdk/lambda/layer/langchain_latest/",
    compatible_runtimes=[_lambda.Runtime.PYTHON_3_11],
)

要求.txt

langchain==0.0.315
boto3
botocore

Lambda:

langchain_bedrock_example_lambda = _lambda.Function(
    self,
    "langchain-bedrock-example-lambda",
    handler="index.lambda_handler",
    code=_lambda.Code.from_asset(
        "./aws_bedrock_langchain_python_cdk/lambda/code/langchain_example/"
    ),
    runtime=_lambda.Runtime.PYTHON_3_11,
    architecture=_lambda.Architecture.ARM_64,
    role=lambda_role,
    layers=[langchain_lambda_layer],
    timeout=Duration.seconds(300),
    memory_size=1024,
)

Lambda 代码:

from langchain.prompts import PromptTemplate
from langchain.llms import Bedrock
from langchain.chains import LLMChain

def lambda_handler(event, context):
    case_study = "Machine Learning engineer"  ## Software Developer, Web developer, Husband hahaha

    claude = Bedrock(
        model_id="anthropic.claude-v1",
    )
    claude.model_kwargs = {'temperature': 0.3, 'max_tokens_to_sample': 4096}
    
    template = """
    Human: How to be a good {case_study}?  \n Assistant:
    """
    
    prompt_template = PromptTemplate(
        input_variables=["case_study"],
        template=template
    )
    
    llm_chain = LLMChain(
        llm=claude, verbose=True, prompt=prompt_template
    )
    
    results = llm_chain(case_study)
    print(results["text"])

    return {
        'statusCode': 200,
        'case_results': results["text"]
    }

出现以下错误:

**{
  "errorMessage": "Unable to import module 'index': Error importing numpy: you should not try to import numpy from\n        its source directory; please exit the numpy source tree, and relaunch\n        your python interpreter from there.",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "977004a7-f205-481a-8b53-7a4b5bf48d2b",
  "stackTrace": []
}**

此代码在本地执行得非常好。任何帮助将不胜感激?

我尝试提供不同版本的 boto3、botocore 和 langchain,但没有奏效。销毁堆栈并重新创建它。

AWS-CDK langchain 亚马逊基岩

评论


答:

0赞 dinesh mane 11/17/2023 #1

在配置 lambda 层时,我注意到缺少该参数。容器映像似乎是使用我的本地计算机的架构生成的,导致 Lambda 运行时架构出现故障。在包括兼容的架构(特别是 ARM_64 或 X86_64)后,这两种配置都被证明是成功的!Github链接compatible_architectures

langchain_lambda_layer = _alambda.PythonLayerVersion(self, 
           ‘langchain-lambda-layer’,
           entry = ‘./aws_bedrock_langchain_python_cdk/lambda/layer/langchain_latest/’,
           compatible_architectures=[_lambda.Architecture.ARM_64],
           compatible_runtimes=[_lambda.Runtime.PYTHON_3_11 ], )