__deets__ hat geschrieben: ↑Dienstag 10. Mai 2022, 08:39
Da es ja nun viele Anwendungen gibt, bei denen das klappt, geht das grundsätzlich.
Du zeigst den relevanten Teil deiner Datenbankabfrage nicht, denn das hat damit zu tun. Nix mit flask, das hat auf die keinen Einfluss. Datenbanken haben üblicherweise Transaktionen, die sie voneinander isolieren. Damit musst du umgehen, wie genau, hängt vom Code und anwedungszweck ab.
Im grunde ist das die Datenbank Abfrage um die es geht:
mycursor.execute(f"SELECT Path FROM nltk_model where Active = 1 AND Kunden_NR = {kunde}")
path = mycursor.fetchall()
data = torch.load(str(path[0][0]))
die ganze methode sieht wie folgt aus:
def get_response(msg,kunde,chatID):
sql = "INSERT INTO messages (msg_id, msg,sent_by,Kunden_NR) VALUES (%s, %s, %s, %s)"
val = (chatID, msg,"User",kunde)
mycursor.execute(sql, val)
mydb.commit()
mycursor.execute(f"SELECT Path FROM nltk_model where Active = 1 AND Kunden_NR = {kunde}")
path = mycursor.fetchall()
data = torch.load(str(path[0][0]))
doc = getEntitys(msg,kunde)
doc = "Entities", [(ent.text, ent.label_) for ent in doc.ents]
input_size = data["input_size"]
hidden_size = data["hidden_size"]
output_size = data["output_size"]
all_words = data['all_words']
tags = data['tags']
model_state = data["model_state"]
model = NeuralNet(input_size, hidden_size, output_size).to(device)
model.load_state_dict(model_state)
model.eval()
mycursor.execute(f"SELECT tag FROM intents where active = 1 AND Kunden_NR = {kunde}")
tag = mycursor.fetchall()
jsonData = '{"intents": ['
for x in tag:
jsonData += '{' + f'"tag": "{x[0]}","patterns": ['
mycursor.execute(f"SELECT pattern FROM patterns where tag = '{x[0]}' AND Kunden_NR = {kunde}")
patterns = mycursor.fetchall()
for y in patterns:
jsonData += f'"{y[0]}",'
jsonData = jsonData[:-1]
jsonData += '],"responses": ['
mycursor.execute(f"SELECT responses FROM responses where tag = '{x[0]}' AND Kunden_NR = {kunde}")
patterns = mycursor.fetchall()
for y in patterns:
jsonData += f'"{y[0]}",'
jsonData = jsonData[:-1]
jsonData += ']},'
jsonData = jsonData[:-1] + "]}"
intents = json.loads(jsonData)
sentence = tokenize(msg)
X = bag_of_words(sentence, all_words)
X = X.reshape(1, X.shape[0])
X = torch.from_numpy(X).to(device)
output = model(X)
_, predicted = torch.max(output, dim=1)
tag = tags[predicted.item()]
probs = torch.softmax(output, dim=1)
prob = probs[0][predicted.item()]
if prob.item() > 0.75:
for intent in intents['intents']:
if tag == intent["tag"]:
answer = random.choice(intent['responses']) + str(doc)
sql = "INSERT INTO messages (msg_id, msg,sent_by,Kunden_NR) VALUES (%s, %s, %s, %s)"
val = (chatID, answer,"Bot",kunde)
mycursor.execute(sql, val)
mydb.commit()
return answer
answer = "I do not understand..." + str(doc)
sql = "INSERT INTO messages (msg_id, msg,sent_by,Kunden_NR) VALUES (%s, %s, %s, %s)"
val = (chatID, answer,"Bot",kunde)
mycursor.execute(sql, val)
mydb.commit()
return answer