Spaces:
Sleeping
Sleeping
File size: 1,721 Bytes
3002e1b 3f5fe23 3002e1b 3f5fe23 3002e1b 3f5fe23 3002e1b 872d043 3002e1b 3f5fe23 3002e1b 3f5fe23 3002e1b 8ce97f0 a6a0614 3f5fe23 a6a0614 93d50e5 3f5fe23 93d50e5 3f5fe23 93d50e5 3f5fe23 872d043 6f57d05 3002e1b 3f5fe23 abd776c 3f5fe23 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | import ast
import os
import json
import hashlib
import logging
from fastapi import APIRouter
from redis import Redis
from fastapi.responses import StreamingResponse
from api.stored_data import stored_data
from src.genai.analytics_chatbot.agent import ChatbotAgent
from src.genai.analytics_chatbot.utils.utils import process_query
from api.schemas.analytics_chatbot import UserMessage
app_logger = logging.getLogger("app_logger")
error_logger = logging.getLogger("error_logger")
password=os.environ['REDIS_PASSWORD']
host = os.environ['REDIS_HOST']
port = os.environ['REDIS_PORT']
router = APIRouter()
agent=ChatbotAgent()
graph = agent.chatbot_graph()
redis_client = Redis(host=host, port=port, db=0, decode_responses=True, username="default",password=password)
@router.get("/analytics-chatbot")
def get_analytics(msg:str):
# user_query=process_query(msg)
cache_key = f"analytics:{hashlib.md5(msg.encode()).hexdigest()}"
cached_response = redis_client.get(cache_key)
if cached_response:
print("Cache hit")
return json.loads(cached_response)
config={"configurable": {"thread_id": "analytics-chatbot-thread"},"run_name":"analytics-chatbot"}
result=graph.invoke({'messages':msg},config=config)
print('Final Result:', result)
response_to_cache = {}
if result.get('backup_data') is not None:
response_to_cache = {'backup_response': result['backup_data']}
else:
response_to_cache = {
'response': result['response'],
'endpoint': result['endpoint']
}
# Save to Redis with TTL (e.g., 1 hour)
redis_client.set(cache_key, json.dumps(response_to_cache), ex=60) # ex=seconds
return response_to_cache
|