🐛 fix(manager.py): change cache_manager.set to cache_manager.upsert to update or insert cache value

 feat(manager.py): add result_dict to cache instead of directly setting langchain_object to improve cache semantics
🐛 fix(manager.py): handle case when langchain_object is not found in cache and raise ValueError
This commit is contained in:
Gabriel Luiz Freitas Almeida 2023-08-14 12:23:54 -03:00
commit 20afabd90a

View file

@ -170,8 +170,8 @@ class ChatManager:
"""
Set the cache for a client.
"""
client_id = f"{client_id}_chat"
self.cache_manager.set(client_id, langchain_object)
result_dict = {"result": langchain_object, "type": type(langchain_object)}
self.cache_manager.upsert(client_id, result_dict)
return client_id in self.cache_manager
async def handle_websocket(self, client_id: str, websocket: WebSocket):
@ -194,9 +194,13 @@ class ChatManager:
continue
with self.cache_manager.set_client_id(client_id):
langchain_object = self.in_memory_cache.get(f"{client_id}_chat")
await self.process_message(client_id, payload, langchain_object)
if langchain_object := self.in_memory_cache.get(client_id).get(
"result"
):
await self.process_message(client_id, payload, langchain_object)
else:
raise ValueError("No langchain object found in cache")
except Exception as exc:
# Handle any exceptions that might occur
logger.error(f"Error handling websocket: {exc}")