|
|
|
|
|
"""Conversation Memory Plugin""" |
|
|
from typing import List, Dict, Any |
|
|
from collections import deque |
|
|
import pandas as pd |
|
|
|
|
|
class ConversationMemory: |
|
|
"""Track conversation history and context.""" |
|
|
def __init__(self, max_history: int = 50): |
|
|
self.history = deque(maxlen=max_history) |
|
|
self.context = {} |
|
|
|
|
|
def add_message(self, role: str, content: str, metadata: Dict[str, Any] = None): |
|
|
message = {"role": role, "content": content, "timestamp": pd.Timestamp.now().isoformat()} |
|
|
if metadata: |
|
|
message["metadata"] = metadata |
|
|
self.history.append(message) |
|
|
|
|
|
def get_history(self, last_n: int = None) -> List[Dict[str, Any]]: |
|
|
return list(self.history)[-last_n:] if last_n else list(self.history) |
|
|
|
|
|
def clear(self): |
|
|
self.history.clear() |
|
|
self.context.clear() |
|
|
|