Spaces:
Sleeping
Sleeping
File size: 1,752 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 |
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 52 |
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']
print('password:', password)
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=3600) # ex=seconds
return response_to_cache
|