llama-index
49 строк · 1.3 Кб
1"""Base interface class for storing chat history per user."""
2
3from abc import abstractmethod
4from typing import List, Optional
5
6from llama_index.legacy.llms import ChatMessage
7from llama_index.legacy.schema import BaseComponent
8
9
10class BaseChatStore(BaseComponent):
11@classmethod
12def class_name(cls) -> str:
13"""Get class name."""
14return "BaseChatStore"
15
16@abstractmethod
17def set_messages(self, key: str, messages: List[ChatMessage]) -> None:
18"""Set messages for a key."""
19...
20
21@abstractmethod
22def get_messages(self, key: str) -> List[ChatMessage]:
23"""Get messages for a key."""
24...
25
26@abstractmethod
27def add_message(self, key: str, message: ChatMessage) -> None:
28"""Add a message for a key."""
29...
30
31@abstractmethod
32def delete_messages(self, key: str) -> Optional[List[ChatMessage]]:
33"""Delete messages for a key."""
34...
35
36@abstractmethod
37def delete_message(self, key: str, idx: int) -> Optional[ChatMessage]:
38"""Delete specific message for a key."""
39...
40
41@abstractmethod
42def delete_last_message(self, key: str) -> Optional[ChatMessage]:
43"""Delete last message for a key."""
44...
45
46@abstractmethod
47def get_keys(self) -> List[str]:
48"""Get all keys."""
49...
50