Spaces:
Running
Running
import os | |
from astrapy.admin import parse_api_endpoint | |
from langflow.base.memory.model import LCChatMemoryComponent | |
from langflow.field_typing import BaseChatMessageHistory | |
from langflow.inputs import MessageTextInput, SecretStrInput, StrInput | |
class AstraDBChatMemory(LCChatMemoryComponent): | |
display_name = "Astra DB Chat Memory" | |
description = "Retrieves and store chat messages from Astra DB." | |
name = "AstraDBChatMemory" | |
icon: str = "AstraDB" | |
inputs = [ | |
SecretStrInput( | |
name="token", | |
display_name="Astra DB Application Token", | |
info="Authentication token for accessing Astra DB.", | |
value="ASTRA_DB_APPLICATION_TOKEN", | |
required=True, | |
advanced=os.getenv("ASTRA_ENHANCED", "false").lower() == "true", | |
), | |
SecretStrInput( | |
name="api_endpoint", | |
display_name="API Endpoint", | |
info="API endpoint URL for the Astra DB service.", | |
value="ASTRA_DB_API_ENDPOINT", | |
required=True, | |
), | |
StrInput( | |
name="collection_name", | |
display_name="Collection Name", | |
info="The name of the collection within Astra DB where the vectors will be stored.", | |
required=True, | |
), | |
StrInput( | |
name="namespace", | |
display_name="Namespace", | |
info="Optional namespace within Astra DB to use for the collection.", | |
advanced=True, | |
), | |
MessageTextInput( | |
name="session_id", | |
display_name="Session ID", | |
info="The session ID of the chat. If empty, the current session ID parameter will be used.", | |
advanced=True, | |
), | |
] | |
def build_message_history(self) -> BaseChatMessageHistory: | |
try: | |
from langchain_astradb.chat_message_histories import AstraDBChatMessageHistory | |
except ImportError as e: | |
msg = ( | |
"Could not import langchain Astra DB integration package. " | |
"Please install it with `pip install langchain-astradb`." | |
) | |
raise ImportError(msg) from e | |
return AstraDBChatMessageHistory( | |
session_id=self.session_id, | |
collection_name=self.collection_name, | |
token=self.token, | |
api_endpoint=self.api_endpoint, | |
namespace=self.namespace or None, | |
environment=parse_api_endpoint(self.api_endpoint).environment, | |
) | |