subashpoudel's picture
Next commit
3002e1b
import ast
import logging
from fastapi import APIRouter
from api.stored_data import stored_data
from src.genai.ideation_agent.agent import IdeationAgent
from langgraph.errors import GraphRecursionError
from api.schemas.ideation import IdeationMessage
app_logger = logging.getLogger("app_logger")
error_logger = logging.getLogger("error_logger")
router = APIRouter()
agent = IdeationAgent()
idea_graph = agent.ideation_graph()
@router.post("/ideation")
def ideation_endpoint(msg:IdeationMessage):
config={"recursion_limit":25, "configurable": {"thread_id": "ideation_thread123"}}
scores=msg.scores.model_dump()
try:
result = idea_graph.invoke(
{
'scores': [scores],
'business_details': [stored_data['business_details']],
'image_caption': [stored_data['image_caption'] if 'image_caption' in stored_data else ""]
},
config=config)
stored_data['final_ideation'] = result['unique_selected_ideas'][-1]
# stored_data['final_ideation']=ast.literal_eval(stored_data['final_ideation'])
top_ideas = [{k: v for k, v in idea.items() if k != "scores"} for idea in result['unique_selected_ideas'][-1]]
more_ideas = [idea for idea in result['normalizer_response'][-1]['ideas'] if idea not in top_ideas]
app_logger.info('Executed the ideation pipeline.')
return {'response':
{'top_ideas': top_ideas,
'more_ideas': more_ideas}
}
except GraphRecursionError:
error_logger.error('Ideation loop ran more than specified.')
result = idea_graph.get_state({"configurable": {"thread_id": "ideation_thread123"}})
return {'response': result[0]}
except Exception as e:
error_logger.error(f'Unable to execute the ideation: {e}')
raise