Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from src.langgraphagenticai.ui.streamlitui.loadui import LoadStreamlitUI | |
| from src.langgraphagenticai.LLMS.groqllm import GroqLLM | |
| from src.langgraphagenticai.graph.graph_builder import GraphBuilder | |
| from src.langgraphagenticai.ui.streamlitui.display_result import DisplayResultStreamlit | |
| def load_langgraph_agenticai_app(): | |
| """ | |
| Loads and runs the LangGraph AgenticAI application using Streamlit. | |
| This function: | |
| 1. Initializes and loads the Streamlit UI components. | |
| 2. Reads user inputs such as selected use case and model options. | |
| 3. Sets up the appropriate LLM (Groq-based). | |
| 4. Builds a LangGraph workflow based on the selected use case. | |
| 5. Executes the workflow and displays results interactively. | |
| Includes robust exception handling to provide meaningful Streamlit error messages. | |
| """ | |
| # Step 1: Load the Streamlit-based user interface | |
| ui = LoadStreamlitUI() | |
| user_input = ui.load_streamlit_ui() | |
| # If UI failed to return valid inputs, display error and exit | |
| if not user_input: | |
| st.error("Error: Failed to load user input from the UI.") | |
| return | |
| # Step 2: Capture user input message based on interaction type | |
| # If user clicked a button to fetch AI news → use the 'timeframe' value (daily/weekly/monthly) | |
| # Otherwise, show a chat input box for general chatbot interaction | |
| if st.session_state.IsFetchButtonClicked: | |
| user_message = st.session_state.timeframe | |
| else: | |
| user_message = st.chat_input("Enter your message:") | |
| # Continue only if a message was provided | |
| if user_message: | |
| try: | |
| # Step 3: Initialize and configure the selected LLM model (e.g., Groq’s Llama) | |
| obj_llm_config = GroqLLM(user_contols_input=user_input) | |
| model = obj_llm_config.get_llm_model() | |
| # If model setup fails, show error and stop execution | |
| if not model: | |
| st.error("Error: LLM model could not be initialized.") | |
| return | |
| # Step 4: Get the selected use case (e.g., Basic Chatbot / Chatbot With Web / AI News) | |
| usecase = user_input.get("selected_usecase") | |
| if not usecase: | |
| st.error("Error: No use case selected.") | |
| return | |
| # Step 5: Build the corresponding LangGraph for the chosen use case | |
| graph_builder = GraphBuilder(model) | |
| try: | |
| # Compile the graph (depending on use case type) | |
| graph = graph_builder.setup_graph(usecase) | |
| # Print user message in terminal/log for debugging purposes | |
| print(user_message) | |
| # Step 6: Display the result on the Streamlit UI | |
| DisplayResultStreamlit(usecase, graph, user_message).display_result_on_ui() | |
| except Exception as e: | |
| # Handle graph-building specific errors | |
| st.error(f"Error: Graph setup failed - {e}") | |
| return | |
| except Exception as e: | |
| # Handle any general exception (e.g., model or UI failure) | |
| st.error(f"Error: Unexpected issue occurred - {e}") | |
| return | |