Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 在AWS Lambda中主持聊天机器人程序_Amazon Web Services_Aws Lambda - Fatal编程技术网

Amazon web services 在AWS Lambda中主持聊天机器人程序

Amazon web services 在AWS Lambda中主持聊天机器人程序,amazon-web-services,aws-lambda,Amazon Web Services,Aws Lambda,我是一名开发人员,对系统工程部分还不熟悉,所以我的概念仍然很清楚 我需要在Lambda中部署我的聊天机器人,并使用API网关托管它,但出现了以下概念性问题 我有一个聊天机器人用simple构建。我在python上创建了它,它工作正常。 对于那些不知道AIML的人,我在这里创建了一个AIML内核的映像:k=AIML.kernel(),然后当对话流发生时,这个内核映像对对话很重要 在我的系统中,在一个实例中,我只有一个内核映像,一切都很好。但是,当我将这个python程序托管到Lambda并使用AP

我是一名开发人员,对系统工程部分还不熟悉,所以我的概念仍然很清楚

我需要在Lambda中部署我的聊天机器人,并使用API网关托管它,但出现了以下概念性问题

我有一个聊天机器人用simple构建。我在python上创建了它,它工作正常。 对于那些不知道AIML的人,我在这里创建了一个AIML内核的映像:
k=AIML.kernel()
,然后当对话流发生时,这个内核映像对对话很重要

在我的系统中,在一个实例中,我只有一个内核映像,一切都很好。但是,当我将这个python程序托管到Lambda并使用API网关部署它时,对于每个请求,我都会有一个新的内核映像,而我的程序将无法正常运行

在聊天机器人中,对话是在运行时发生的,过去的对话数据很重要,但是如果每次用户写新行时我都使用API网关触发Lambda函数,那么每次都会创建内核的新映像

我发现的一个选项是将用户的会话和对话存储在数据库中。但是在运行时,如果我在聊天,那么检索过去的对话并将过去的对话放在内核的新映像中听起来不是一个好办法

或者,即使我们存储过去的对话并使用一些JSON负载发送到Lambda函数,那么由于API网关将创建内核的新映像,我必须首先运行所有过去的对话,然后在聊天中只获取新对话的响应

简言之:如何在Lambda函数中拥有一个内核映像,并使用API网关获得输出,在该网关中,对Lambda函数的同一映像多次调用API


或者,即使您知道大多数在线聊天机器人是如何处理和给出响应的一般想法,这也将非常有帮助。

回答您的实际问题,是的。您可以在lambda处理程序函数之外创建内核映像。这意味着映像将仅在新lambda容器启动时创建,而不会在每次调用时重新创建

如果之前的谈话很重要,那么我觉得我应该提醒你这种方法的一些缺陷

如果没有收到新的请求,Lambda容器将死亡(大约半小时,但AWS没有指定,可以随时更改)

Lambda容器将定期回收,即使正在使用


如果您有多个对话,则无法将特定的lambda容器分配给特定用户。

要回答实际问题,请选择“是”。您可以在lambda处理程序函数之外创建内核映像。这意味着映像将仅在新lambda容器启动时创建,而不会在每次调用时重新创建

如果之前的谈话很重要,那么我觉得我应该提醒你这种方法的一些缺陷

如果没有收到新的请求,Lambda容器将死亡(大约半小时,但AWS没有指定,可以随时更改)

Lambda容器将定期回收,即使正在使用


如果有多个对话,则无法将特定的lambda容器分配给特定用户。

最好的方法是使用内置数据结构来维护此类对话。

您需要从根本上运行整个过程。
但是,快速到达所需o/p的适当映射可能会增强/优化您的结果。最好的方法是使用内置数据结构来维护此类对话。

您需要从根本上运行整个过程。
但是,快速到达所需o/p的适当映射可能会增强/优化您的结果。

Lambda在这里不是正确的工具,因为它是无状态的。您选择使用Lambda作为解决方案的原因是什么?@Tenorfly选择Lambda是因为我不必担心其他服务器问题,只需要将其作为POC,而不必担心流量,因为一天内只有很少的请求发生。为什么不打包BOT并将其放入ECS容器中?@tenorfly它是否与AWS API网关兼容,以API的形式获得响应输出?我认为这是最简单的方法:Lambda在这里不是正确的工具,因为它是无状态的。您选择使用Lambda作为解决方案的原因是什么?@Tenorfly选择Lambda是因为我不必担心其他服务器问题,只需要将其作为POC,而不必担心流量,因为一天内只有很少的请求发生。为什么不将BOT打包并放入ECS容器中?@tenorfly它是否与AWS API网关兼容,要将响应输出作为API?我认为这是最简单的方法:因此,在更好的情况下,将使用EC2?我不介意使用EC2以完全控制环境。因此,在更好的情况下,将使用EC2?我不介意使用EC2以完全控制环境