我正在尝试构建一个 ChatGPT 网站的克隆版本,现在我需要制作流式完成效果,以逐字显示结果。 我的服务器是一个使用 Express.js 框架的 TypeScript Node.js 应用程序。
这是路由:
import express, { Request, Response } from 'express';
import cors from 'cors';
import { Configuration, OpenAIAPI } from 'openai';
// ...
app.post('/api/admin/testStream', async (req: Request, res: Response) => {
const { password } = req.body;
try {
if (password !== process.env.ADMIN_PASSWORD) {
res.send({ message: 'Incorrect password' });
return;
}
const completion = await openai.createCompletion({
model: 'text-davinci-003',
prompt: 'Say this is a test',
stream: true,
}, { responseType: 'stream' });
completion.data.on('data', (chunk: any) => {
console.log(chunk.toString());
});
res.send({ message: 'Stream started' });
} catch (err) {
console.log(err);
res.send(err);
}
});
// ...
现在,它给我一个错误,说
属性“on”在类型“CreateCompletionResponse”上不存在。ts(2339)
即使我设置了{ responseType: 'stream' }
。
我该如何解决这个问题并将响应逐块发送到前端?(我正在使用Socket.IO。)
completion.on('data', ...);
代替completion.data.on('data', ...);
。 - uzluisf