我想通过OpenAI的API流式传输完成结果。
文档中提到使用服务器推送事件(server-sent events),似乎这个功能在flask中无法实现,因此我尝试在客户端处理(我知道这会暴露API密钥)。但是,由于OpenAI API需要进行POST请求,所以似乎它与eventSource API不兼容。我尝试使用fetch (使用可读流),但是当我尝试按照示例将其转换为JSON时,出现以下错误:
文档中提到使用服务器推送事件(server-sent events),似乎这个功能在flask中无法实现,因此我尝试在客户端处理(我知道这会暴露API密钥)。但是,由于OpenAI API需要进行POST请求,所以似乎它与eventSource API不兼容。我尝试使用fetch (使用可读流),但是当我尝试按照示例将其转换为JSON时,出现以下错误:
Uncaught (in promise) SyntaxError: Unexpected token 'd', "data: {"id"... is not valid JSON
(我知道这不是有效的JSON)。似乎它在解析整个结果而不是每个单独的流。data: {"id": "cmpl-5l11I1kS2n99uzNiNVpTjHi3kyied", "object": "text_completion", "created": 1661887020, "choices": [{"text": " to", "index": 0, "logprobs": null, "finish_reason": null}], "model": "text-davinci-002"}
data: {"id": "cmpl-5l11I1kS2n99uzNiNVpTjHi3kyied", "object": "text_completion", "created": 1661887020, "choices": [{"text": " AL", "index": 0, "logprobs": null, "finish_reason": null}], "model": "text-davinci-002"}
data: {"id": "cmpl-5l11I1kS2n99uzNiNVpTjHi3kyied", "object": "text_completion", "created": 1661887020, "choices": [{"text": "I", "index": 0, "logprobs": null, "finish_reason": null}], "model": "text-davinci-002"}
我希望能得到一些指导或一个简单的代码示例,因为我已经苦思冥想了一段时间。谢谢!
const data = bytes.toString(); const message = data.replace(/^data: /, ""); console.log(JSON.parse(message));
就这样。 - Anthony Sychev