Spaces:
Sleeping
Sleeping
| from .state import State , ValidationFormatter | |
| from .tools import retrieve_tool | |
| from langgraph.prebuilt import create_react_agent | |
| from utils.models_loader import ideator_llm, critic_llm , improver_llm , validator_llm | |
| from langchain_core.messages import SystemMessage , HumanMessage | |
| from .prompts import ideator_prompt , critic_prompt , improver_prompt , validator_prompt | |
| def ideator(state:State): | |
| tools=[retrieve_tool] | |
| react_agent=create_react_agent( | |
| model=ideator_llm, | |
| tools=tools | |
| ) | |
| template = ideator_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n''')] | |
| response = react_agent.invoke({'messages':messages}) | |
| response = response['messages'][-1].content | |
| print('Ideator Response:',response) | |
| state.ideator_response = response | |
| print('Ideator Generated the story') | |
| return state | |
| def critic(state:State): | |
| tools=[retrieve_tool] | |
| react_agent=create_react_agent( | |
| model=critic_llm, | |
| tools=tools | |
| ) | |
| template = critic_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n. The business_details is\n{state.business_details}\n''')] | |
| response = react_agent.invoke({'messages':messages}) | |
| response = response['messages'][-1].content | |
| print('Critic Response:',response) | |
| state.critic_response = response | |
| print('Critic Evaluated the story') | |
| return state | |
| def improver(state:State): | |
| react_agent=create_react_agent( | |
| model=improver_llm, | |
| tools=[] | |
| ) | |
| template = improver_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n The business_details is:\n{state.business_details}''')] | |
| response = react_agent.invoke({'messages':messages}) | |
| response = response['messages'][-1].content | |
| print('Improver Response:',response) | |
| state.improver_response = response | |
| print('Improver Improved the story') | |
| return state | |
| def validator1(state:State): | |
| template = validator_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n The business_details is:\n{state.business_details}''')] | |
| response = validator_llm.with_structured_output(ValidationFormatter).invoke(messages) | |
| print(f'Validator 1 response: {response}') | |
| state.validator1_response = response.result | |
| print('The state check:',state.validator1_response) | |
| if 'not validated' in response.result: | |
| state.disagreement_reason = response.reason | |
| return state | |
| def validator2(state:State): | |
| template = validator_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n The business_details is:\n{state.business_details}''')] | |
| response = ideator_llm.with_structured_output(ValidationFormatter).invoke(messages) | |
| print(f'Validator 2 response: {response}') | |
| state.validator2_response = response.result | |
| print('The state check:',state.validator1_response) | |
| if 'not validated' in response.result: | |
| state.disagreement_reason = response.reason | |
| return state | |
| def validator3(state:State): | |
| template = validator_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n The business_details is:\n{state.business_details}''')] | |
| response = critic_llm.with_structured_output(ValidationFormatter).invoke(messages) | |
| print(f'Validator 3 response: {response}') | |
| state.validator3_response = response.result | |
| print('The state check:',state.validator1_response) | |
| if 'not validated' in response.result: | |
| state.disagreement_reason = response.reason | |
| return state | |
| def validator4(state:State): | |
| template = validator_prompt(state) | |
| messages = [SystemMessage(content=template), | |
| HumanMessage(content=f'''The topic of the video is:\n{state.topic}\n The business_details is:\n{state.business_details}''')] | |
| response = improver_llm.with_structured_output(ValidationFormatter).invoke(messages) | |
| print(f'Validator 4 response: {response}') | |
| state.validator4_response = response.result | |
| print('The state check:',state.validator1_response) | |
| if 'not validated' in response.result: | |
| state.topic=None | |
| state.disagreement_reason = response.reason | |
| return state | |
| def route1_after_validation(state:State): | |
| if 'not validated' in state.validator1_response: | |
| return False | |
| else: | |
| return True | |
| def route2_after_validation(state:State): | |
| if 'not validated' in state.validator2_response: | |
| return False | |
| else: | |
| return True | |
| def route3_after_validation(state:State): | |
| if 'not validated' in state.validator3_response: | |
| return False | |
| else: | |
| return True | |
| def route4_after_validation(state:State): | |
| if 'not validated' in state.validator4_response: | |
| return False | |
| else: | |
| return True | |