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 @@
-