| import gradio as gr |
| import os |
| from dotenv import load_dotenv |
| import google.generativeai as genai |
|
|
| |
| 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): |
| |
| if not consulta or not estructura_temas: |
| gr.Warning("鈿狅笍 Por favor, llena ambos campos antes de continuar.") |
| return consulta, estructura_temas, historial |
|
|
| |
| if historial is None: |
| historial = [] |
|
|
| |
| 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)}" |
|
|
| |
| 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.append({"role": "user", "content": consulta}) |
| historial.append({"role": "assistant", "content": respuesta_completa}) |
| |
| |
| 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") |
|
|
| |
| btn.click( |
| procesar_consulta, |
| inputs=[txt_consulta, txt_temas, chatbot], |
| outputs=[txt_consulta, txt_temas, chatbot] |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |