Trying to update a textarea with string from an OpenAI request

news2024/9/21 22:12:54

题意:把从 OpenAI 请求中得到的字符串更新到一个文本区域中。

问题背景:

Can anyone assist me with an issue I'm facing. I'm trying to append a string received back from an OpenAI request to an exisitng textarea element. The requested string is received and stored in the back end in an array called response.data.choices[0].text. I'm currently trying to append the {response} string into an existing textarea in the front end using the code <textarea id="textarea">{response}</textarea>. The issue seems to be that code: <textarea id="textarea">{response}</textarea> is creating the textarea on screen (on launch) prior to string data being received/stored into the response array as there is significant latency with respect to the response time between the back end request and what is received from OpenAI. I'm unsure how to overcome this issue do i need to have some sort of thread to constantly check for changes in the array than delete and recreate the textarea element? I honestly have no clue how to bypass this issue any help would be so greatly appreciated. Thanks again for your time.

我遇到一个问题,希望有人能帮忙。我正在尝试将从 OpenAI 请求中接收到的字符串追加到现有的文本区域元素中。请求的字符串已接收到并存储在后端的数组 `response.data.choices[0].text` 中。目前,我尝试使用代码 `<textarea id="textarea">{response}</textarea>` 将 `{response}` 字符串追加到前端的现有文本区域中。问题是代码 `<textarea id="textarea">{response}</textarea>` 会在页面加载时创建文本区域元素,但此时字符串数据尚未接收到并存储到 `response` 数组中,因为后端请求与 OpenAI 之间的响应时间存在显著延迟。我不确定如何解决这个问题。是否需要某种线程来不断检查数组中的变化,然后删除并重新创建文本区域元素?我真的不知道如何绕过这个问题,任何帮助都会非常感激。再次感谢您的时间。

It's really important that the textarea is to appear before the response is received.

关键是文本区域必须在接收到响应之前出现。

APP.JS (Front End)        前端

import React, { useState } from 'react';


function App() {
  const [message, setMessage] = useState('');
  const [response, setResponse] = useState('');

  const handleSubmit = (e) => {
      e.preventDefault();
      fetch('http://localhost:3001/', {
        method: 'POST',
        headers: {
          'Content-Type': 'application/json',
      },
      body: JSON.stringify({ message }),
    })

      .then((res) => res.json())
      .then((data) => setResponse(data.message));
  };

  return (
    <body>
      <div className="App">
        <form onSubmit={handleSubmit}> 
        <div class="section"></div>

            //User inputs there question to OpenAI
            <input type="text" class="topic" placeholder="Interest Rates, Quantum Mechanics, Team Management"
              value={message}
              onChange={(e) => setMessage(e.target.value)}
            ></input>

            //Submits user input to back end
            <div> <button id="generate" type="submit">Generate</button> </div>
            
            //Attempting to write the response from back end to textarea (cannot due to latency)
            <textarea id="textarea">{response}</textarea>

            <div class="break">
            </div>
            
        </form>
        //prints back end response from OpenAI (for refference only)
        <h4>{response}</h4>
      </div>
    </body>
    
  );
}

export default App

INDEX.JS (Back End)        后端代码

const OpenAI = require('openai');
const { Configuration, OpenAIApi } = OpenAI;

const express = require('express');
const bodyParser = require('body-parser');
const cors = require('cors');
const app = express();
const port = 3001;

const configuration = new Configuration({
    organization: "org-kEBxx4hVwFZZeA",
    apiKey: "sk-jmYuTSCZvxCjidnbTpjFT3BlbkFJ9nFcGxbH4V",
});
const openai = new OpenAIApi(configuration);
 
app.use(bodyParser.json());
app.use(cors());

app.post('/', async (req, res) => {
    const { message } = req.body;
    const response = await openai.createCompletion({
        model: "text-davinci-003",
        prompt: `${message}`,
        max_tokens: 100,
        temperature: 0,
      });
    console.log(response.data)
    if(response.data.choices[0].text){
        res.json({message: response.data.choices[0].text})
    }
    
});

app.listen(port, () => {
    console.log("Listening...")
});

问题解决:

I would check out this link for more information on textareas. The short of it is you should replace

我建议你查看[这个链接](#)获取有关文本区域的更多信息。简而言之,你应该替换以下内容:

被替换语句

<textarea id="textarea">{response}</textarea>

with        替换语句

<textarea id="textarea" value={response} />

Although, if the user is not going to be editing the response from OpenAI, I would consider just using a styled text element like <p> or <h4> like you have below. Textarea's big benefit is allowing use to edit multiline inputs, which perhaps doesn't seem necessary for it's use here.

不过,如果用户不会编辑从 OpenAI 接收到的响应,我建议考虑使用像 `<p>` 或 `<h4>` 这样的样式化文本元素,就像你下面使用的一样。文本区域的主要优点是允许用户编辑多行输入,但在这里的用途上似乎并不必要。

As a second note, it sounds like you don't want the textarea to appear until the response is received. For that, you can do something like

第二点是,听起来你希望文本区域在接收到响应后才出现。为此,你可以这样做:

{response.length > 0 && <textarea id="textarea" value={response} />}

which will refrain from displaying the element until the response is not empty. You might also choose to instead track the status of the backend using a boolean for readability.

这样做可以避免在响应为空之前显示该元素。你还可以选择使用布尔值来跟踪后端的状态,以提高代码的可读性。

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

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

相关文章

【ESP-IDF FreeRTOS】信号量

下一个内容&#xff0c;信号量。 先包含头文件。 #include "freertos/semphr.h" 我们通过队列可以进行任务间的数据传递&#xff0c;也可以通过队列来控制任务间的同步。如果我只需要控制任务而不需要传递数据&#xff0c;那么我们完全可以用信号量来代替队列。 …

VS2019开发CAN上位机

1、CAN分析仪&#xff0c;主要功能就是把CAN信号转换成电脑能接收的USB信号。索引号是指电脑连接了几台CAN分析仪设备&#xff0c;一般情况下都是一台&#xff0c;该值为0。不同CAN盒的二次开发文件不同 2、CAN上位机一般只能适应一个CAN盒&#xff0c;如果需要实现多个CAN盒通…

Elasticsearch - SpringBoot 查询 es 相关示例

文章目录 前言Elasticsearch - SpringBoot 查询 es1. ES 整合2. 示例-简单匹配查询3. 示例-简单范围查询4. 示例-布尔查询-分页查询-match 查询5. 示例-布尔查询-分页查询-term查询 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三…

深度学习的基础_多层感知机的手动实现

多层感知机&#xff08;Multilayer Perceptron&#xff0c;简称MLP&#xff09;是一种前馈人工神经网络。它包含至少三层节点&#xff1a;一个输入层、一个或多个隐藏层以及一个输出层。除输入节点外&#xff0c;每个节点都是一个带有非线性激活函数的神经元&#xff08;或称为…

c# net8调用vc写的dll

dll程序&#xff08;vc,x86) 头文件 extern "C" int __declspec(dllexport) WINAPI add(int a, int b);实现 int WINAPI add(int a, int b) {return a b; }c#/net8 函数声明&#xff1a; [DllImport("dll/Dll1.dll", CallingConvention CallingCo…

redis的一些重要的基础知识

文章目录 1. rehash1.1 redis的hash表的数据结构 2. AOF日志2.1 简要介绍2.2 AOF重写 3. RDB快照3.1 执行过程3.2 存在问题解决方式 1. rehash 本文只介绍数据结构和结果图&#xff0c;如果要看文字描述过程&#xff0c;可以参考链接&#xff1a;rehash的详细过程 1.1 redis的…

最近 3 个 火火火火 的开源项目!

01 为你的敏感照片添加安全水印 EasyWatermark 是由开发者 rosuH 发起的一个开源项目&#xff0c;旨在帮助用户安全、轻松地为他们的照片添加水印。 这个工具不仅能够保护你的知识产权&#xff0c;还能在一定程度上防止照片被未经授权的人使用。EasyWatermark的核心功能包括&am…

WGCNA加权基因共表达网络一步法分析学习

WGCNA&#xff08;Weighted Gene Co-expression Network Analysis&#xff0c;加权重基因共表达网络分析&#xff09; WGCNA是一种用于分析基因表达数据的系统生物学方法。主要用于识别在基因表达数据中呈现共表达模式的基因模块&#xff0c;并将这些模块与样本特征&#xff0…

LSTM-Autoencoder深度学习模型在电动机异常检测中的应用

LSTM-Autoencoder深度学习模型在电动机异常检测中的应用 LSTM-Autoencoder Deep Learning Model for Anomaly Detection in Electric Motor Citation: Lachekhab, F.; Benzaoui, M.; Tadjer, S.A.; Bensmaine, A.; Hamma, H. LSTM-Autoencoder Deep Learning Model for Anoma…

Stable Diffusion绘画 | LightFlow工作流插件:一键导入,高效生图

LightFlow 是腾讯开源的工作流插件&#xff0c;通过它可以非常轻松地导入和导出工作流文件&#xff0c;从而快速地加载整个工作流。 下载后&#xff0c;放置在&#xff1a;SD安装目录\extensions&#xff0c;重载UI 即可使用&#xff0c;插件位置在生成图片区域下方&#xff1…

2024年8月31日CSDN自动提示的用法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

视频结构化从入门到精通———检索比对类应用

检索比对类应用 1 认识“检索比对” 1.检索和比对的区别 检索和比对是信息处理和数据分析中常见的两种操作&#xff0c;虽然二者在一定程度上都有涉及到信息的提取和分析&#xff0c;但其侧重点和应用场景有所不同。检索主要关注从大规模数据集中定位相关信息&#xff0c;而比…

腾讯云TRTC无UI集成——分享屏幕主流、辅流(Vue2+JS+TRTC无UI集成)

先阐述一下问题&#xff0c;在项目中用到腾讯云的TRTC&#xff0c;A端发布A1、A2两个视频源&#xff0c;在B端订阅A1、A2使用两个view进行播放渲染 问题主流视频源和辅流视频源渲染在同一view上&#xff0c;控制台报错 // 播放远端视频 TRTCService.js; setRemoteVideo(view)…

智慧工地可视化整体解决方案(Word完整版)

第 一 章 系统总体设计 1.1 总体架构 1.1.1 系统拓扑 1.1.2 系统组成 1.2 设计概述 1.3 平台系统功能 1.3.1 总部数据看板 1.3.2 项目部数据看板 1.3.3 视频联网系统 1.3.4 实名制考勤系统 1.3.5 安全生产系统 1.3.6 塔吊安全监控子系统 1.3.7 施工升降机安全监控管系统 1.3.8 …

Codeforces Round 969 (Div. 2 ABCDE题) 视频讲解

A. Dora’s Set Problem Statement Dora has a set s s s containing integers. In the beginning, she will put all integers in [ l , r ] [l, r] [l,r] into the set s s s. That is, an integer x x x is initially contained in the set if and only if l ≤ x ≤…

Java程序天生就是多线程程序Java程序天生就是多线程程序吗?

一个Java程序从main()方法开始执行&#xff0c;然后按照既定的代码逻辑执行&#xff0c;看似没有其他线程参与&#xff0c;但实际上Java程序天生就是多线程程序&#xff0c;因为执行main()方法的是一个名称为main的线程。而一个Java程序的运行就算是没有用户自己开启的线程&…

AIGC提示词(2):塑造未来内容创作的核心力量

引言 &#x1f31f; 在这个数字化的时代&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;正变得越来越普遍。从自动写作到图像生成&#xff0c;AI正以前所未有的速度和多样性创造内容。然而&#xff0c;要实现高质量和相关性强的内容生成&#xff0c;关键在于有效地…

Python变量类型

参考&#xff1a; Python 变量类型 | 菜鸟教程 (runoob.com) 变量赋值 Python 中的变量赋值不需要类型声明&#xff08;重点注意这一点&#xff09;。 每个变量在内存中创建&#xff0c;都包括变量的标识&#xff0c;名称和数据这些信息。 每个变量在使用前都必须赋值&#xff…

golang zap日志模块封装sentry

我们自己写个log日志包&#xff0c;把zap和sentry封装到一起。 下面直接贴上主要部分代码&#xff08;两个模块初始化部分的代码请自行查阅官方文档&#xff09;&#xff1a; logger.go package logimport ("github.com/getsentry/sentry-go""go.uber.org/zap…

使用Redis如何实现集群会话同步?

使用Redis如何实现集群会话同步&#xff1f; 1、为什么选择Redis&#xff1f;2、如何实现&#xff1f;1. 环境准备2. 配置Web服务器3. 测试与验证4. 监控与优化 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 在分布式Web应用中&#xff0c…