abdibrahem commited on
Commit
47b9de8
·
1 Parent(s): 1f5b266

Add caching

Browse files
Files changed (2) hide show
  1. cache_manager.py +47 -0
  2. main.py +5 -0
cache_manager.py ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from collections import OrderedDict
2
+
3
+
4
+ class CacheManager:
5
+ """Simple cache manager with basic operations and LRU eviction."""
6
+
7
+ def __init__(self, max_size=100):
8
+ """Initialize cache with maximum size."""
9
+ self.max_size = max_size
10
+ self.cache = OrderedDict()
11
+
12
+ def set(self, key, value):
13
+ """Set a key-value pair in cache."""
14
+ # If key exists, remove it first
15
+ if key in self.cache:
16
+ del self.cache[key]
17
+
18
+ # If cache is full, remove oldest item
19
+ if len(self.cache) >= self.max_size:
20
+ self.cache.popitem(last=False) # Remove first (oldest) item
21
+
22
+ # Add new item
23
+ self.cache[key] = value
24
+
25
+ def get(self, key):
26
+ """Get value by key. Returns None if not found."""
27
+ if key in self.cache:
28
+ # Move to end (mark as recently used)
29
+ value = self.cache.pop(key)
30
+ self.cache[key] = value
31
+ return value
32
+ return None
33
+
34
+ def delete(self, key):
35
+ """Delete a key from cache. Returns True if deleted, False if not found."""
36
+ if key in self.cache:
37
+ del self.cache[key]
38
+ return True
39
+ return False
40
+
41
+ def clear(self):
42
+ """Clear all items from cache."""
43
+ self.cache.clear()
44
+
45
+ def size(self):
46
+ """Get current cache size."""
47
+ return len(self.cache)
main.py CHANGED
@@ -27,6 +27,7 @@ import asyncio
27
 
28
  # Import endpoints documentation
29
  from endpoints_documentation import endpoints_documentation
 
30
 
31
  # Set environment variables for HuggingFace
32
  os.environ["HF_HOME"] = "/tmp/huggingface"
@@ -76,6 +77,7 @@ class HealthcareChatbot:
76
  self.user_id = '8e5720d5-7243-42bd-97aa-10217309be82'
77
  self.max_retries = 3
78
  self.retry_delay = 2
 
79
 
80
  # Store conversation history
81
  self.conversation_history = []
@@ -684,12 +686,15 @@ class HealthcareChatbot:
684
  def handle_conversation(self, user_query, detected_language, sentiment_result):
685
  """Handle conversational responses"""
686
  try:
 
 
687
  result = self.conversation_chain.invoke({
688
  "user_query": user_query,
689
  "detected_language": detected_language,
690
  "sentiment_analysis": json.dumps(sentiment_result),
691
  "conversation_history": self.get_conversation_context()
692
  })
 
693
 
694
  return result["text"].strip()
695
 
 
27
 
28
  # Import endpoints documentation
29
  from endpoints_documentation import endpoints_documentation
30
+ from cache_manager import CacheManager
31
 
32
  # Set environment variables for HuggingFace
33
  os.environ["HF_HOME"] = "/tmp/huggingface"
 
77
  self.user_id = '8e5720d5-7243-42bd-97aa-10217309be82'
78
  self.max_retries = 3
79
  self.retry_delay = 2
80
+ self.cache = CacheManager()
81
 
82
  # Store conversation history
83
  self.conversation_history = []
 
686
  def handle_conversation(self, user_query, detected_language, sentiment_result):
687
  """Handle conversational responses"""
688
  try:
689
+ if self.cache.get(user_query):
690
+ return self.cache.get(user_query)
691
  result = self.conversation_chain.invoke({
692
  "user_query": user_query,
693
  "detected_language": detected_language,
694
  "sentiment_analysis": json.dumps(sentiment_result),
695
  "conversation_history": self.get_conversation_context()
696
  })
697
+ self.cache.set(user_query, result["text"].strip())
698
 
699
  return result["text"].strip()
700