Gaykar's picture
chnages
a2f3cd3
from app.state.state import OnboardingState
from app.nodes.graphnodes import *
from langgraph.prebuilt import ToolNode ,tools_condition
from langgraph.graph import StateGraph,END,START
from langgraph.types import RetryPolicy
# node_retry = RetryPolicy(
# max_attempts=3,
# initial_interval=1.5,
# retry_on=[ConnectionError]
# )
builder = StateGraph(OnboardingState)
# Define Nodes
builder.add_node("input_node", input_node)
builder.add_node("resume_data_extraction", extractResumeDataNode)
builder.add_node("skill_gap_analysis", skill_gap_node)
# The ReAct Agent Node
builder.add_node("roadmap_planning_agent", roadmap_planning_node)
# The Tool Execution Node (Required for the loop)
builder.add_node("tools", ToolNode(roadmap_planner_agent_tools))
# 5. Define Edges and Workflow
builder.add_edge(START, "input_node")
builder.add_edge("input_node", "resume_data_extraction")
# Join Parallel Extractions
builder.add_edge("resume_data_extraction", "skill_gap_analysis")
# Start the Planning Phase
builder.add_edge("skill_gap_analysis", "roadmap_planning_agent")
# Agentic ReAct Loop
builder.add_conditional_edges(
"roadmap_planning_agent",
tools_condition,
{
"tools": "tools",
END: END
}
)
# Loop back to agent after tool execution
builder.add_edge("tools", "roadmap_planning_agent")
# 6. Compile
graph = builder.compile(debug=True)
# try:
# # This creates a PNG and saves it to your project folder
# graph_png = graph.get_graph().draw_mermaid_png()
# with open("graph.png", "wb") as f:
# f.write(graph_png)
# print("--- Graph image saved as 'graph.png' ---")
# except Exception as e:
# # This happens if you don't have the 'pypydot' or 'graphviz' dependencies
# print(f"Could not generate graph image: {e}")