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.

39 lines (31 loc) 1.25 kB
import { ChatMessage } from '@/types/message'; import { OpenAIChatMessage } from '@/types/openai/chat'; import { encodeAsync } from '@/utils/tokenizer'; export const getMessagesTokenCount = async (messages: OpenAIChatMessage[]) => encodeAsync(messages.map((m) => m.content).join('')); export const getMessageById = (messages: ChatMessage[], id: string) => messages.find((m) => m.id === id); const getSlicedMessages = ( messages: ChatMessage[], options: { enableHistoryCount?: boolean; historyCount?: number; includeNewUserMessage?: boolean; }, ): ChatMessage[] => { // if historyCount is not enabled, return all messages if (!options.enableHistoryCount || options.historyCount === undefined) return messages; // if user send message, history will include this message so the total length should +1 const messagesCount = !!options.includeNewUserMessage ? options.historyCount + 1 : options.historyCount; // if historyCount is negative or set to 0, return empty array if (messagesCount <= 0) return []; // if historyCount is positive, return last N messages return messages.slice(-messagesCount); }; export const chatHelpers = { getMessageById, getMessagesTokenCount, getSlicedMessages, };