75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
import streamlit as st
|
|
import time
|
|
from backend import orquestrador
|
|
import boto3
|
|
from boto3.dynamodb.conditions import Key
|
|
|
|
# Configure the page - MUST BE FIRST
|
|
st.set_page_config(
|
|
page_title="Chatbot",
|
|
page_icon="💬",
|
|
layout="centered"
|
|
)
|
|
|
|
session = boto3.Session()
|
|
|
|
|
|
# Initialize chat history in session state
|
|
if "messages" not in st.session_state:
|
|
st.session_state.messages = []
|
|
|
|
# Display title
|
|
st.title("💬 Chatbot")
|
|
|
|
# Display chat history
|
|
for message in st.session_state.messages:
|
|
with st.chat_message(message["role"]):
|
|
st.markdown(message["content"])
|
|
|
|
# Chat input
|
|
if prompt := st.chat_input("Type your message here..."):
|
|
# Add user message to chat history
|
|
st.session_state.messages.append({"role": "user", "content": prompt})
|
|
|
|
# Display user message
|
|
with st.chat_message("user"):
|
|
st.markdown(prompt)
|
|
|
|
# Display assistant response
|
|
with st.chat_message("assistant"):
|
|
message_placeholder = st.empty()
|
|
|
|
# Simulate streaming response (replace with actual API call)
|
|
|
|
result = orquestrador.main(prompt,str(st.session_state.messages))
|
|
full_response = result["response"]
|
|
|
|
# Simulate typing effect
|
|
displayed_response = ""
|
|
for char in full_response:
|
|
displayed_response += char
|
|
message_placeholder.markdown(displayed_response + "▌")
|
|
time.sleep(0.01)
|
|
|
|
message_placeholder.markdown(full_response)
|
|
st.caption(f"Tokens: {result['input_tokens']} in / {result['output_tokens']} out / {result['total_tokens']} total")
|
|
|
|
# Add assistant response to chat history
|
|
st.session_state.messages.append({"role": "assistant", "content": full_response})
|
|
|
|
# Add a sidebar with options
|
|
with st.sidebar:
|
|
st.header("Options")
|
|
|
|
if st.button("Clear Chat History"):
|
|
st.session_state.messages = []
|
|
st.rerun()
|
|
|
|
st.divider()
|
|
|
|
st.markdown("""
|
|
### How to use:
|
|
1. Type your message in the input box
|
|
2. Press Enter or click Send
|
|
3. View the conversation history
|
|
""") |