File size: 3,625 Bytes
e85383d d0ceb72 e872638 d0ceb72 e85383d d0ceb72 e901fae d0ceb72 e901fae d0ceb72 e901fae d0ceb72 e85383d d0ceb72 e85383d e901fae e85383d e901fae e85383d d0ceb72 e85383d e901fae e85383d |
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# 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("""
<style>
body {
background-color: #f5f5f5;
}
.chat-container {
background-color: #ffffff;
padding: 20px;
border-radius: 10px;
box-shadow: 0px 4px 6px rgba(0,0,0,0.1);
}
</style>
""", 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")
|