File size: 1,193 Bytes
f8734b3
1aeb5f9
a4a580c
 
bcfaa84
 
b48a433
1aeb5f9
 
 
c2d02ae
 
1aeb5f9
 
 
 
 
 
 
 
 
 
bcfaa84
 
b6b7990
1aeb5f9
a4a580c
bcfaa84
 
1aeb5f9
bcfaa84
 
1aeb5f9
 
 
bcfaa84
 
 
 
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
from langgraph.graph import StateGraph
from langchain_community.tools import TavilySearchResults
from llm_node import llm_node
from formatter_node import formatter_node

def build_graph():
    graph = StateGraph(dict)
    search_tool = TavilySearchResults()

    def search_step(state):
        question = state.get("question")
        if not question:
            raise ValueError("Missing 'question'")
        result = search_tool.run(question)
        state["search_result"] = result
        return state

    def llm_step(state):
        question = state.get("question")
        search_result = state.get("search_result", "")
        answer = llm_node(question, search_result)
        state["llm_output"] = answer
        return state

    def formatter_step(state):
        final_answer = formatter_node(state["llm_output"])
        state["final_answer"] = final_answer
        return state

    graph.add_node("search", search_step)
    graph.add_node("llm", llm_step)
    graph.add_node("formatter", formatter_step)

    graph.set_entry_point("search")
    graph.add_edge("search", "llm")
    graph.add_edge("llm", "formatter")
    graph.set_finish_point("formatter")

    return graph