Размещение программы Chatbot в AWS Lambda - PullRequest
0 голосов
/ 08 ноября 2018

Я разработчик и новичок в области системной инженерии, поэтому до сих пор проясняю свою концепцию.

Мне нужно развернуть моего чат-бота в Lambda и разместить его с помощью API Gateway, но возникает следующая концептуальная проблема.

У меня есть чат-бот, созданный с использованием простого AIML . Я создал его на Python и он работает правильно. Для тех, кто не знает AIML, здесь я создаю образ ядра AIML: k = aiml.Kernel(), а затем, когда происходит диалог, этот образ ядра важен для диалога.

В моей системе, например, у меня только один образ ядра, и все хорошо. Но когда я размещу эту программу на Python в Lambda и разверну ее с помощью API Gateway, для каждого запроса у меня будет new image of the kernel, и моя программа не будет работать должным образом.

В чат-боте разговор происходит во время выполнения, и важны данные прошлого разговора, но если я использую API-шлюз для запуска функции Lambda каждый раз, когда пользователь пишет новую строку, то каждый раз, когда будет новое изображение создано из ядра.

Одним из вариантов, который я нашел, было сохранение сеанса и разговора пользователя в базе данных. Но во время выполнения, если я разговариваю в чате, то поиск прошлого разговора и разговора прошлого в новом образе ядра звучит не очень хорошо.

Или, даже если мы сохраним прошлый диалог и отправим его в функцию Lambda с использованием некоторой полезной нагрузки JSON, то также, поскольку API-шлюз создаст новый образ ядра, мне нужно сначала запустить весь прошлый разговор, а затем только получить ответ на новый диалог в чате.

IN SHORT: Как получить один образ ядра в функции Lambda и получить вывод с помощью API Gateway, где API вызывается несколько раз для одного и того же изображения функции Lambda.

Или даже если вам известна общая идея, как большинство онлайн-чатов обрабатывают и дают ответы, тогда это также будет очень полезно.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Лучшим способом может быть использование встроенных структур данных для ведения таких разговоров.
Вам необходимо выполнить все это по существу.
Однако соответствующее отображение, позволяющее быстро достичь нужного значения o / p, может улучшить / оптимизировать ваш результат.

0 голосов
/ 09 ноября 2018

Чтобы ответить на ваш актуальный вопрос, да. Вы можете создать свой образ ядра вне функции-обработчика лямбды. Это означает, что изображение будет создано только в тот момент, когда новый лямбда-контейнер вращается и не будет воссоздан при каждом вызове.

Если предшествующий разговор важен, тогда я чувствую, что должен предупредить вас о некоторых подводных камнях этого подхода.

Лямбда-контейнеры умрут, если не будут получены новые запросы (примерно полчаса, но AWS не укажет это и может изменить его в любое время).

Лямбда-контейнеры будут периодически перерабатываться, даже если они используются.

Если у вас несколько разговоров, вы не можете назначить конкретный лямбда-контейнер конкретному пользователю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...