Almah's picture
Update app.py
a16dca8 verified
Raw
History Blame Contribute Delete
2.72 kB
import gradio as gr
import os
from dotenv import load_dotenv
import google.generativeai as genai
# Cargamos variables de entorno
load_dotenv(os.path.join(os.path.dirname(__file__), './.env'))
genai.configure(api_key=os.getenv("GEMINI_API_KEY"))
model = genai.GenerativeModel('gemini-2.5-flash')
def procesar_consulta(consulta, estructura_temas, historial):
# Validaciones b谩sicas
if not consulta or not estructura_temas:
gr.Warning("鈿狅笍 Por favor, llena ambos campos antes de continuar.")
return consulta, estructura_temas, historial
# Aseguramos que el historial sea una lista (por si llega None)
if historial is None:
historial = []
# 1. Primer llamado: Descripciones de la estructura
prompt_desc = f"Eres experta en protecci贸n de datos y an谩lisis de resoluciones de la SIC. Tu objetivo es ayudar a entender radicados legales de privacidad. Necesito que Describas brevemente cada nivel de esta jerarqu铆a: {estructura_temas} de acuerdo a tu expertise."
try:
descripciones = model.generate_content(prompt_desc).text
except Exception as e:
descripciones = f"Error en descripciones: {str(e)}"
# 2. Segundo llamado: Clasificaci贸n
prompt_class = f"""
experta en protecci贸n de datos y an谩lisis de resoluciones de la SIC. Tu objetivo es ayudar a entender radicados legales de privacidad.
Basado en: {descripciones}
Clasifica la consulta: "{consulta}"
Explica el porqu茅 de la clasificaci贸n.
"""
try:
clasificacion = model.generate_content(prompt_class).text
except Exception as e:
clasificacion = f"Error en clasificaci贸n: {str(e)}"
respuesta_completa = f"### 馃摎 Estructura\n{descripciones}\n\n---\n### 馃攳 Resultado\n{clasificacion}"
#historial
historial.append({"role": "user", "content": consulta})
historial.append({"role": "assistant", "content": respuesta_completa})
# Retornamos los valores para limpiar inputs y actualizar el chatbot
return "", "", historial
with gr.Blocks() as demo:
gr.Markdown("# 馃 Clasificador Gemini")
chatbot = gr.Chatbot(label="Chat de Clasificaci贸n")
with gr.Row():
txt_consulta = gr.Textbox(label="Tu consulta", placeholder="Ej: Duda acerca de privacidad de datos")
txt_temas = gr.Textbox(label="Temas > Subtemas", placeholder="1. Protecci贸n de Datos > 1.1 internet > 1.1.2 informaci贸n personal")
btn = gr.Button("Analizar", variant="primary")
# lista de dicts
btn.click(
procesar_consulta,
inputs=[txt_consulta, txt_temas, chatbot],
outputs=[txt_consulta, txt_temas, chatbot]
)
if __name__ == "__main__":
demo.launch()