import streamlit as st from langchain_openai import ChatOpenAI from langchain_utils import invoke_chain from langchain_community.callbacks import get_openai_callback def init_session_state(): if "messages" not in st.session_state: st.session_state.messages = [] if "connected" not in st.session_state: st.session_state.connected = False def create_sidebar(): with st.sidebar: st.title("Postgres Credentials") st.subheader("Enter your Credentials & Connect") # Database credentials host = st.text_input("Host", value="localhost") port = st.text_input("Port", value="5432") user = st.text_input("User", value="postgres") password = st.text_input("Password", type="password") database = st.text_input("Database") # OpenAI API key api_key = st.text_input("OpenAI API Key", type="password") # Connect button if st.button("Connect", use_container_width=True): try: # Store credentials in session state st.session_state.db_credentials = { "host": host, "port": port, "user": user, "password": password, "database": database } st.session_state.api_key = api_key st.session_state.connected = True st.success("Successfully connected!") except Exception as e: st.error(f"Connection failed: {str(e)}") st.session_state.connected = False def main(): init_session_state() create_sidebar() st.title("Chat with Postgres DB") if not st.session_state.connected: st.info("Please enter your credentials in the sidebar and connect first.") return # Display the welcome message with the database icon using markdown st.markdown("""