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 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
import { PostHistoryAPI } from '@/apis/chat'; import { fetchEventSource } from '@microsoft/fetch-event-source'; import hljs from 'highlight.js'; export async function sendMessage(tagDefault: string, msg: string, list: any[], setList: any, messageApi: any, setDone: any, id: number) {
setDone(false) let answer = '' const lastObj = { ask: msg, answer: '' };
await fetchEventSource('http://xxx/v1/chat/completions', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': 'Bearer vllm', }, body: JSON.stringify({ "model": tagDefault, "messages": [ {"role": "user", "content": msg} ], "stream": true }), onmessage(event) { // 接收服务器发送的每条事件 console.log('收到数据:', event.data);
if (event.data && event.data === '[DONE]') { console.log('请求完成');
setDone(true) //将数据插入到历史接口 PostHistoryAPI({ groupId: id, ...lastObj }).then(res => {
if (res.data.code !== 0) { messageApi.error(res.data.message) } }) hljs.highlightAll();
} else { console.log('收到数据:', JSON.parse(event.data).choices[0].delta.content); let tep_mesg = JSON.parse(event.data).choices[0].delta.content; if (tep_mesg == '\u003cthink\u003e') { tep_mesg = "<div class='think'>" } else if (tep_mesg == '\u003c/think\u003e') { tep_mesg = "</div>" } answer += tep_mesg
if (answer) { lastObj.answer = answer setList([...list, lastObj]) } } // 请求完成 }, onclose() { // 连接关闭时触发 console.log('连接终止'); }, onerror(err) { // 错误处理(默认会抛出异常并自动重试) console.error('错误:', err); throw err; // 抛出错误会触发重试机制 } }); }
|