Spaces:
Sleeping
Sleeping
File size: 2,366 Bytes
3d4cf60 9d5f756 3d4cf60 9d5f756 3d4cf60 52f3d08 3d4cf60 52f3d08 3d4cf60 52f3d08 3d4cf60 |
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 |
from datetime import datetime
from typing import Annotated, Dict, List, Optional
import uuid
from CosmosDBHandlers.cosmosConnector import CosmosLampHandler
from semantic_kernel.functions import kernel_function
from CosmosDBHandlers.cosmosChatHistoryHandler import ChatMemoryHandler
class ChatMemoryPlugin:
def __init__(self, logger):
self.logger = logger
self.chat_memory_handler = ChatMemoryHandler(logger)
@kernel_function(name="log_interaction", description="Logs chat interactions")
async def log_interaction(self, session_id: str, question: str, function_used: str, answer: str):
try:
await self.chat_memory_handler.log_interaction(session_id=session_id,
question=question,
function_used=function_used,
answer=answer)
except Exception as e:
self.logger.error(f"Failed to log chat interaction: {str(e)}")
@kernel_function(name="log_sql_query", description="Logs generated SQL queries")
async def log_sql_query(self, original_question: str, generated_sql: str, state:str="success"):
try:
await self.chat_memory_handler.log_sql_query(original_question=original_question,
generated_sql=generated_sql,
state=state)
except Exception as e:
self.logger.error(f"Failed to log SQL query: {str(e)}")
@kernel_function(name="get_semantic_faqs")
async def get_semantic_faqs(self, limit:int=6, threshold: float = 0.1) -> List[str]:
"""Retrieve FAQs using vector embeddings for semantic similarity"""
try:
faqs_dict = await self.chat_memory_handler.get_semantic_faqs(limit=limit+5, threshold=threshold)
faqs = [faq["representative_question"] for faq in faqs_dict]
# Remove duplicates while preserving order
unique_faqs = list(dict.fromkeys(faqs))
self.logger.info(unique_faqs)
return unique_faqs[:limit]
except Exception as e:
self.logger.error(f"Semantic FAQ retrieval failed: {str(e)}")
return [] |