File size: 1,793 Bytes
4ec07e1
 
 
 
586b608
4ec07e1
602f88e
9002aed
 
 
 
 
602f88e
4ec07e1
 
 
 
 
 
fd01f65
 
602f88e
fd01f65
 
 
 
4ec07e1
fd01f65
4ec07e1
fd01f65
4ec07e1
 
fd01f65
4ec07e1
 
602f88e
4ec07e1
602f88e
 
4ec07e1
 
 
fd01f65
4ec07e1
 
fd01f65
a2f3cd3
9002aed
 
f044dce
 
 
 
 
 
 
 
 
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
49
50
51
52
53
54
55
56
57
58
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}")