# import os # import streamlit as st # from langchain.chains import ConversationChain # from langchain_openai import ChatOpenAI # from langchain.memory import ConversationBufferMemory # os.environ["OPENAI_API_KEY"] = "" # # Intialize the chatbot # @st.cache_resource # def init_chatbot(): # memory = ConversationBufferMemory() # chatbot = ConversationChain( # llm =ChatOpenAI(model = "gpt-4o-mini"), # memory = memory, # verbose = False # ) # return chatbot # # Streamlit Application # st.title("Langchain Chatbot") # st.write("Hi, I'm a chatbot built with Langchain powered by GPT. How can I assist you today?") # user_input = st.text_input("You:", placeholder = "Ask me anything....") # if user_input: # with st.spinner("Thinking......"): # resp = chatbot.run(user_input) # st.write(f"Chatbot: {resp}") import os import streamlit as st from langchain.chains import ConversationChain from langchain_openai import ChatOpenAI from langchain.memory import ConversationBufferMemory from streamlit_extras.add_vertical_space import add_vertical_space from streamlit_extras.chat_elements import message # Set OpenAI API Key (Ensure you add it in Streamlit Secrets) if "openai_api_key" in st.secrets: os.environ["OPENAI_API_KEY"] = st.secrets["openai_api_key"] else: st.error("🔑 OpenAI API Key is missing! Please add it to Streamlit secrets.") st.stop() # Initialize chatbot def init_chatbot(model="gpt-4o-mini"): memory = ConversationBufferMemory() return ConversationChain(llm=ChatOpenAI(model=model), memory=memory, verbose=False) if "chatbot" not in st.session_state: st.session_state.chatbot = init_chatbot() # Custom Styling st.markdown(""" """, unsafe_allow_html=True) # Sidebar - Settings st.sidebar.title("⚙️ Settings") model_choice = st.sidebar.radio("Select Model", ("gpt-4o-mini", "gpt-4", "gpt-3.5-turbo")) # Update chatbot model if changed if model_choice != st.session_state.chatbot.llm.model_name: st.session_state.chatbot = init_chatbot(model_choice) # Title and Description st.title("💬 LangChain AI Chatbot") st.write("### Hi, I'm a chatbot built with LangChain powered by GPT. How can I assist you today?") # Chat history if "chat_history" not in st.session_state: st.session_state.chat_history = [] # User Input user_input = st.text_input("You:", placeholder="Ask me anything...") # Process input if user_input: with st.spinner("Thinking..."): response = st.session_state.chatbot.run(user_input) if response: st.session_state.chat_history.append(("user", user_input)) st.session_state.chat_history.append(("bot", response)) # Display chat history st.write("### 🗨️ Conversation") chat_container = st.container() with chat_container: for role, text in st.session_state.chat_history: if role == "user": message(text, is_user=True, avatar_style="thumbs") else: message(text, is_user=False, avatar_style="bottts") # Add some spacing add_vertical_space(2) # Collapsible Chat History with st.expander("📜 Chat History"): for role, text in st.session_state.chat_history: st.write(f"**{role.capitalize()}**: {text}") # Footer st.markdown("---") st.markdown("Developed with ❤️ using Streamlit & LangChain")