@llamaindex/core
Version:
LlamaIndex Core Module
87 lines (82 loc) • 4.36 kB
text/typescript
import { ChatMessage, LLM } from '../../llms/dist/index.cjs';
import { BaseChatStore } from '../../storage/chat-store/dist/index.cjs';
import { Tokenizer } from '@llamaindex/env/tokenizers';
import { SummaryPrompt } from '../../prompts/dist/index.cjs';
/**
* A ChatMemory is used to keep the state of back and forth chat messages
*/
declare abstract class BaseMemory<AdditionalMessageOptions extends object = object> {
/**
* Retrieves messages from the memory, optionally including transient messages.
* Compared to getAllMessages, this method a) allows for transient messages to be included in the retrieval and b) may return a subset of the total messages by applying a token limit.
* @param transientMessages Optional array of temporary messages to be included in the retrieval.
* These messages are not stored in the memory but are considered for the current interaction.
* @returns An array of chat messages, either synchronously or as a Promise.
*/
abstract getMessages(transientMessages?: ChatMessage<AdditionalMessageOptions>[] | undefined): ChatMessage<AdditionalMessageOptions>[] | Promise<ChatMessage<AdditionalMessageOptions>[]>;
/**
* Retrieves all messages stored in the memory.
* @returns An array of all chat messages, either synchronously or as a Promise.
*/
abstract getAllMessages(): ChatMessage<AdditionalMessageOptions>[] | Promise<ChatMessage<AdditionalMessageOptions>[]>;
/**
* Adds a new message to the memory.
* @param messages The chat message to be added to the memory.
*/
abstract put(messages: ChatMessage<AdditionalMessageOptions>): void;
/**
* Clears all messages from the memory.
*/
abstract reset(): void;
protected _tokenCountForMessages(messages: ChatMessage[]): number;
}
declare abstract class BaseChatStoreMemory<AdditionalMessageOptions extends object = object> extends BaseMemory<AdditionalMessageOptions> {
chatStore: BaseChatStore<AdditionalMessageOptions>;
chatStoreKey: string;
protected constructor(chatStore?: BaseChatStore<AdditionalMessageOptions>, chatStoreKey?: string);
getAllMessages(): ChatMessage<AdditionalMessageOptions>[] | Promise<ChatMessage<AdditionalMessageOptions>[]>;
put(messages: ChatMessage<AdditionalMessageOptions>): void | Promise<void>;
set(messages: ChatMessage<AdditionalMessageOptions>[]): void | Promise<void>;
reset(): void | Promise<void>;
}
type ChatMemoryBufferOptions<AdditionalMessageOptions extends object = object> = {
tokenLimit?: number | undefined;
chatStore?: BaseChatStore<AdditionalMessageOptions> | undefined;
chatStoreKey?: string | undefined;
chatHistory?: ChatMessage<AdditionalMessageOptions>[] | undefined;
llm?: LLM<object, AdditionalMessageOptions> | undefined;
};
declare class ChatMemoryBuffer<AdditionalMessageOptions extends object = object> extends BaseChatStoreMemory<AdditionalMessageOptions> {
tokenLimit: number;
constructor(options?: Partial<ChatMemoryBufferOptions<AdditionalMessageOptions>>);
getMessages(transientMessages?: ChatMessage<AdditionalMessageOptions>[] | undefined, initialTokenCount?: number): Promise<ChatMessage<AdditionalMessageOptions>[]>;
}
declare class ChatSummaryMemoryBuffer extends BaseMemory {
/**
* Tokenizer function that converts text to tokens,
* this is used to calculate the number of tokens in a message.
*/
tokenizer: Tokenizer;
tokensToSummarize: number;
messages: ChatMessage[];
summaryPrompt: SummaryPrompt;
llm: LLM;
constructor(options?: Partial<ChatSummaryMemoryBuffer>);
private summarize;
private get lastSummaryIndex();
getLastSummary(): ChatMessage | null;
private get systemMessages();
private get nonSystemMessages();
/**
* Calculates the messages that describe the conversation so far.
* If there's no memory, all non-system messages are used.
* If there's a memory, uses all messages after the last summary message.
*/
private calcConversationMessages;
private calcCurrentRequestMessages;
reset(): void;
getMessages(transientMessages?: ChatMessage[]): Promise<ChatMessage[]>;
getAllMessages(): Promise<ChatMessage[]>;
put(message: ChatMessage): void;
}
export { BaseMemory, ChatMemoryBuffer, ChatSummaryMemoryBuffer };