Spaces:
Running
Running
Kalyanbrata Maity
commited on
Commit
·
637fd0b
1
Parent(s):
203b254
added graph builder, states, nodes
Browse files
src/langgraphagenticai/graph/graph_builder.py
CHANGED
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from langgraph.graph import StateGraph, START, END, MessagesState
|
2 |
+
from langgraph.prebuilt import tools_condition, tool_node
|
3 |
+
from langchain_core.prompts import ChatPromptTemplate
|
4 |
+
from src.langgraphagenticai.state.state import State
|
5 |
+
from src.langgraphagenticai.nodes.basic_chatbot_node import BasicChatbotNode
|
6 |
+
|
7 |
+
|
8 |
+
class GraphBuilder:
|
9 |
+
def __init__(self, model):
|
10 |
+
self.llm = model
|
11 |
+
self.graph_builder = StateGraph(State)
|
12 |
+
|
13 |
+
def basic_chatbot_build_graph(self):
|
14 |
+
"""
|
15 |
+
Builds a basic chatbot graph using LangGraph.
|
16 |
+
This method initializes a chatbot node using the `BasicChatbotNode` class
|
17 |
+
and integrates it into the graph. The chatbot node is set as both the
|
18 |
+
entry and exi point of the graph.
|
19 |
+
"""
|
20 |
+
self.basic_chatbot_node = BasicChatbotNode(self.llm)
|
21 |
+
self.graph_builder.add_node("chatbot", self.basic_chatbot_node.process)
|
22 |
+
self.graph_builder.add_edge(START, "chatbot")
|
23 |
+
self.graph_builder.add_edge("chatbot", END)
|
24 |
+
|
25 |
+
def setup_graph(self, usecase: str):
|
26 |
+
"""
|
27 |
+
Sets up the graph for the selected use case.
|
28 |
+
"""
|
29 |
+
if usecase == "Basic Chatbot":
|
30 |
+
self.basic_chatbot_build_graph()
|
31 |
+
return self.graph_builder.compile()
|
src/langgraphagenticai/main.py
CHANGED
@@ -3,6 +3,7 @@ import json
|
|
3 |
|
4 |
from src.langgraphagenticai.ui.streamlit.load_ui import LoadStreamlitUI
|
5 |
from src.langgraphagenticai.llms.groq_llm import GroqChatLLM
|
|
|
6 |
|
7 |
# MAIN function start
|
8 |
def load_langgraph_agenticai_app():
|
@@ -45,6 +46,11 @@ def load_langgraph_agenticai_app():
|
|
45 |
|
46 |
## Graph builder
|
47 |
graph_builder = GraphBuilder(model)
|
|
|
|
|
|
|
|
|
|
|
48 |
|
49 |
except Exception as e:
|
50 |
raise ValueError(f"Error Occurred with Exception: {e}")
|
|
|
3 |
|
4 |
from src.langgraphagenticai.ui.streamlit.load_ui import LoadStreamlitUI
|
5 |
from src.langgraphagenticai.llms.groq_llm import GroqChatLLM
|
6 |
+
from src.langgraphagenticai.graph.graph_builder import GraphBuilder
|
7 |
|
8 |
# MAIN function start
|
9 |
def load_langgraph_agenticai_app():
|
|
|
46 |
|
47 |
## Graph builder
|
48 |
graph_builder = GraphBuilder(model)
|
49 |
+
try:
|
50 |
+
graph = graph_builder.setup_graph(usecase)
|
51 |
+
except Exception as e:
|
52 |
+
st.error(f"Error: Graph setup failed - {e}")
|
53 |
+
return
|
54 |
|
55 |
except Exception as e:
|
56 |
raise ValueError(f"Error Occurred with Exception: {e}")
|
src/langgraphagenticai/nodes/basic_chatbot_node.py
ADDED
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from src.langgraphagenticai.state.state import State
|
2 |
+
|
3 |
+
class BasicChatbotNode:
|
4 |
+
"""
|
5 |
+
Basic chatbot logic implementation
|
6 |
+
"""
|
7 |
+
def __init__(self, model):
|
8 |
+
self.llm = model
|
9 |
+
|
10 |
+
def process(self, state: State) -> dict:
|
11 |
+
"""
|
12 |
+
Processes the input state and generates a chatbot response.
|
13 |
+
"""
|
14 |
+
return {"message": self.llm.invoke(state['messages'])}
|
src/langgraphagenticai/state/state.py
ADDED
@@ -0,0 +1,11 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from typing import Annotated, Literal, Optional
|
2 |
+
from typing_extensions import TypedDict
|
3 |
+
from langgraph.graph.message import add_messages
|
4 |
+
from typing import TypedDict, Annotated, List
|
5 |
+
from langchain_core.messages import HumanMessage, AIMessage
|
6 |
+
|
7 |
+
class State(TypedDict):
|
8 |
+
"""
|
9 |
+
Represents the structure of the state used in the graph.
|
10 |
+
"""
|
11 |
+
messages: Annotated[list, add_messages]
|