当前位置: 首页 > news >正文

I can‘t link the chatbot model with react

题意:我无法将聊天机器人模型 chatbot 与React连接起来

问题背景:

This is the model        这是模型

from flask import Flask, request, jsonify
from flask_cors import CORS
import json
import nltk
import numpy as np
import random
import pickle
from time import sleep
from nltk.stem.lancaster import LancasterStemmer
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
from pathlib import Path
from pyngrok import ngrokstemmer = LancasterStemmer()# Load intents file
with open("intents2.json") as file:data = json.load(file)app = Flask(__name__)
CORS(app)  # Enable CORS for all routes    # Load preprocessed data or process it if not available
try:with open("data.pickle", "rb") as f:words, labels, training, output = pickle.load(f)
except:words = []labels = []docs_x = []docs_y = []for intent in data["intents"]:for pattern in intent["patterns"]:wrds = nltk.word_tokenize(pattern)words.extend(wrds)docs_x.append(wrds)docs_y.append(intent["tag"])if intent["tag"] not in labels:labels.append(intent["tag"])words = [stemmer.stem(w.lower()) for w in words if w != "?"]words = sorted(list(set(words)))labels = sorted(labels)training = []output = []out_empty = [0 for _ in range(len(labels))]for x, doc in enumerate(docs_x):bag = []wrds = [stemmer.stem(w) for w in doc]for w in words:if w in wrds:bag.append(1)else:bag.append(0)output_row = out_empty[:]output_row[labels.index(docs_y[x])] = 1training.append(bag)output.append(output_row)training = np.array(training)output = np.array(output)with open("data.pickle", "wb") as f:pickle.dump((words, labels, training, output), f)# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(training, output, test_size=0.2)# Define the Keras model
model = Sequential()
model.add(Dense(20, input_shape=(len(X_train[0]),), activation='relu'))
model.add(Dense(20, activation='relu'))
model.add(Dense(20, activation='relu'))
model.add(Dense(len(y_train[0]), activation='softmax'))# Compile the model
model.compile(optimizer=Adam(learning_rate=0.01), loss='categorical_crossentropy', metrics=['accuracy'])# Train the model
model.fit(X_train, y_train, epochs=200, batch_size=8, verbose=1)# Save the model
model.save("model.h5")# Evaluate the model
y_train_pred = model.predict(X_train)
f1_train = f1_score(y_train.argmax(axis=1), y_train_pred.argmax(axis=1), average='weighted')
print(f"F1 Score (Training): {f1_train:.4f}")test_loss, test_acc = model.evaluate(X_test, y_test)
print(f"Test Loss: {test_loss:.4f}")
print(f"Test Accuracy: {test_acc:.4f}")def bag_of_words(s, words):bag = [0 for _ in range(len(words))]s_words = nltk.word_tokenize(s)s_words = [stemmer.stem(word.lower()) for word in s_words]for se in s_words:for i, w in enumerate(words):if w == se:bag[i] = 1return np.array(bag)@app.route('/chat', methods=['POST'])
def chat():user_input = request.form.get('message')if not user_input:return jsonify({"error": "No message provided"}), 400#print("Hi, How can I help you?")#while True:#   inp = input("You: ")#  if inp.lower() == "quit":#     breakresults = model.predict(np.array([bag_of_words(user_input, words)]))[0]results_index = np.argmax(results)tag = labels[results_index]if results[results_index] > 0.8:for tg in data["intents"]:if tg['tag'] == tag:responses = tg['responses']sleep(1)bot_response = random.choice(responses)else:bot_response = "I don't understand!"return jsonify({"response": bot_response})    
if __name__ == '__main__':# Set up ngrokngrok.set_auth_token("2i16Qv3WbGVeggfwzrzUGEZbEK5_3d5kArxvbSNbwB6kQsJZA")public_url = ngrok.connect(5000).public_urlprint(" * ngrok tunnel \"{}\" -> \"http://127.0.0.1:5000/\"".format(public_url))# Run Flask appapp.run(debug=True, use_reloader=False)#chat()

this is the error i got while i tried to see the output i will get

这是我尝试查看输出时遇到的错误

I made AI model that answer your questions and in work well in python so i used flask to link it to front end i got the api link and try it on postman and it goes well but i can't link it with react

我创建了一个可以回答问题的AI模型,它在Python中运行良好。然后我使用Flask将其与前端连接起来,我得到了API链接并在Postman中进行了测试,一切正常。但是我无法将其与React连接起来。

问题解决:

In your flask Code, at the top of your Chat Route you have:

在你的Flask代码中,在你的聊天路由的顶部,你有:

user_input = request.form.get("message")

But in the flask Api, the form.get only works If the Data is NOT JSON. But INSIDE your fetch call in the react code, you JSON stringify your Message Object. Now the form.get function cannot get the Message. If you deleted the JSON.stringify INSIDE your Body, It should Work then.

但是在Flask API中,form.get只有在数据不是JSON时才有效。但是在你的React代码中的fetch调用里,你对消息对象使用了JSON.stringify。现在form.get函数无法获取到消息。如果你在你的请求体中删除了JSON.stringify,那么它应该可以工作了。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Scrcpy adb server version (41) doesn‘t match this client (39); killing...
  • Python - conda使用大全
  • docker笔记4-镜像理解
  • [解决方法]git上传的项目markdown文件的图片无法显示
  • 视频下载(m3u8或者其他格式的)
  • 创建vue2/vue3项目
  • 计算机网络八股文(三)
  • 使用vscode搜索打开的文件夹下的文件
  • 闲鱼、抖音、快手纷纷入局,“谷子”经济千亿市场纷争再起
  • java之回合制游戏以及如何优化
  • 【python】OpenCV—Shape Detection
  • 编写自动化测试(11)
  • 测试开发面试题---JVM
  • 基于ansible进行运维自动化的研究以及相关的属性
  • 【区块链+绿色低碳】双碳数字化管控平台 | FISCO BCOS应用案例
  • 【译】理解JavaScript:new 关键字
  • create-react-app项目添加less配置
  • CSS 三角实现
  • ES6系统学习----从Apollo Client看解构赋值
  • js操作时间(持续更新)
  • JS学习笔记——闭包
  • Lucene解析 - 基本概念
  • Python 反序列化安全问题(二)
  • socket.io+express实现聊天室的思考(三)
  • 构造函数(constructor)与原型链(prototype)关系
  • 记一次用 NodeJs 实现模拟登录的思路
  • 在weex里面使用chart图表
  • 1.Ext JS 建立web开发工程
  • gunicorn工作原理
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 带你开发类似Pokemon Go的AR游戏
  • ​ssh免密码登录设置及问题总结
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #DBA杂记1
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $refs 、$nextTic、动态组件、name的使用
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (android 地图实战开发)3 在地图上显示当前位置和自定义银行位置
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (day18) leetcode 204.计数质数
  • (附源码)计算机毕业设计大学生兼职系统
  • (函数)颠倒字符串顺序(C语言)
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (一)Linux+Windows下安装ffmpeg
  • * 论文笔记 【Wide Deep Learning for Recommender Systems】
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .Net CF下精确的计时器
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .NET/C#⾯试题汇总系列:集合、异常、泛型、LINQ、委托、EF!(完整版)