chatgptのようにセグメントごとに応答結果を返す方法

フェッチ
ストリームの取得はデータ量が比較的多い場合に使用されることが多いですが、一度の返却ではフロントエンドページの読み込み時間の長時間化やリクエストのタイムアウトなどの問題が発生しますが、現時点では全ての結果を待つことはできません。ユーザー エクスペリエンスを向上させるために、ストリーミング メソッドを使用してデータを取得し、最初に表示することを検討してください。

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);
	}
})

注:
result.body は、応答本文の内容を公開する読み取り可能なバイト ストリームです。

おすすめ

転載: blog.csdn.net/qq_42931285/article/details/132437402
おすすめ