summaryrefslogtreecommitdiff
path: root/src/personalization/models/preference_extractor/base.py
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-03-18 18:25:09 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-03-18 18:25:09 -0500
commitb6c3e4e51eeab703b40284459c6e9fff2151216c (patch)
tree221410886f23214575f93b9ef44fa8431c9a6dfc /src/personalization/models/preference_extractor/base.py
Initial release: VARS - personalized LLM with RAG and user vector learning
Diffstat (limited to 'src/personalization/models/preference_extractor/base.py')
-rw-r--r--src/personalization/models/preference_extractor/base.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/personalization/models/preference_extractor/base.py b/src/personalization/models/preference_extractor/base.py
new file mode 100644
index 0000000..850292f
--- /dev/null
+++ b/src/personalization/models/preference_extractor/base.py
@@ -0,0 +1,17 @@
+from __future__ import annotations
+
+from abc import ABC, abstractmethod
+from typing import Any, Dict, List
+from personalization.retrieval.preference_store.schemas import ChatTurn, PreferenceList
+
+class PreferenceExtractorBase(ABC):
+ @abstractmethod
+ def extract_turn(self, turns: List[ChatTurn]) -> PreferenceList:
+ """
+ Extract preferences from a window of chat turns (history + current query).
+ """
+ raise NotImplementedError
+
+# Alias for backward compatibility if needed,
+# though specific extractors should inherit from PreferenceExtractorBase now.
+PreferenceExtractor = PreferenceExtractorBase