Node.js backend for OpenAI image generation giving error code 400

题意:用于 OpenAI 图像生成的 Node.js 后端返回错误代码 400。

问题背景:

I am trying to build a backend for the first time using Node.js. This is what I need: Generate image based on prompt -> Get the image and upload it to supabase storage -> Return public URL to uploaded image. I keep getting an error that implies an authentication error (400) from OpenAI but I know the API key is valid and even made a new one just to be sure. The generation was working when I was making requests to the API directly from the front end but that leaves the API key exposed. I'm not sure what is wrong.

我正在第一次使用 Node.js 构建后端。这是我需要做的:根据提示生成图像 -> 获取图像并上传到 Supabase 存储 -> 返回上传图像的公共 URL。我不断收到一个暗示身份验证错误(400)的错误,但我知道 API 密钥是有效的,甚至为了确保还创建了一个新的密钥。当我直接从前端向 API 发送请求时,生成是有效的,但这会暴露 API 密钥。我不确定哪里出错了。

Node.js:

const express = require('express');
const axios = require('axios');
const bodyParser = require('body-parser');
const fs = require('fs');
const FormData = require('form-data');
const { createClient } = require('@supabase/supabase-js');const app = express();
const port = 3000;
const apiKey = '<HIDDEN>';
const supabaseUrl = '<HIDDEN>';
const supabaseKey = '<HIDDEN>';
const supabaseBucket = 'public/posts';const config = {headers: {'Authorization': 'Bearer ' + apiKey,'Content-Type': 'application/json'}
};const supabase = createClient(supabaseUrl, supabaseKey);app.use(bodyParser.json());// Allow any access control origin
app.use(function(req, res, next) {res.header('Access-Control-Allow-Origin', '*');res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept');next();
});app.post('/generate-image', async (req, res) => {try {const { text } = req.body;// Build the request to the Dall-e APIconst response = await axios.post('https://api.openai.com/v1/images/generations',{prompt: text,size: "256x256",api_key: apiKey,response_format: "b64_json"},config);console.log("image created...");// Get the generated image as a base64-encoded stringconsole.log("getting image...");const imageBase64 = response.data.data[0].value;// Upload the image to Supabase storageconst { data: uploadData } = await supabase.storage.from(supabaseBucket).upload(Date.now() + '.png', imageBase64, {cacheControl: '3600',upsert: false,contentType: 'image/png',});// Return the public URL for the uploaded fileres.json({imageUrl: `${supabaseUrl}/public/${supabaseBucket}/${uploadData.Key}`,});} catch (error) {res.status(500).json({ message: `Failed to generate image ${error}` });}
});app.listen(port, () => {console.log(`Server listening on port ${port}`);
});

Request from React Native app:

const generateImage = async (text: any) => {try {const response = await fetch("https://endpoint.com/generate-image",{method: "POST",headers: {"Content-Type": "application/json",},body: JSON.stringify({ text }),});const data = await response.json();console.log(data.imageUrl);return data.imageUrl;} catch (error) {console.error(error);return null;}
};

Response:

{"message": "Failed to generate image AxiosError: Request failed with status code 400"
}

问题解决:

You are sending api_key: apiKey in the request body, which the OpenAI API isn't expecting.

你在请求体中发送了 api_key: apiKey,而 OpenAI API 并不期望这个。

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

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

相关文章

浅析OceanBase数据库的向量化执行引擎

本篇博客是偏数据库系统概念性的内容&#xff0c;不会深入到 OceanBase 中各个算子和表达式的在向量化中的详细设计和实现。 背景 为了提升OceanBase社区版用户解决问题的效率&#xff0c;OceanBase官方不久前推出了《OceanBase 从入门到实践》系列课程。在第七期直播课程后&a…

基于MATLAB的安全帽检测系统

课题名称 课题介绍 众所周知&#xff0c;在一些施工工地&#xff0c;必须明确佩戴安全帽。可以对生命安全起到保障作用。该课题为常见的安全帽的识别&#xff0c;主要分为红色&#xff0c;蓝色&#xff0c;黄色三类安全帽。而安全帽的主要是红色&#xff0c;蓝色&…

项目文件配置

1. 参数配置化 1.1 问题分析 1.2 问题解决 Value 注解通常用于外部配置的属性注入&#xff0c;具体用法为&#xff1a;Value("${配置文件中的key}") 2. yml配置文件 2.1 SpringBoot提供了多种属性配置方式 2.2 常见配置文件格式对比 2.3 yml 基本语法 大小写敏…

相位型SLM硬件产品面型性能提升

背景介绍 作为一种动态可编程光学元件&#xff0c;液晶空间光调制器&#xff08;LC-SLM&#xff09;在波前整形和光束控制等精密光学调控应用中发挥着非常重要的作用。典型的纯相位SLM工作原理是通过加载的电压控制在每个液晶像素处诱导相位延迟&#xff0c;实现对入射光波波前…

滚珠花键与滚珠丝杆的区别与应用

在机械工业中&#xff0c;经常使用滚珠花键这种传动元件&#xff0c;人们经常拿它与滚珠丝杆相比较&#xff0c;甚至与之混淆。事实上&#xff0c;它们是不同的&#xff0c;滚珠花键和滚珠丝杆在机械传动领域中各有其独特的作用和特点。那么&#xff0c;两者之间的区别是什么呢…

渐变色代码主题你受得了吗

分享一个vscode编辑器的渐变色主题 效果图如下 vscode扩展搜索 gradient theme安装即可。

LinuxC高级作业2

1.整理思维导图 2.做一套笔试题 一&#xff1a; 1.cd .. mkdir dir1 cd dir1 touch file1 2.cp ~/mnt/dir1/ -r * ~/home/dir2/ 3.pwd 4.ls -l 5.ifconfig 6.top 10.find /usr -type f -name "*name*" 11.:wq 13.df -h 14.tar -xzvf tmp.tar.gz 15.sudo c…

Windows安装启动:stable-diffusion-webui,AIGC大模型文生图、文生视频,Python

Windows安装启动:stable-diffusion-webui&#xff0c;AIGC大模型文生图、文生视频&#xff0c;Python stable-diffusion-webui是github上的AIGC开源项目&#xff0c;地址&#xff1a; https://github.com/AUTOMATIC1111/stable-diffusion-webuihttps://github.com/AUTOMATIC1…

ThreadLocal的用法

概述 ThreadLocal提供了线程局部变量&#xff0c;用于在线程中保存数据&#xff0c;在ThreadLocal中保存的数据仅属于当前线程&#xff0c;所以ThreadLocal实例的get或set方法访问自己的独立副本&#xff0c;这些副本之间相互隔离&#xff0c;互不影响 ThreadLocal利用Thread中…

YOLOv8改进系列,YOLOv8替换主干网络为PP-HGNetV2(百度飞桨视觉团队自研,助力涨点)

摘要 PP-HGNetV2(High Performance GPU Network V2) 是百度飞桨视觉团队自研的 PP-HGNet 的下一代版本,其在 PP-HGNet 的基础上,做了进一步优化和改进,最终在 NVIDIA GPU 设备上,将 “Accuracy-Latency Balance” 做到了极致,精度大幅超过了其他同样推理速度的模型。其在…

828华为云征文|基于华为云Flexus X实例快速搭建Halo博客平台

目录 前言 一、Flexus云服务器X介绍 1.1 Flexus云服务器X实例简介 1.2 Flexus云服务器X实例特点 1.3 Flexus云服务器X实例场景需求 二、Flexus云服务器X购买 2.1 Flexus X实例购买 2.2 购买MySQL加速镜像 2.3 重置密码 2.4 登录服务器 三、Flexus X实例安装Docker 3.1 系统版本…

天宝Trimble RealWorks2024.0.2注册机 点云后处理软件 点云三维重建软件

一、功能特色 1、强大的点云数据处理平台 Trimble Realworks2024是市面上先进的点云数据处理软件&#xff0c;能够配准、可视化、浏览和直接处理市面上几乎所有主流品牌扫描仪点云数据&#xff0c;包括Leica、Riegl、ZF、Faro、Topcon等。 2、业界领先的无目标全自动配准 T…

前端大数据渲染:虚拟列表、触底加载与分堆渲染方案

前言 针对表格展示数据&#xff0c;用户提出要求前端在表格下面有一展示多少条数据的选项&#xff0c;如果要求一次性展示10000条数据&#xff0c;如果直接染会造成页面的卡顿&#xff0c;渲染速度下降&#xff0c;内容展示慢,如果有操作&#xff0c;操作会卡顿 下面总结常见…

【C++】STL----list常见用法

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;C从小白到高手 &#x1f339;往期回顾&#x1f339;&#xff1a;[C]vector常见用法 &#x1f516; 流水不争&#xff0c;争的是滔滔不息。 文章目录 一、list的介绍li…

【软件基础知识】什么是 API,详细解读

想象一下,你正在使用智能手机上的天气应用。你打开应用,瞬间就能看到实时天气、未来预报,甚至是空气质量指数。但你有没有想过,这些数据是如何神奇地出现在你的屏幕上的?答案就在三个字母中:API。 API,全称Application Programming Interface(应用程序编程接口),是现代软件世…

数字签名和CA数字证书的核心原理

看了蛋老师的视频就很容易理解了&#xff0c;首先对服务器的公钥和信息进行哈希运算得到一个短字符串&#xff0c;然后用CA机构中的私钥对这一短字符串进行加密就得到了一个数字签名&#xff0c;然后就这个数字签名放到数字证书中&#xff0c;同时服务器的公钥也放在数字证书中…

Unity之FPS

目录 &#x1f3ae;MouseLook摄像机旋转脚本 &#x1f3ae;PickUpItem武器拾取脚本 &#x1f3ae;PlayerController玩家控制器 &#x1f3ae;Inventory武器库 &#x1f3ae;Weapon武器抽象类 &#x1f3ae;Weapon_AutomaticGun武器脚本 其实这个教程很早就收藏了就是被20…

9.20哈好

函数体 #include"SeqList.h"void SeqList::init(int n) {this->ptrnew data[n];this->len0;this->sizen; }bool SeqList::empty() {return this->len0; }bool SeqList::full() {return this->sizethis->len; }void SeqList::push_back(data e) {i…

未来通信抢先看!遨游通讯2024年中国国际信息通信展亮点剧透

2024年中国国际信息通信展览会将于9月25日-27日在北京国家会议中心举行&#xff0c;本届展会以“推动数实深度融合&#xff0c;共筑新质生产力”为主题。在通信技术日新月异的今天&#xff0c;卫星通信、人工智能、低碳节能等技术理念正引领着通信行业迈向新的高度。遨游通讯作…

计算机毕业设计 基于Python的汽车销售管理系统 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…