69 lines
1.9 KiB
TypeScript
69 lines
1.9 KiB
TypeScript
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: string // 编号
|
|
conversationId: string // 会话编号
|
|
type: string // 消息类型
|
|
userId: string // 用户编号
|
|
roleId: string // 角色编号
|
|
model: number // 模型标志
|
|
modelId: number // 模型编号
|
|
content: string // 聊天内容
|
|
tokens: number // 消耗 Token 数量
|
|
createTime: Date // 创建时间
|
|
}
|
|
|
|
export interface ChatMessageSendVO {
|
|
conversationId: string // 会话编号
|
|
content: number // 聊天内容
|
|
}
|
|
|
|
// AI chat 聊天
|
|
export const ChatMessageApi = {
|
|
|
|
// 消息列表
|
|
messageList: async (conversationId: string) => {
|
|
return await request.get({ url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}`})
|
|
},
|
|
|
|
// 发送 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) => {
|
|
return await request.delete({ url: `/ai/chat/message/delete?id=${id}` })
|
|
},
|
|
|
|
}
|