Call openai-node in the backend or call https in the frontend?

news2024/11/10 22:46:02

题意:在后端调用 `openai-node` 还是在前端调用 `https`?

问题背景:

I have a web application by ReactJS and Nodejs. This application calls OpenAI APIs.

我有一个使用 ReactJS 和 Node.js 开发的 Web 应用程序。这个应用程序调用 OpenAI 的 API。

Previously, when a user launches a request in the frontend, we send a request to the endpoint in our backend, call createChatCompletion of https://github.com/openai/openai-node in the backend, and returns the result to the frontend. Note that the server of our frontend and the server of our backend are separate and not in the same location; users are everywhere in the world.

之前,当用户在前端发起请求时,我们会将请求发送到后端的一个端点,在后端调用 `https://github.com/openai/openai-node` 的 `createChatCompletion`,然后将结果返回到前端。需要注意的是,我们的前端服务器和后端服务器是分开的,且不在同一地点,用户遍布世界各地。

We just realized that we can also request directly https://api.openai.com/v1/chat/completions in the frontend as follows:

我们刚刚意识到,我们也可以直接在前端请求 `https://api.openai.com/v1/chat/completions`,如下所示:

   const res = await fetch("https://api.openai.com/v1/chat/completions", {
        method: 'POST',
        headers: {
            "Content-Type": "application/json",
            Authorization: `Bearer ${API_KEY}`
        },
        body: JSON.stringify({
            model: model,
            messages: [{ role: "user", content: prompt }]
        })
    })

At the moment, our pain-point is the time from sending a request by a user to seeing the result in the application is too long. From this perspective of speed, does anyone know which approach is better and why?

目前,我们的问题是从用户发送请求到在应用程序中看到结果的时间太长。从速度的角度来看,有谁知道哪种方法更好,以及原因是什么?

问题解决:

One thing to keep in mind is that everything in your front end is essentially public. In this case, if you do the call directly from the browser, it's trivial for users to capture your api key.

需要记住的一点是,前端的一切本质上都是公开的。在这种情况下,如果你直接从浏览器发起调用,用户可以很容易地获取到你的 API 密钥。

Removing the call to your server likely won't make a significant difference anyway; AI is rather slow. A better solution may be to use the streaming API (and also stream from your backend to your frontend) so the users can see the response as it's generated.

即使去掉对你服务器的调用,也不会有显著的差别;人工智能的响应速度本身较慢。一个更好的解决方案可能是使用流式 API(同时从你的后端向前端流式传输),这样用户可以在响应生成时实时看到结果。

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

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

相关文章

分享几个简单的Pandas数据处理函数

文末赠免费精品编程资料~~ 大家好,今天给大家简单分享几个好用的Pandas数据处理函数。 id,category,sub_category,sales,year,var1,var2,age,score,status,quantity 1,A,B,100,2019,50,70,35,85,active,100 2,B,C,120,2020,60,80,28,90,inactive,200 3,A,C,110,20…

RTX5源码全家桶集成emWin6.40, Modbus主从,含FreeRTOS版, 探讨一种移植第3方组件通用方法以及使用注意事项2024-08-30

视频: https://www.bilibili.com/video/BV1tFHuenESf RTX5源码全家桶集成emWin6.40, Modbus主从,含FreeRTOS版, 探讨一种移植第3方组件的通用方法以及多任务使用注意事项 提纲: 参考资料: 1、例程下载 RTX5 All In One(2024-08-30 V2.0).7…

计算机毕业设计选题推荐-高校实验室教学管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

RNN及其变体

RNN及其变体 RNN模型定义 循环神经网络:一般接受的一序列进行输入,输出也是一个序列 作用和应用场景: RNN擅长处理连续语言文本,机器翻译,文本生成,文本分类,摘要生成 RNN模型的分类 根据输入与输出结构 N Vs N : 输入和输出等长,应用场景:对联生…

利用 ChatGPT 快速将界面原型转换为 Vue 代码实现

在现代前端开发中,快速、高效地将设计原型转化为实际可运行的代码是开发人员追求的目标。借助 ChatGPT,这一过程可以显著加速。本文将展示如何通过 ChatGPT 辅助开发,将基于 iView 框架的界面原型在短短 2~3 分钟内转换为 Vue 代码&#xff0…

影视会员充值API接口如何开发?

影视会员充值 API 接口的开发流程 需求分析 明确接口的功能需求、性能要求和安全标准等 设计规划 确定接口的架构、数据格式、交互方式等 技术选型 选择适合的开发语言、框架和数据库等 编码实现 按照设计进行代码编写和功能实现 测试优化 进行单元测试、集成测试、压力测…

黄力医生谈健康:掌握这几个秘诀,帮你远离冠心病困扰!

随着生活水平的提高,人们的饮食结构和生活习惯发生了显著变化,这使得冠心病的患病率呈现出逐年上升的趋势,且发病年龄也越来越年轻化。面对这一严峻的健康挑战,提高对冠心病的认识,及早进行干预显得尤为重要。今天&…

【鬼灭之刃学英语 立志篇】2、义勇对炭治郎的怒斥

义勇对炭治郎的怒斥 1、不要卑躬屈膝2、脆弱的3、与现在事实相反的虚拟语气4、像你这样的弱者5、别开玩笑了6、弱者没有权利7、无情地被强者碾压8、知道做某事的方法9、尊重意愿10、这就是现实11、那就是你做某事的方式吗12、你为什么不...13、是...导致...1x、本可以做某事 1、…

OpenCV绘图函数(11)计算文本字符串在特定字体、尺寸和厚度下的大小的函数getTextSize()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 计算一个文本字符串的宽度和高度。 函数 cv::getTextSize 计算并返回包含指定文本的矩形框的尺寸。也就是说,下面的代码渲染一些文本…

Cadence高速板设计技巧(全志H3)[三]

Cadence绕等长线真的是好用,这一点碾压AD和嘉立创。 这里有一个技巧,在CPU四周的焊盘有时候确实需要过孔换层,但是并不直接在CPU周围打孔,把线拉出去过孔,这样可以防止焊接的时候锡流进过孔造成短路,同时也…

2.1 程序设计语言与概述

以下程序设计语言中,( )更适合用来进行动态网页处理。 A. HTML B. LISP C. PHP D. JAVA/C 正确答案是 C。 解析 HTML:静态网页 LISP:一种基于入演算的函数式编程语言 PHP:混合了C、Java、Perl以及PHP自创的…

C#学习笔记(二)安装开发环境、代码编译运行

博主刚开始接触C#,本系列为学习记录,如有错误欢迎各位大佬指正!期待互相交流! 文章目录 一、安装开发环境二、编写C#代码2.1 打开终端命令窗口2.2 编译运行2.3 清除终端窗口 一、安装开发环境 博主选择安装的是VS Code&#xff0…

食家巷中秋美食,味蕾上的团圆盛宴

月到中秋分外明,在这个充满温情与思念的节日里,美食成为了人们传递情感、共享团圆的重要载体。而食家巷,以其独特的中秋美食,为这个佳节增添了一抹别样的风味。 走进食家巷,仿佛踏入了一个美食的宝藏之地。这里的传统…

MES系统在汽车行业的应用

1. MES系统在汽车行业的应用背景 1.1 汽车行业生产特点 复杂性:汽车制造涉及成千上万的零部件,需要高度复杂的生产流程和精细的工艺管理。定制化:随着消费者需求的多样化,汽车行业越来越倾向于小批量、多品种的生产模式。质量要…

实战 element-plus 级联选择器(Cascader)+企微部门架构

先看效果 : 1、部门架构数据来源于企业微信; 2、部门层级关系的展现和勾选; 具体实现: 1、组件官方文档 http://element-plus.org/zh-CN/component/cascader.html 级联选择器组件要求的数据格式: 重点:了…

一文解决CLion控制台(cmd)问题【超详细】

CLion作为jetbrains全家桶中的一员,和其他产品一样都是轻量化,便捷,但有个地方不太方便,那就是控制台,有时候我们需要控制台,有时候又不需要,但在我们需要的时候,如何调出&#xff0…

QMS质量管理系统:核心功能详解与企业落地实践指南

QMS(Quality Management System)质量管理系统是一种用于规划、实施、监控和持续改进企业质量活动的综合性系统。它涵盖了质量管理的各个方面,旨在确保产品和服务符合质量标准、法规要求及客户期望。以下是QMS质量管理系统的具体功能介绍&…

零基础Opencv学习(三)

概述:主要目的是为了在图像中获取所需要的特征信息,比如直线或者圆等 一、标准霍夫变换 cv::Mat midImage, dstImage;/// 边缘检测 转化灰度图cv::Canny(image, midImage, 50, 200, 3);cv::cvtColor(midImage, dstImage, CV_GRAY2BGR);/// 进行霍夫线变…

【Unity】简单机甲运动系统——坦克式操控方式

最近两天想做一个人形机甲的游戏,由于本人又是一个拟真军事爱好者,不太喜欢机动特别高的,所以打算参考坦克类游戏来制作一个脚!踏!实!地!的机甲游戏 这个运动系统基本实现了逻辑和动画的分离&a…

【Python系列】SQLAlchemy 基本介绍

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…