File size: 2,106 Bytes
33890b1
be995a4
33890b1
be995a4
 
 
1dd50d7
3b1d5fe
14ac8e9
 
3b1d5fe
be995a4
 
33890b1
 
be995a4
 
 
1dd50d7
3b1d5fe
90dcfc0
 
 
 
be995a4
90dcfc0
 
be995a4
90dcfc0
 
 
be995a4
3b1d5fe
be995a4
3b1d5fe
33890b1
3b1d5fe
006ec78
be995a4
006ec78
be995a4
f056e53
be995a4
14ac8e9
 
f056e53
be995a4
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
# 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}")