我不明白为什么我会收到这个错误。
拒绝设置不安全的标题“用户代理”。
我试图在个人项目中使用OpenAI的API。我不明白为什么它拒绝设置这个“不安全的标题”,以及如何,或者如果,我可以使它安全。我试过搜索这个问题,上面的链接是为一个GitHub论坛提供的,该论坛解释了Chrome是如何做的,但我尝试在Safari中使用这个应用程序,它也不起作用。
const onFormSubmit = (e) => {
e.preventDefault();
const formData = new FormData(e.target),
formDataObj = Object.fromEntries(formData.entries())
console.log(formDataObj.foodDescription);
//////OPENAI
const configuration = new Configuration({
apiKey: process.env.REACT_APP_OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);
openai.createCompletion("text-curie-001", {
prompt: `generate food suggestions from the following flavor cravings: ${formDataObj.foodDescription}`,
temperature: 0.8,
max_tokens: 256,
top_p: 1,
frequency_penalty: 0,
presence_penalty: 0,
})
.then((response) => {
setState({
heading: `AI Food Suggestions for: ${formDataObj.foodDescription}`,
response: `${response.data.choices[0].text}`
});
})}
发布于 2022-07-29 02:08:06
正如您所述,您正在接收错误,因为openai API客户端“拒绝设置不安全的标题”“用户代理”。由于使用它需要访问敏感信息( API密钥),nodejs客户端故意限制跨源请求,以防止意外泄露机密。
有关解决方法,请参见https://github.com/openai/openai-node/issues/6,其中AmanKishore手动请求完成。
最后我编写了自己的完成函数,如下所示:
const DEFAULT_PARAMS = {
"model": "text-davinci-002",
"temperature": 0.7,
"max_tokens": 256,
"top_p": 1,
"frequency_penalty": 0,
"presence_penalty": 0
}
export async function query(params = {}) {
const params_ = { ...DEFAULT_PARAMS, ...params };
const requestOptions = {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + String(openai_api_key)
},
body: JSON.stringify(params_)
};
const response = await fetch('https://api.openai.com/v1/completions', requestOptions);
const data = await response.json();
return data.choices[0].text;
}https://stackoverflow.com/questions/72326140
复制相似问题