UNPKG

@lobehub/chat

Version:

Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.

123 lines (97 loc) 4.27 kB
/* eslint-disable @typescript-eslint/no-unused-vars */ import { INBOX_SESSION_ID } from '@/const/session'; import { lambdaClient } from '@/libs/trpc/client'; import { ChatMessage, ChatTranslate } from '@/types/message'; import { IMessageService } from './type'; export class ServerService implements IMessageService { createMessage: IMessageService['createMessage'] = async ({ sessionId, ...params }) => { return lambdaClient.message.createMessage.mutate({ ...params, sessionId: this.toDbSessionId(sessionId), }); }; batchCreateMessages: IMessageService['batchCreateMessages'] = async (messages) => { return lambdaClient.message.batchCreateMessages.mutate(messages); }; getMessages: IMessageService['getMessages'] = async (sessionId, topicId) => { const data = await lambdaClient.message.getMessages.query({ sessionId: this.toDbSessionId(sessionId), topicId, }); return data as unknown as ChatMessage[]; }; getAllMessages: IMessageService['getAllMessages'] = async () => { return lambdaClient.message.getAllMessages.query(); }; getAllMessagesInSession: IMessageService['getAllMessagesInSession'] = async (sessionId) => { return lambdaClient.message.getAllMessagesInSession.query({ sessionId: this.toDbSessionId(sessionId), }); }; countMessages: IMessageService['countMessages'] = async (params) => { return lambdaClient.message.count.query(params); }; countWords: IMessageService['countWords'] = async (params) => { return lambdaClient.message.countWords.query(params); }; rankModels: IMessageService['rankModels'] = async () => { return lambdaClient.message.rankModels.query(); }; getHeatmaps: IMessageService['getHeatmaps'] = async () => { return lambdaClient.message.getHeatmaps.query(); }; updateMessageError: IMessageService['updateMessageError'] = async (id, error) => { return lambdaClient.message.update.mutate({ id, value: { error } }); }; updateMessagePluginArguments: IMessageService['updateMessagePluginArguments'] = async ( id, value, ) => { const args = typeof value === 'string' ? value : JSON.stringify(value); return lambdaClient.message.updateMessagePlugin.mutate({ id, value: { arguments: args } }); }; updateMessage: IMessageService['updateMessage'] = async (id, value) => { return lambdaClient.message.update.mutate({ id, value }); }; updateMessageTranslate: IMessageService['updateMessageTranslate'] = async (id, translate) => { return lambdaClient.message.updateTranslate.mutate({ id, value: translate as ChatTranslate }); }; updateMessageTTS: IMessageService['updateMessageTTS'] = async (id, tts) => { return lambdaClient.message.updateTTS.mutate({ id, value: tts }); }; updateMessagePluginState: IMessageService['updateMessagePluginState'] = async (id, value) => { return lambdaClient.message.updatePluginState.mutate({ id, value }); }; updateMessagePluginError: IMessageService['updateMessagePluginError'] = async (id, error) => { return lambdaClient.message.updatePluginError.mutate({ id, value: error as any }); }; removeMessage: IMessageService['removeMessage'] = async (id) => { return lambdaClient.message.removeMessage.mutate({ id }); }; removeMessages: IMessageService['removeMessages'] = async (ids) => { return lambdaClient.message.removeMessages.mutate({ ids }); }; removeMessagesByAssistant: IMessageService['removeMessagesByAssistant'] = async ( sessionId, topicId, ) => { return lambdaClient.message.removeMessagesByAssistant.mutate({ sessionId: this.toDbSessionId(sessionId), topicId, }); }; removeAllMessages: IMessageService['removeAllMessages'] = async () => { return lambdaClient.message.removeAllMessages.mutate(); }; private toDbSessionId = (sessionId: string | undefined) => { return sessionId === INBOX_SESSION_ID ? null : sessionId; }; hasMessages: IMessageService['hasMessages'] = async () => { const number = await this.countMessages(); return number > 0; }; messageCountToCheckTrace: IMessageService['messageCountToCheckTrace'] = async () => { const number = await this.countMessages(); return number >= 4; }; }