我肯定是笨的,但是我不知道如何处理openai API拒绝的请求(对于上下文,dall-e2是一个图像生成器)
当用户尝试生成禁用图像时,我的nodejs应用程序将退出
async function start(arg) {
try{
// generate image
const response = openai.createImage({
prompt: arg,
n: 1,
size: "1024x1024",
});
// on success response
response.then(res =>{
console.log("ok");
})
response.catch(err =>{
console.log(err);
});
} catch(e){
console.log(e);
}
}
它在出口处给出了这样的结果
data: {
error: {
code: null,
message: 'Your request was rejected as a result of our safety system. Your prompt may contain text that is not allowed by our safety system.',
param: null,
type: 'invalid_request_error'
}
}
尝试使用response.catch和尝试catch没有成功,应用程序每次都退出
我至少想首先忽略这个错误
另一方面,我希望console.log给定的消息(数据.错误.消息)
我真不知道该怎么办,甚至不明白为什么接球不管用
2条答案
按热度按时间q35jwt9p1#
根据给出的细节,我猜测getImages返回的Promise被拒绝了。您可以通过在.catch回调和catch语句中添加一些额外的日志来调试这个问题。
如何做到这一点实际上取决于你试图用这个API做什么,目前编写的代码无论发生什么都会记录一些东西并退出。
有几种方法可以解决这个问题
1.使用你的
.catch
来处理这个错误。利用承诺可链接性,你可以得到如下的结果如果你需要响应对象,asnwer可能会不同。看起来openai包是基于axios构建的,你可以将axios选项传递给它。参见https://axios-http.com/docs/handling_errors和https://npmjs.com/package/openai的Request Options部分
nszi6y052#
编辑我找到了我的解决方案,感谢@Jackson克里斯托弗森
基本上我得到的是http状态400
我刚刚添加了来自axios的请求选项,以验证小于500的http状态
解决方案如下: