对比新文件 |
| | |
| | | import request from '@/config/axios' |
| | | import { fetchEventSource } from '@microsoft/fetch-event-source' |
| | | import { getAccessToken } from '@/utils/auth' |
| | | import { config } from '@/config/axios/config' |
| | | import {refreshToken} from "@/api/login"; |
| | | |
| | | // 聊天VO |
| | | export interface ChatMessageVO { |
| | | id: number // 编号 |
| | | conversationId: number // 对话编号 |
| | | type: string // 消息类型 |
| | | userId: string // 用户编号 |
| | | roleId: string // 角色编号 |
| | | model: number // 模型标志 |
| | | modelId: number // 模型编号 |
| | | content: string // 聊天内容 |
| | | thinking: string // 聊天思考 |
| | | thinkingFlag: boolean // 聊天思考 |
| | | conclusion: string // 聊天结论 |
| | | tokens: number // 消耗 Token 数量 |
| | | segmentIds?: number[] // 段落编号 |
| | | segments?: { |
| | | id: number // 段落编号 |
| | | content: string // 段落内容 |
| | | documentId: number // 文档编号 |
| | | documentName: string // 文档名称 |
| | | }[] |
| | | createTime: Date // 创建时间 |
| | | roleAvatar: string // 角色头像 |
| | | userAvatar: string // 用户头像 |
| | | } |
| | | |
| | | // AI chat 聊天 |
| | | export const ChatMessageApi = { |
| | | // 消息列表 |
| | | getChatMessageListByConversationId: async (conversationId: number | null) => { |
| | | return await request.get({ |
| | | url: `/ai/chat/message/list-by-conversation-id?conversationId=${conversationId}` |
| | | }) |
| | | }, |
| | | |
| | | // 消息列表【工业大模型专用】 |
| | | getEnergyChatMessageListByConversationId: async (conversationId: number | null) => { |
| | | return await request.get({ |
| | | url: `/ai/chat/message/energy-list-by-conversation-id?conversationId=${conversationId}` |
| | | }) |
| | | }, |
| | | |
| | | // 发送 Stream 消息 |
| | | // 为什么不用 axios 呢?因为它不支持 SSE 调用 |
| | | sendChatMessageStream: async ( |
| | | conversationId: number, |
| | | content: string, |
| | | ctrl, |
| | | enableContext: boolean, |
| | | 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({ |
| | | conversationId, |
| | | content, |
| | | useContext: enableContext |
| | | }), |
| | | onmessage: onMessage, |
| | | onerror: onError, |
| | | onclose: onClose, |
| | | signal: ctrl.signal |
| | | }) |
| | | }, |
| | | // 发送 Stream 消息 【工业大模型专用】 |
| | | // sendEnergyChatMessageStream: async ( |
| | | // conversationId: number, |
| | | // content: string, |
| | | // ctrl, |
| | | // enableContext: boolean, |
| | | // onMessage, |
| | | // onError, |
| | | // onClose |
| | | // ) => { |
| | | // const token = getAccessToken() |
| | | // return fetchEventSource(`${config.base_url}/ai/chat/message/send-energy-stream`, { |
| | | // method: 'post', |
| | | // headers: { |
| | | // 'Content-Type': 'application/json', |
| | | // Authorization: `Bearer ${token}` |
| | | // }, |
| | | // openWhenHidden: true, |
| | | // body: JSON.stringify({ |
| | | // conversationId, |
| | | // content, |
| | | // useContext: enableContext |
| | | // }), |
| | | // onmessage: onMessage, |
| | | // onerror: onError, |
| | | // onclose: onClose, |
| | | // signal: ctrl.signal |
| | | // }) |
| | | // }, |
| | | |
| | | // 删除消息 |
| | | deleteChatMessage: async (id: string) => { |
| | | return await request.delete({ url: `/ai/chat/message/delete?id=${id}` }) |
| | | }, |
| | | |
| | | // 删除指定对话的消息 |
| | | deleteByConversationId: async (conversationId: number) => { |
| | | return await request.delete({ |
| | | url: `/ai/chat/message/delete-by-conversation-id?conversationId=${conversationId}` |
| | | }) |
| | | }, |
| | | |
| | | // // 删除消息【工业大模型专用】 |
| | | // deleteEnergyChatMessage: async (id: string) => { |
| | | // return await request.delete({ url: `/ai/chat/message/delete-energy?id=${id}` }) |
| | | // }, |
| | | |
| | | // 删除指定对话的消息【工业大模型专用】 |
| | | deleteEnergyByConversationId: async (conversationId: number) => { |
| | | return await request.delete({ |
| | | url: `/ai/chat/message/delete-energy-by-conversation-id?conversationId=${conversationId}` |
| | | }) |
| | | }, |
| | | |
| | | // 获得消息分页 |
| | | getChatMessagePage: async (params: any) => { |
| | | return await request.get({ url: '/ai/chat/message/page', params }) |
| | | }, |
| | | |
| | | // 管理员删除消息 |
| | | deleteChatMessageByAdmin: async (id: number) => { |
| | | return await request.delete({ url: `/ai/chat/message/delete-by-admin?id=${id}` }) |
| | | } |
| | | } |