Hello everyone I locally using the streamlit to implement a simple chatbot.
How can I add the lang. buttons at after the chatbox at the end of layout. . My python version is 3.12…3 and streamlit version==1.40.1. How can I fix it?. here is my entire app code.
import streamlit as st
import os
import time
from dotenv import load_dotenv
import traceback
from azure.identity import ClientSecretCredential
from azure.keyvault.secrets import SecretClient
from pinecone import Pinecone
from langchain.globals import set_verbose
from langchain_openai import AzureOpenAIEmbeddings
from langchain_pinecone import PineconeVectorStore
from langchain_openai import ChatOpenAI
from langchain.chains import create_retrieval_chain
from langchain.chains.combine_documents import create_stuff_documents_chain
from langchain_core.prompts import MessagesPlaceholder
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
# Set page title
st.set_page_config(
page_title="NextCore Web Chatbot"
)
st.title("NextCore Web Chatbot")
# Language options
language_options = {
"Arabic": "ar",
"Chinese (Simplified)": "zh-Hans",
"English": "en",
"French": "fr",
"Russian": "ru",
"Spanish": "es",
"Urdu":"ur"
}
language_names_dict ={
"ar": "Arabic",
"zh-Hans": "Chinese (Simplified)",
"en": "English",
"fr": "French",
"ru": "Russian",
"es": "Spanish",
"ur": "Urdu"
}
# Dropdown for language selection
# selected_language = st.selectbox(
# "Select the language for responses:",
# options=list(language_options.keys()),
# index=2 # Default to English
# )
# Initialize session state for selected language
if "selected_language" not in st.session_state:
st.session_state.selected_language = "English" # Default to English
# Initialize chat history in Streamlit's session state
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
def stream_response(response_text):
for word in response_text.split():
yield word + " "
time.sleep(0.1)
# Display chat messages from history
for message in st.session_state.chat_history:
with st.chat_message(message["role"], avatar='🕵🏻' if message["role"] == 'user' else None):
st.markdown(message["content"])
# Accept user input
if prompt := st.chat_input("Ask me anything..."):
prompt = prompt.strip()
with st.chat_message("user", avatar='🕵🏻'):
st.markdown(prompt)
st.session_state.chat_history.append({"role": "user", "content": prompt})
with st.spinner("Generating response..."):
try:
full_response = ""
with st.chat_message("assistant"):
response_container = st.empty()
response_container.markdown("...")
response = "Please help me with my issue."
full_response
for chunk in stream_response(response):
full_response += chunk
response_container.markdown(full_response)
except Exception as e:
st.error(f"An error occurred: {e}")
full_response = "Sorry, an error occurred while generating the response."
st.session_state.chat_history.append({"role": "assistant", "content": full_response})
st.markdown("---") # Separator line
st.markdown("### Select a Language")
cols = st.columns(len(language_options)) # Create buttons in columns
for idx, (lang, details) in enumerate(language_options.items()):
if cols[idx].button(
lang, key=f"lang_{lang}"
): # Use unique keys for buttons
st.session_state.selected_language = lang # Update the selected language
# Show currently selected language
st.markdown(f"**Selected Language: {st.session_state.selected_language}**")
``` Here is the snapshot:
