我试图从我的API得到响应,像chatGPT一样一个字一个字地生成,而不是一次全部。我有所有其他的东西工作,得到预期的响应,只是没有大块。
我可以在控制台打印部分响应,但无法在UI上显示,有人能帮忙吗?
这是我的后端代码
import { ChatGPTAPI } from "chatgpt";
app.post("/", async (req, res) => {
const { message } = req.body;
const api = new ChatGPTAPI({
apiKey: OPENAI_API_KEY,
});
const resp = await api.sendMessage(
message, {
onProgress: (partialResponse) => {
console.log(partialResponse);
},
}
);
// Code for sending the response all at once
// if (resp.text) {
// res.json({
// message: resp.text,
// });
// }
});
const server = app.listen(5000, () => {
console.log("app listening");
});
server.headersTimeout = 610000;
这就是我在前端获取它的方式
const handleSubmit = (e) => {
e.preventDefault();
fetch("http://localhost:5000", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({ message }),
})
.then((res) => res.json())
.then((data) => {
setResponse(data.message);
setMessage("");
});
};
1条答案
按热度按时间vxf3dgd41#
流
无论是GPT-3 API还是ChatGPT接口(即GPT-3.5接口),都需要将
stream
参数设置为true
(默认为false),这样就可以得到 * 逐字 * 的响应。NodeJS
ChatGPT API工作示例
如果运行
test.js
,OpenAI API将返回以下完成:测试.js