st / app.py
farukkr's picture
Update app.py
6972d09 verified
import streamlit as st
import requests
import json
import re
API_URL = "https://jj78yliqd7.execute-api.eu-central-1.amazonaws.com/dev/chatbot"
def get_response(prompt, history):
params = {"prompt": prompt}
response = requests.get(API_URL, params=params)
if response.status_code == 200:
response_body = response.json().get('body')
answer = response_body.get('answer')
return answer
else:
return "Sorry, something went wrong. Please try again."
# Regular expression to extract JSON object from text
def extract_json(text):
json_data = re.search(r'\{.*\}', text, re.DOTALL)
if json_data:
return json_data.group(0)
else:
return None
# Streamlit App
st.sidebar.title("Wissensguru - IDTA")
# Session state initialization
if "chat_history" not in st.session_state:
st.session_state.chat_history = []
# Displaying conversation history
for message in st.session_state.chat_history:
if isinstance(message, AIMessage):
with st.chat_message("AI", expanded=False):
st.markdown(message.content)
elif isinstance(message, HumanMessage):
with st.chat_message("Human", expanded=False):
st.markdown(message.content)
# User input
user_query = st.chat_input("Type your message here...")
if user_query is not None and user_query != "":
# Display user's message
with st.chat_message("Human"):
st.markdown(user_query)
# Generate bot's response
response = get_response(user_query, st.session_state.chat_history)
# Extract JSON from bot's response
extracted_json = extract_json(response)
if extracted_json:
# Parse JSON string into a dictionary
data_dict = json.loads(extracted_json)
# Display JSON in Streamlit
st.json(data_dict)
else:
# Display bot's response if JSON extraction fails
with st.chat_message("AI"):
st.markdown(response)
# Append messages to chat history
st.session_state.chat_history.append(HumanMessage(content=user_query))
st.session_state.chat_history.append(AIMessage(content=response))