最近接触了一些和 chatGPT 类似的模型服务,基本上都和 GPT API 一样使用 SSE 通信。
默认前端的 API 调用 SSE 只能是 GET 请求,当需要使用 body 传递数据时就不太方便,这里使用fetch
实现POST
请求
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| fetch("http://192.168.1.11:7860/chat", { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ "prompt": "用小孩子能听懂的话讲清楚什么是微积分", "history": [] }), }) .then((response) => { const reader = response.body.getReader(); return new ReadableStream({ start(controller) { function push() { reader.read().then(({ value, done }) => { if (done) { controller.close(); return; } controller.enqueue(value); push(); }); } push(); }, }); }) .then((stream) => { const textDecoder = new TextDecoder(); const readableStreamDefaultReader = stream.getReader(); function processStream() { readableStreamDefaultReader.read().then(({ value, done }) => { if (done) { console.log('End of stream'); return; } console.log(textDecoder.decode(value)); processStream(); }); } processStream(); }) .catch((error) => { console.error(error); });
|