| 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<keyof typeof variableEnabledFieldMap> = | |
| 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<string>, 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; | |
| }; | |