我使用Langchain和Python工具创建了一个LLM代理。我使用AWS SAM和Docker构建了我的Lambda。构建后,我使用sam local invoke
测试Docker镜像,Lambda函数按预期执行(在M1 Max芯片上),使用Langchain的Playwright工具包来导航无头的异步 chrome 浏览器。在我使用SAM部署之后,我在AWS Lambda UI中测试了该功能,但是浏览器的导航有一个问题:Target page, context or browser has been closed
。我在用sam local invoke
本地测试lambda时没有遇到这个错误。
此外,如果LLM代理不使用Playwright工具,则Lambda会按预期执行。这证实了在部署的AWS Lambda函数中使用Playwright(通过Langchain包)存在本地测试未遇到的问题。
- 在Dockerfile:mcr.microsoft.com/playwright/python:v1.21.0-focal中与Playwright一起使用的图像。预期Playwright浏览器已正确配置。浏览器仍然过早关闭。
- 增加到2048 MB。我希望更多的内存可以解决这个问题,但错误仍然发生。
- 遵循Dockerfile的这个指南。我以为通过添加aws-lambda-cpp构建依赖关系可以解决这个问题,但它没有。
- 尝试
--platform=linux/x86_64
和--platform=linux/arm64
,并在Docker中设置Playwright image.Architecture
以对应选择。错误仍然发生。
1条答案
按热度按时间snz8szmq1#
该问题与Langchain对AWS Playwright浏览器的初始化有关。导入的函数
from langchain.tools.playwright.utils import create_async_playwright_browser
不允许将参数传递给browser.chromium.launch()
。为了使浏览器在AWS上正常运行,browser.chromium.launch(headless=True, args=["--disable-gpu", "--single-process"])
。以下是我为让Playwright浏览器在AWS Lambda中正常运行而做的修改:
字符串
使用此函数创建浏览器而不是找到的
langchain.tools.playwright.utils
,可使AWS Lambda按需运行