rag-chatbot / app.py
Sakalya122's picture
Upload 11 files
5750894 verified
Raw
History Blame Contribute Delete
2.76 kB
import streamlit as st
import uuid
from streamlit_chat import message
import time
from langchain_utils import get_langchain_response
from db_utils import insert_application_logs
from common_utils import get_page_content
def get_answer(user_query, session_id, model, debug=False):
try:
response, response_time, input_tokens, output_tokens, total_tokens, refined_query, retrieved_context = get_langchain_response(user_query, session_id)
context = get_page_content(retrieved_context)
# insert_application_logs(session_id, user_query, response, model, response_time, input_tokens, output_tokens, total_tokens)
if not debug:
return {"answer": response}
else:
return {
"answer": response,
"original_query": user_query,
"refined_query": refined_query,
"retrieved_context": context,
}
except Exception as e:
return {"error": f"An error has occurred: {str(e)}"}
st.title("AI Chat Interface")
# Initialize session state
if 'session_id' not in st.session_state:
st.session_state.session_id = str(uuid.uuid4())
if 'messages' not in st.session_state:
st.session_state.messages = []
# Sidebar for settings
st.sidebar.title("Settings")
model = st.sidebar.selectbox("Select Model", ["GPT-3.5",])
debug = st.sidebar.checkbox("Debug Mode")
# Chat interface
for i, msg in enumerate(st.session_state.messages):
if msg["role"] == "user":
message(msg["content"], is_user=True, key=f"{i}_user")
else:
message(msg["content"], key=f"{i}_ai")
# User input
user_query = st.text_input("Ask a question:")
if user_query:
# Add user message to chat history
st.session_state.messages.append({"role": "user", "content": user_query})
# Get AI response
with st.spinner("Thinking..."):
response = get_answer(user_query, st.session_state.session_id, model, debug)
# Display AI response
if "error" in response:
st.error(response["error"])
else:
ai_message = response["answer"]
st.session_state.messages.append({"role": "assistant", "content": ai_message})
message(ai_message)
# Display debug information if enabled
if debug:
with st.expander("Debug Information"):
st.write("Original Query:", response["original_query"])
st.write("Refined Query:", response["refined_query"])
st.write("Retrieved Context:", response["retrieved_context"])
# Clear the input box
# st.rerun()
# Display session ID
st.sidebar.text(f"Session ID: {st.session_state.session_id}")