import { MessageType } from '@/constants/chat'; import { IConversation, IReference } from '@/interfaces/database/chat'; import { EmptyConversationId, variableEnabledFieldMap } from './constants'; import { IClientConversation, IMessage } from './interface'; export const excludeUnEnabledVariables = (values: any) => { const unEnabledFields: Array = Object.keys(variableEnabledFieldMap).filter((key) => !values[key]) as Array< keyof typeof variableEnabledFieldMap >; return unEnabledFields.map( (key) => `llm_setting.${variableEnabledFieldMap[key]}`, ); }; export const isConversationIdExist = (conversationId: string) => { return conversationId !== EmptyConversationId && conversationId !== ''; }; export const getDocumentIdsFromConversionReference = (data: IConversation) => { const documentIds = data.reference.reduce( (pre: Array, cur: IReference) => { cur.doc_aggs ?.map((x) => x.doc_id) .forEach((x) => { if (pre.every((y) => y !== x)) { pre.push(x); } }); return pre; }, [], ); return documentIds.join(','); }; export const buildMessageItemReference = ( conversation: IClientConversation, message: IMessage, ) => { const assistantMessages = conversation.message ?.filter((x) => x.role === MessageType.Assistant) .slice(1); const referenceIndex = assistantMessages.findIndex( (x) => x.id === message.id, ); const reference = message?.reference ? message?.reference : conversation.reference[referenceIndex]; return reference; };