我有一个聊天机器人使用openAI API来询问关于某个主题的特定提示。当我在本地机器上运行代码时没有问题。但是,当我将其部署到heroku时,我得到以下错误:
error [TypeError:标题内容[“Authorization”]]中的字符无效。
我尝试在fetch()POST请求中添加一个authorization header,但没有解决问题。有什么线索可以告诉我错误可能来自哪里吗?
try {
fetchEventSource('/api/chat', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${encodedApiKey}`,
},
body: JSON.stringify({
question,
history,
}),
signal: ctrl.signal,
onmessage: (event) => {
if (event.data === '[DONE]') {
setMessageState((state) => ({
history: [...state.history, [question, state.pending ?? '']],
messages: [
...state.messages,
{
type: 'apiMessage',
message: state.pending ?? '',
sourceDocs: state.pendingSourceDocs,
},
],
pending: undefined,
pendingSourceDocs: undefined,
}));
setLoading(false);
ctrl.abort();
} else {
const data = JSON.parse(event.data);
if (data.sourceDocs) {
setMessageState((state) => ({
...state,
pendingSourceDocs: data.sourceDocs,
}));
} else {
setMessageState((state) => ({
...state,
pending: (state.pending ?? '') + data.data,
}));
}
}
},
});
} catch (error) {
setLoading(false);
setError('An error occurred while fetching the data. Please try again.');
console.log('error', error);
}
}
这是我的fetch请求。它可能来自其他地方,但我相信这可能是头部的一些问题。我还在heroku上添加了配置变量,但我无法解决它。
2条答案
按热度按时间avkwfej41#
你的语法没有问题,如果它在本地工作,我会说问题只可能来自配置变量,因为你没有在这里定义encodedApiKey。我会确保关系设置得很好-没有heroku的经验,所以没有更多的信息很难说。确保你的代码可以访问你的配置变量没有任何问题。
gab6jxml2#
看来encodedApiKey的值不正确,可以打印出来确认是否定义正确,格式应该是
sk-somethingVeryLong
在Heroku中,您可以使用CLI设置环境变量。
heroku config:set OPENAI_API_KEY=sk-something
或通过项目设置
在您的代码中,您可以使用
process.env.OPENAI_API_KEY
访问这个环境变量的值。