File size: 940 Bytes
0c45046
 
 
2035493
 
0c45046
 
8055f0d
3e8133b
0c45046
2035493
3e8133b
8055f0d
2035493
 
 
3e8133b
0c45046
2035493
 
3e8133b
2035493
3e8133b
 
 
 
 
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
from langgraph.graph import StateGraph
from graph.types import SDGState
from graph.nodes.evolve import evolve_question
from graph.nodes.retrieve import retrieve_relevant_context
from graph.nodes.answer import generate_answer


def build_sdg_graph(docs, vectorstore, llm) -> StateGraph:
    # Create a new graph with our state type
    builder = StateGraph(SDGState)

    # Add nodes with explicit state handling
    builder.add_node("evolve", lambda state: evolve_question(state, llm))
    builder.add_node("retrieve", lambda state: retrieve_relevant_context(state, vectorstore))
    builder.add_node("generate_answer", generate_answer)

    # Define the flow
    builder.set_entry_point("evolve")
    builder.add_edge("evolve", "retrieve")
    builder.add_edge("retrieve", "generate_answer")
    builder.set_finish_point("generate_answer")

    # Compile the graph
    graph = builder.compile()
    
    # Return the graph
    return graph