import requests import streamlit as st import time st.title("Omdena Chatbot Interface") # Edit API url here url = 'https://pvanand-omdi-chat-model.hf.space' # Initialize chat history if "messages" not in st.session_state: st.session_state.messages = [] # Display chat messages from history on app rerun for message in st.session_state.messages: with st.chat_message(message["role"]): st.markdown(message["content"]) # Accept user input if user_input := st.chat_input("What is up?"): # Add user message to chat history st.session_state.messages.append({"role": "user", "content": user_input}) # Display user message in chat message container with st.chat_message("user"): st.markdown(user_input) # Send user input to Rasa webhook payload = {"sender": "user", "message": user_input} response = requests.post(url+'/webhooks/rest/webhook', json=payload) bot_reply = response.json() # Extract assistant response if bot_reply !=[]: assistant_response = "" if len(bot_reply)>1: for reply in bot_reply[1:]: assistant_response+=(" "+reply['text']) else: assistant_response = bot_reply[0]['text'] else: assistant_response = 'API request returned with an empty list []. Please continue with a different question' # Display assistant response in chat message container with st.chat_message("assistant"): message_placeholder = st.empty() full_response = "" # Simulate stream of response with milliseconds delay for chunk in assistant_response.split(): full_response += chunk + " " time.sleep(0.05) # Add a blinking cursor to simulate typing message_placeholder.markdown(full_response + "▌") message_placeholder.markdown(full_response) # Add assistant response to chat history st.session_state.messages.append({"role": "assistant", "content": full_response}) # Save to google sheet # Deployed web app URL for writing google sheets webhook_url = "https://script.google.com/macros/s/AKfycbzhikyq7IduuEPGmrvcmJV9YlziiVyBysQ_oYf7lOzF8w9zg--BI2S_5cLuftp0pKqy/exec" action = "?action=addData" # Data to send data = { "user": user_input, "bot": assistant_response } try: # Send POST request to the webhook URL response = requests.post(webhook_url + action, json=data) except: pass # Add debug button to display RASA version, Model Name with st.expander("Debug"): if st.button("Show Debug Info"): request_ids = ['/status', '/version'] results = [requests.get(url+request_id).json() for request_id in request_ids] st.write(results) else: st.write("")