CoolFace
Apppublic

excinober/Maternal

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
app.py116 linesDownload Raw Back to root
1import time2import gradio as gr3from langchain_openai import ChatOpenAI4from langchain.schema import HumanMessage, SystemMessage, AIMessage5import pandas as pd6from datasets import load_dataset7import os8 9css = """10    .bg-none { background-color: transparent; }11    :root {12        --background-fill-primary: #ffffff !important;13        --radius-lg: 30px !important;14        --text-xl: 45px !important;15    }16 17    #component-1 {18        border: 2px solid #e5e7eb !important;19        box-shadow: var(--block-shadow);20        border-color: var(--block-border-color);21        border-radius: var(--block-radius);22        background: var(--block-background-fill);23    }24 25    #component-2 {26        border: 2px solid;27        box-shadow: var(--block-shadow);28        border-color: var(--block-border-color);29        border-radius: var(--block-radius);30        background: var(--block-background-fill);31        width: 100%;32        line-height: var(--line-sm)33    }34 35    .shadow-none {36        box-shadow: none !important;37    }38 39    textarea {40        box-shadow: none !important;41    }42 43    .p-0 {44        padding: 0 !important;45    }46 47    #component-4 {48        padding: 8px 0 !important;49        display: inline-flex !important;50        justify-content: right;51        box-shadow: none !important;52    }53 54    footer {55        display: none !important;56    }57 58    .svelte-1mwvhlq {59        display: none !important;60    }61"""62 63def respond(message, chat_history):64    # Inicializa el modelo OpenAI con la API key65    chatgpt = ChatOpenAI(openai_api_key=os.getenv("OPENAI_API_KEY"), model="gpt-4o-mini")66 67    # Inicia el mensaje de contexto (sistema)68    messages = [69        SystemMessage(content="Eres un asistente virtual de una plataforma de telemedicina que proporciona apoyo emocional y conductual a mujeres latinas en periodo de gestación y durante el primer y segundo periodo postparto")70    ]71 72    # Agrega el historial de la conversación (humanos y asistentes anteriores)73    for human_msg, ai_msg in chat_history:74        messages.append(HumanMessage(content=human_msg))  # Mensaje del usuario75        messages.append(AIMessage(content=ai_msg))       # Respuesta del asistente76 77    # Añade el nuevo mensaje al historial78    messages.append(HumanMessage(content=message))79 80    # Envía el historial completo al modelo OpenAI para obtener la respuesta81    chat_respuesta = chatgpt(messages)82 83    # Agregar la respuesta del asistente al historial84    chat_history.append((message, chat_respuesta.content))85 86    # Guardar la conversación en el dataset87    agregar_fila_dataset(message, chat_respuesta.content)88 89    # Simular un retardo de 2 segundos para la interacción90    time.sleep(2)91 92    # Retornar el mensaje vacío (para limpiar la caja de texto) y el historial actualizado93    return "", chat_history94 95def agregar_fila_dataset(columna1, columna2):96    dataset = load_dataset('excinober/MaternalAsk', split='train')97    df = dataset.to_pandas()98 99    nueva_fila = pd.DataFrame([[columna1, columna2]], columns=['Pregunta', 'Respuesta'])100    df = pd.concat([df, nueva_fila], ignore_index=True)101    dataset = dataset.from_pandas(df)102    dataset.push_to_hub("excinober/MaternalAsk", split='train', token=os.getenv("HF_API_KEY"))103 104 105with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:106    chatbot = gr.Chatbot()107 108    with gr.Row():109        msg = gr.Textbox(placeholder="Haz tu consulta...", scale=11, show_label=False, elem_classes=["shadow-none"])110        btnsubmit = gr.Button("", icon="icon-submit.png", elem_classes=["bg-none", "shadow-none", "p-0"])111 112    # Enlazar la función 'respond' a los eventos de Gradio113    msg.submit(respond, [msg, chatbot], [msg, chatbot], queue=False)114    btnsubmit.click(respond, [msg, chatbot], [msg, chatbot], queue=False)115 116demo.launch()