|
|
import ast |
|
|
import json |
|
|
import logging |
|
|
from fastapi import APIRouter |
|
|
from fastapi.responses import StreamingResponse |
|
|
from api.stored_data import stored_data |
|
|
from src.genai.context_analysis_agent.agent import ContextAnalysisAgent |
|
|
from src.genai.context_analysis_agent.utils.utils import DetailsExtractorNode , SaveToDB |
|
|
from api.schemas.context_analysis import UserMessage |
|
|
|
|
|
app_logger = logging.getLogger("app_logger") |
|
|
error_logger = logging.getLogger("error_logger") |
|
|
|
|
|
router = APIRouter() |
|
|
agent=ContextAnalysisAgent() |
|
|
context_graph = agent.context_analysis_graph() |
|
|
@router.post("/context-analysis") |
|
|
def context_analysis(msg: UserMessage): |
|
|
stored_data['context_analysis_interactions'].append({'role':'human', 'content':msg.message}) |
|
|
config={"configurable": {"thread_id": "context_analysis_1"}} |
|
|
try: |
|
|
result=context_graph.invoke({'messages':msg.message},config=config) |
|
|
stored_data['context_analysis_interactions'].append({'role':'ai', 'content':result['messages'][-1].content}) |
|
|
if result['completion']==True: |
|
|
formatted_details=DetailsExtractorNode(stored_data['context_analysis_interactions']).run() |
|
|
app_logger.info('Context Analysis Completed.') |
|
|
|
|
|
return {'response':result['messages'][-1].content , 'complete':True , 'business_details': formatted_details} |
|
|
|
|
|
else: |
|
|
return {'response':result['messages'][-1].content , 'complete':False} |
|
|
|
|
|
|
|
|
except Exception as e: |
|
|
error_logger.error(f"Failed Executing context analysis: {e}") |
|
|
raise |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|