Spaces:
Runtime error
Runtime error
| import streamlit as st | |
| import os | |
| from utils.data_manager import ( | |
| extraer_texto_pdf, | |
| preprocesar_texto, | |
| obtener_respuesta, | |
| handle_voice_input | |
| ) | |
| # Configuración de la clave API | |
| OPENAI_API_KEY= "sk-proj-3LjZDUxPCK7NOxAGsBrcT3BlbkFJPwq200vDWf5JG2YWgAsx" # Reemplaza esto con tu clave API real | |
| def inicializar_estado(): | |
| """Inicializa el estado de la sesión si no está ya inicializado.""" | |
| if 'modelo' not in st.session_state: | |
| st.session_state['modelo'] = "gpt-3.5-turbo" | |
| if 'temperatura' not in st.session_state: | |
| st.session_state['temperatura'] = 0.5 | |
| if 'mensajes_chat' not in st.session_state: | |
| st.session_state['mensajes_chat'] = [] | |
| def barra_lateral(): | |
| """Configura la barra lateral de la aplicación.""" | |
| st.sidebar.image(os.path.join("assets"), use_column_width=True) | |
| st.sidebar.title("🤖 Galatea OMARDENT") | |
| st.sidebar.markdown("---") | |
| st.sidebar.subheader("🧠 Configuración del Modelo") | |
| st.session_state['modelo'] = st.sidebar.selectbox( | |
| "Selecciona el modelo:", | |
| ["gpt-3.5-turbo", "gpt-4", "gpt-4-32k"], | |
| index=0, | |
| help="Elige el modelo de lenguaje de OpenAI que prefieras." | |
| ) | |
| st.sidebar.markdown("---") | |
| st.session_state['temperatura'] = st.sidebar.slider( | |
| "🌡️ Temperatura", | |
| min_value=0.0, max_value=1.0, | |
| value=st.session_state['temperatura'], step=0.1 | |
| ) | |
| def mostrar_mensajes_chat(): | |
| """Muestra los mensajes del chat.""" | |
| for mensaje in st.session_state['mensajes_chat']: | |
| with st.chat_message(mensaje["role"]): | |
| st.markdown(mensaje["content"]) | |
| def manejar_pregunta_usuario(pregunta_usuario, archivo_pdf): | |
| """Procesa la pregunta del usuario.""" | |
| st.session_state['mensajes_chat'].append({"role": "user", "content": pregunta_usuario}) | |
| with st.chat_message("user"): | |
| st.markdown(pregunta_usuario) | |
| texto_preprocesado = "" | |
| if archivo_pdf: | |
| texto_pdf = extraer_texto_pdf(archivo_pdf) | |
| texto_preprocesado = preprocesar_texto(texto_pdf) | |
| respuesta = obtener_respuesta(pregunta_usuario, texto_preprocesado, st.session_state['modelo'], st.session_state['temperatura']) | |
| st.session_state['mensajes_chat'].append({"role": "assistant", "content": respuesta}) | |
| with st.chat_message("assistant"): | |
| st.markdown(respuesta) | |
| def manejar_captura_de_voz(audio_capturado): | |
| """Procesa el archivo de audio subido.""" | |
| texto_extraido = handle_voice_input(audio_capturado) | |
| st.markdown("### Texto extraído del audio:") | |
| st.write(texto_extraido) | |
| def main(): | |
| st.header("💬 Hablar con Galatea OMARDENT - Página de Chat") | |
| inicializar_estado() | |
| barra_lateral() | |
| # --- Área principal de la aplicación --- | |
| archivo_pdf = st.file_uploader("📂 Cargar PDF", type='pdf', key='chat_pdf') | |
| mostrar_mensajes_chat() | |
| pregunta_usuario = st.chat_input("Pregunta:") | |
| if pregunta_usuario: | |
| manejar_pregunta_usuario(pregunta_usuario, archivo_pdf) | |
| st.markdown("### Captura de voz") | |
| audio_capturado = st.file_uploader("Subir archivo de audio", type=["wav", "mp3"], key='audio_chat') | |
| if audio_capturado: | |
| manejar_captura_de_voz(audio_capturado) | |
| st.markdown("---") | |
| if __name__ == "__main__": | |
| main() | |