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

问题解决:

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

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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/874720.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

科研绘图系列:R语言热图(heatmap)

介绍 热图是一种数据可视化技术,通常用于展示数据的分布情况。它通过颜色的变化来表示数据的大小或密度,使得观察者能够直观地理解数据集中的模式和趋势。以下是热图的一些关键特点和应用场景: 数据分布:热图可以显示数据在不同区域的分布情况,比如在地图上显示不同地区的…

【cocos creator】ts中export的模块管理

在 TypeScript(TS)中,export 和 import 的概念与 Java 中的 public 类、接口以及 import 语句有一些相似之处。可以用以下方式来类比理解: Export 在 TypeScript 中,export 用于将模块中的变量、函数、类等暴露给外部…

Mac 下华为鸿蒙 :DevEco Studio 开发工具下载

1.登录:华为开发者中心--开发--下载工具DevEco Studio 2.下载完成后 ,安装,并创建一个新项目。 3.Tools --点击SDK Manager 下载SDK: 如果报:淘宝镜像源错误: npm ERR! code CERT_HAS_EXPIRED npm ERR! errno CERT_H…

优略解距离法—Topsis模型【清风数模学习笔记】

层次分析法的局限性 (1)决策层不能太多 (2)数据已知,使用层次分析法不准确 构造计算评分 相较于取卷面理论上的最高分(100)和最低分(0),取分数区间上的最…

Visio绘制的Tanh激活函数结构图,可导出高清图片,可修改,无水印。

Visio绘制的Tanh激活函数结构图,可导出高清图片,可修改,无水印。 方便用于小论文写作,方便用于毕业设计。 Visio版本为2021版,可用更高版本打开。 下载地址:tanh 图片展示:

C语言程序设计10

程序设计10 问题10_1代码10_1结果10_1 问题10_2代码10_2结果10_2 问题10_3代码10_3结果10_3 问题10_1 下列给定程序中已建立一个带结点的单向链表,链表中的各结点数据中的数据递增有序链接,函数 f u n fun fun 的功能是:把形参 x x x 的值放…

【echarts】存在左右Y轴,多个图例切换时,图宽度会缩短(没有右轴,图宽度正常。 高亮右轴,图宽度会变窄。)- 已解决

问题描述: 在绘制图表时,左侧 Y 轴有一条曲线,右侧 Y 轴有三条曲线。初始化时发现,图表的宽度变窄了,这在 PC 端不太明显,但在移动端特别明显。 没有右轴,图宽度正常。 高亮右轴,图…

Windows系统设置暂停更新,暂停时间可达3000天,“永久”暂停更新,亲测有效

好多小伙伴被Windows系统的更新搞得很烦,经常在使用中自己下载更新包,占用网路资源,过段时间就要更新,特别讨厌 今天教你一招,可以暂停更新长达3000天,亲测有效 1、打开系统CMD命令执行窗口,输…

英伟达、Mistral AI 开源企业级大模型,120亿参数、可商用

全球AI领导者英伟达(Nvidia)和著名开源大模型平台Mistral.ai联合开源了,企业级大模型Mistral NeMo 12B。(以下简称“MN 12B”) 据悉,MN 12B一共有基础和指令微调两种模型,支持128K上下文长度&a…

因为很会用工具,拿下了很多客户!

作为一名想要得到更多业绩的打工人,能提高工作效率的工具一定要拥有! 今天,就给大家分享一个职场必备的提效神器,一起来看看它都有哪些功能吧! 1、多渠道客源 它可以从多个渠道去获取你想要的客户资源,无…

代码随想录——一和零(Leetcode474)

题目链接 0-1背包 class Solution {public int findMaxForm(String[] strs, int m, int n) {// 本题m,n为背包两个维度// dp[i][j]:最多右i个0和j个1的strs的最大子集大小int[][] dp new int[m 1][n 1];// 遍历strs中字符串for(String str : strs){int num0 …

免费【2024】springboot 必录德健身器材用品网的设计与实现

博主介绍:✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围:SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

java面向对象进阶进阶篇--《包和final》

一、前言 今天还是面向对象相关知识点的分享,包是写小型项目时不可或缺的存在,final关键字用的地方不算太多。idea会提示我们导包,有时会自动导包,确实十分方便。但是我们也不能不会自己去导包。 面向对象篇不出意外的话本周就要…

22集 如何minimax密钥和groupid-《MCU嵌入式AI开发笔记》

22集 如何获取minimax密钥和groupid-《MCU嵌入式AI开发笔记》 minimax密钥获取 https://www.minimaxi.com/platform 进入minimax网站,注册登录后,进入“账户管理”, 然后再点击“接口密钥”,然后再点击“创建新的密钥”。 之…

《0基础》学习Python——第十九讲__爬虫/<2>

一、用get请求爬取一般网页 首先由上节课我们可以找到URL、请求方式、User-Agent以及content-type 即:在所在浏览器页面按下F12键,之后点击网路-刷新,找到第一条双击打开标头即可查看上述所有内容,将上述URL、User-Agent所对应的…

1.6、计算机系结构

Flynn分类法 Flynn分类法是1966年,M. J. Flynn提出的根据指令流、数据流的多倍性特征对计算机系统的分类方法。 指令流为机器执行的指令序列。数据流是由指令调用的数据序列。包括输入数据和中间结果,不包括输出数据 分类 Flynn把计算机系统的结构分…

初学MWA(Modern Web App)那些事-3-做一个简单的计算器

初学MWA(Modern Web App)那些事-3-做一个简单的计算器 目录 初学MWA(Modern Web App)那些事-3-做一个简单的计算器前言一、本节学习目标二、计算器实例项目创建过程2.1 创建一个HTML文档2.2 查看新建的html文档2.3 Web应用开发:初始化设置2.4…

linux C++ onnxruntime yolov8 视频检测Demo

linux C onnxruntime yolov8 视频检测Demo 目录 项目目录 效果 ​编辑CMakeLists.txt 代码 下载 项目目录 效果 ./yolov8_demo --help ./yolov8_demo -c2 -ptrue ./yolov8_demo -c1 -strue CMakeLists.txt # cmake needs this line cmake_minimum_required(VERSION 3…

AMD EPYC处理器性能宣称远超Nvidia Grace CPU

AMD近期发布了一份博客文章,其中对比了其EPYC处理器与Nvidia Grace Hopper Superchip(基于Arm架构的72核CPU)在一系列基准测试中的性能,声称EPYC处理器在多种工作负载下的表现最多可高出两倍。这一比较突显了AMD在数据中心CPU市场…

Covalent(CXT)运营商网络规模扩大 42%,以满足激增的需求

Covalent Network(CXT)是领先的人工智能模块化数据基础设施,网络集成了超过 230 条链并积累了数千名客户,目前 Covalent Network(CXT)网络迎来了五位新运营商的加入,包括 Graphyte Labs、PierTw…