-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgraph.py
More file actions
48 lines (38 loc) · 1.27 KB
/
graph.py
File metadata and controls
48 lines (38 loc) · 1.27 KB
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
from langgraph.graph import END, StateGraph
from agents.responder import ResponderAgent
from agents.retriever import RetrieverAgent
from agents.router import RouterAgent
from state import AgentGraphState
router_agent = RouterAgent()
retriever_agent = RetrieverAgent()
responder_agent = ResponderAgent()
def check_require_RAG(state: AgentGraphState):
if state["router_need_retriever"]:
return "retriever"
else:
return "responder"
# structure
graph = StateGraph(AgentGraphState)
graph.add_node("router", lambda state: router_agent.invoke(state))
graph.add_node("retriever", lambda state: retriever_agent.invoke(state))
graph.add_node("responder", lambda state: responder_agent.invoke(state))
# flow
graph.set_entry_point("router")
graph.add_conditional_edges(
"router",
check_require_RAG,
{"retriever": "retriever", "responder": "responder"},
)
graph.add_edge("retriever", "responder")
graph.add_edge("responder", END)
workflow = graph.compile()
if __name__ == "__main__":
question = "who is the ceo of kredivo?"
for msg, metadata in workflow.stream(
{
"question": question,
},
stream_mode="messages",
):
if "retriever" in metadata["langgraph_triggers"]:
print(msg.content, flush=True)