Cómo devolver el resultado de la respuesta segmento por segmento como chatgpt

La adquisición de flujo de recuperación
se usa generalmente cuando la cantidad de datos es relativamente grande. La devolución única causará problemas como un tiempo de carga prolongado de la página de inicio o tiempo de espera de solicitud. En este momento, no podemos esperar a que se obtengan todos los resultados. devueltos antes de mostrarlos. Podemos considerar usar el método de transmisión para obtener algunos datos y mostrarlos primero, a fin de mejorar la experiencia del usuario.

fetch(url, {
    
    
	method: 'POST', // 请求方法
	headers: {
    
    
		"Content-Type": "application/json",  // 请求头
		Authorization: token // 校验令牌,根据自己的服务器需求传
	},
	body: JSON.stringify({
    
      // 请求体
		prompt: [{
    
    role: 'user', content: data}],
		incremental: true
	})
}).then(res => {
    
    
    const reader = result.body.getReader() // 创建读取器
    let content ="";
	const textDecoder = new TextDecoder() // 创建解码器
	while(true){
    
      // 循环读取内容
        /* 读取其中一部分内容,其中 done 是否读取完成, value 读取到的内容 */
		const {
    
    done, value} = await reader.read() 
		if(done){
    
    
			break;
		}
		const str = textDecoder.decode(value) // 利用解码器把数据解析成字符串
		console.log(str) // 这时候str就是服务器返回的内容
		cotent +=str; // 将返回的内容合并
		conosole.log('结果为':res);
	}
})

Nota:
result.body es un flujo legible de bytes que expone el contenido del cuerpo de la respuesta.

Supongo que te gusta

Origin blog.csdn.net/qq_42931285/article/details/132437402
Recomendado
Clasificación