Spaces:
Runtime error
Runtime error
| from typing import List, Union | |
| from pydantic import Field | |
| from agentverse.message import Message | |
| from agentverse.llms import BaseLLM | |
| from agentverse.llms.openai import get_embedding, OpenAIChat | |
| from . import memory_registry | |
| from .base import BaseMemory | |
| class VectorStoreMemory(BaseMemory): | |
| """ | |
| The main difference of this class with chat_history is that this class treat memory as a dict | |
| treat message.content as memory | |
| Attributes: | |
| messages (List[Message]) : used to store messages, message.content is the key of embeddings. | |
| embedding2memory (dict) : `key` is the embedding and `value` is the message | |
| memory2embedding (dict) : `key` is the message and `value` is the embedding | |
| llm (BaseLLM) : llm used to get embeddings | |
| Methods: | |
| add_message : Additionally, add the embedding to embeddings | |
| """ | |
| messages: List[Message] = Field(default=[]) | |
| embedding2memory: dict = {} | |
| memory2embedding: dict = {} | |
| llm: BaseLLM = OpenAIChat(model="gpt-4") | |
| def add_message(self, messages: List[Message]) -> None: | |
| for message in messages: | |
| self.messages.append(message) | |
| memory_embedding = get_embedding(message.content) | |
| self.embedding2memory[memory_embedding] = message.content | |
| self.memory2embedding[message.content] = memory_embedding | |
| def to_string(self, add_sender_prefix: bool = False) -> str: | |
| if add_sender_prefix: | |
| return "\n".join( | |
| [ | |
| f"[{message.sender}]: {message.content}" | |
| if message.sender != "" | |
| else message.content | |
| for message in self.messages | |
| ] | |
| ) | |
| else: | |
| return "\n".join([message.content for message in self.messages]) | |
| def reset(self) -> None: | |
| self.messages = [] | |