如何在JavaScript和Python之间传递变量/函数,反之亦然?

我正在使用HTML、CSS和JavaScript创建一个网站,我需要一个由AI驱动的聊天机器人。我已经有了包含聊天机器人逻辑(AI、NLTK)的Python文件。现在,在Python文件中,我有一个名为“response()”的函数,它接受用户消息作为参数,并在运行NLP逻辑后返回处理后的响应。我想做的是,当用户发送消息时,

  1. JavaScript会将该消息存储在一个变量中(假设为user-response),并应将该变量作为参数发送到Python文件的“response()”函数:response(user-response)

  2. Python文件应使用response(user-response)函数,并将处理后的输出发送回JavaScript文件

我该如何实现这一点?

这是Python的逻辑

def response(user_response):     #This argument has to be passed from JavaScript    robo_response = ''    sent_tokens.append(user_response)    TfIdVec = TfidfVectorizer(tokenizer=LemNormalize, stop_words='english')    tfidf = TfIdVec.fit_transform(sent_tokens)    vals = cosine_similarity(tfidf[-1], tfidf)    idx = vals.argsort()[0][-2]    flat = vals.flatten()    flat.sort()    req_tfidf = flat[-2]    GREETING_INPUTS = ("hello", "hi", "greetings", "sup", "what's up", "hey")    GREETING_RESPONSES = ["hi", "hey", "*nods*", "hi there", "hello", "I'm glad you're talking to me"]    for word in user_response.split():        if (word.lower() in GREETING_INPUTS):            return random.choice(GREETING_RESPONSES)    if(req_tfidf == 0):        robo_response = [            "Sorry, I have not been trained to answer that yet!",             "Sorry, I cannot answer to that!            ]        return random.choice(robo_response);                robo_response = robo_response+sent_tokens[idx]        return robo_response;response("")     #This response has to be sent back to JavaScript

这是JavaScript代码

function returnsUserMessage(){    var userResponse = document.getElementById('input-chat').value;    console.log(userResponse);    return userResponse;}

回答:

我将为你提供几个步骤,但正如评论中@Pointy所说,“如何做到这一切是一个非常大的话题,单单一个Stack Overflow问题无法涵盖”,所以请将这视为一个路线图。

附注:我假设你不希望在前端执行AI逻辑,因为这对客户端来说负担太重。

1- 使用Python创建一个后端服务器(或REST API)。

2- 将你的AI逻辑注入到HTTP请求(GET/POST)中。

后端是一个很大的话题,但我在这里提供一个小例子:

from flask import Flask, json, requestdef response(user_response):    ...api = Flask(__name__)@api.route('/response', methods=['POST'])def post_response():  user_response = json.loads(request.json)["user_response"]  return json.dumps({response: response(user_response)})if __name__ == '__main__':    api.run()

3- 从前端,将用户输入发送到后端(使用你在步骤2中创建的HTTP请求),然后将响应写回。

示例:

<button onclick="returnsUserMessage()">发送</button><script>async function returnsUserMessage() {  var user_input = document.getElementById("input-chat").value;  var bot_reponse = await fetch('localhost/response',    {      method: 'POST',      headers: {        'Content-Type': 'application/json'      },      body: JSON.stringify({user_response: user_input})    });  // 然后你需要在你的元素中展示机器人的响应}</script>

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注