我目前正在将Flask与Rasa结合使用来制作聊天机器人。当用户与聊天机器人聊天时,聊天机器人会记住对话中提到的某些内容,例如用户的姓名,详细信息等。它会在稍后的会话中使用此信息。
问题是,每个用户都应该有自己的聊天机器人会话,即有关一个用户的信息不应与另一个用户的信息混淆。要解决此问题,每个用户必须有自己的单独会话。为此,我在Flask中启用了线程。
我的代码是:
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import argparse
import logging
import warnings
import re
from flask import Flask, render_template, request
from policy import theCorePolicy
from termcolor import colored
from rasa_core import utils
from rasa_core.actions import Action
from rasa_core.agent import Agent
from rasa_core.events import SlotSet
from rasa_core.featurizers import (
MaxHistoryTrackerFeaturizer,
BinarySingleStateFeaturizer)
from rasa_core.interpreter import RasaNLUInterpreter
from rasa_core.policies.memoization import MemoizationPolicy
interpreter = RasaNLUInterpreter("nlu/models/default/default_model")
agent = Agent.load("core/models", interpreter=interpreter)
app = Flask(__name__)
logger = logging.getLogger(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/sendMessage', methods=['POST'])
def sendMessage():
message = request.form.getlist('message')[0]
output = agent.handle_message(message)
utter = ""
x = 0
while x < len(output):
utter = utter + "<li class='bot'>" + output[x]["text"] + "</li>"
x += 1
return utter
if __name__ == '__main__':
app.run(host='192.168.0.109', port=1515, debug=False, threaded=True)
但是,这似乎不起作用。尽管我指定了threaded=True
,但多个用户的信息却被弄乱了。所有用户都有一个共同的会话。我该如何解决?