AgentiAI / src /langgraphagenticai /graph /graph_builder.py
kamaleswar Mohanta
Add SDLC graph builder and integrate SDLC node; enhance state management with generated requirements and user stories
1dd50d7
# src/langgraphagenticai/graph/graph_builder.py
from langchain_core.language_models import BaseLanguageModel
from langgraph.checkpoint.memory import MemorySaver
from src.langgraphagenticai.graph.graph_builder_blog import BlogGraphBuilder
from src.langgraphagenticai.graph.graph_builder_basic import BasicChatbotGraphBuilder
from src.langgraphagenticai.graph.graph_bulider_tool import ChatbotWithToolGraphBuilder
from src.langgraphagenticai.graph.graph_builder_sdlc import SdlcGraphBuilder
class GraphBuilder:
def __init__(self, llm: BaseLanguageModel):
self.llm = llm
self.memory = MemorySaver()
self.blog_builder = BlogGraphBuilder(self.llm, self.memory)
self.basic_builder = BasicChatbotGraphBuilder(self.llm, self.memory)
self.tool_builder = ChatbotWithToolGraphBuilder(self.llm, self.memory)
self.sdlc_builder = SdlcGraphBuilder(self.llm, self.memory)
def validate_and_standardize_structure(self, user_input: str) -> list:
"""
Uses an LLM to interpret user input and generate a standardized list of blog section names.
Ensures the user's specified structure is respected if provided.
Args:
user_input (str): The full user input from the Streamlit form (e.g., "Topic: AI\nStructure: Intro, Benefits, Summary").
Returns:
List[str]: A list of standardized section names (e.g., ["Intro", "Benefits", "Summary"]).
"""
return self.blog_builder.validate_and_standardize_structure(user_input)
def setup_graph(self, usecase: str):
"""
Sets up the appropriate graph based on the selected use case.
"""
if usecase == "Basic Chatbot":
return self.basic_builder.build_graph()
elif usecase == "Chatbot with Tool":
return self.tool_builder.build_graph()
elif usecase == "Blog Generation":
return self.blog_builder.build_graph()
elif usecase == "SDLC":
return self.sdlc_builder.build_graph()
else:
raise ValueError(f"Unknown use case: {usecase}")