diff --git a/package.json b/package.json index 645d06b3..21a57724 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@form-create/designer": "^3.1.3", "@form-create/element-ui": "^3.1.24", "@iconify/iconify": "^3.1.1", + "@microsoft/fetch-event-source": "^2.0.1", "@videojs-player/vue": "^1.0.0", "@vueuse/core": "^10.9.0", "@wangeditor/editor": "^5.1.23", diff --git a/src/api/ai/chat/message/index.ts b/src/api/ai/chat/message/index.ts index 3dc1ea0f..acd9b3b6 100644 --- a/src/api/ai/chat/message/index.ts +++ b/src/api/ai/chat/message/index.ts @@ -1,15 +1,18 @@ import request from '@/config/axios' +import {fetchEventSource} from '@microsoft/fetch-event-source'; +import {getAccessToken} from '@/utils/auth' +import {config} from '@/config/axios/config' // 聊天VO export interface ChatMessageVO { - id: number // 编号 + id: string // 编号 conversationId: string // 会话编号 type: string // 消息类型 userId: string // 用户编号 roleId: string // 角色编号 model: number // 模型标志 modelId: number // 模型编号 - content: number // 聊天内容 + content: string // 聊天内容 tokens: number // 消耗 Token 数量 createTime: Date // 创建时间 } @@ -27,11 +30,35 @@ export const ChatMessageApi = { return await request.get({ url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}`}) }, - // 发送 send 消息 - send: async (data: ChatMessageSendVO) => { - return await request.post({ url: `/ai/chat/message/send`, data }) + // 发送 add 消息 + add: async (data: ChatMessageSendVO) => { + return await request.post({ url: `/ai/chat/message/add`, data}) }, + // 发送 send 消息 + send: async (data: ChatMessageSendVO) => { + return await request.post({ url: `/ai/chat/message/send`, data}) + }, + + // 发送 send stream 消息 + sendStream: async (id: string, ctrl, onMessage, onError, onClose) => { + const token = getAccessToken() + return fetchEventSource(`${ config.base_url}/ai/chat/message/send-stream`, { + method: 'post', + headers: { + 'Content-Type': 'application/json', + Authorization: `Bearer ${token}` + }, + openWhenHidden: true, + body: JSON.stringify({ + id: id, + }), + onmessage: onMessage, + onerror:onError, + onclose: onClose, + signal: ctrl.signal, + }); + }, // 发送 send 消息 delete: async (id: string) => { diff --git a/src/views/ai/chat/components/MessageList.vue b/src/views/ai/chat/components/MessageList.vue index 3038f886..0f77f8ec 100644 --- a/src/views/ai/chat/components/MessageList.vue +++ b/src/views/ai/chat/components/MessageList.vue @@ -62,12 +62,11 @@ -