eberhenriquez94 commited on
Commit
82b7c7c
1 Parent(s): 137edac
Files changed (1) hide show
  1. app.py +21 -28
app.py CHANGED
@@ -7,6 +7,7 @@ import gradio as gr
7
  # Configuración de claves de API
8
  NVIDIA_API_KEY = os.getenv("NVIDIA_API_KEY")
9
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
 
10
 
11
  # Instrucciones del sistema por defecto (pueden ser modificadas por el usuario)
12
  default_system_instruction = """
@@ -51,8 +52,7 @@ async def generate_content(client, model_name, system_instruction, borrador, is_
51
  )
52
  return completion.choices[0].message.content
53
  else: # Suponemos que es Google Gemini
54
- client.system_instruction = system_instruction
55
- response = await asyncio.to_thread(client.generate_content, borrador)
56
  return response.text
57
  except genai.types.GenerativeContentError as e:
58
  return f"Error en Google Gemini (Contenido): {str(e)}"
@@ -61,40 +61,33 @@ async def generate_content(client, model_name, system_instruction, borrador, is_
61
  except Exception as e:
62
  return f"Error en {model_name}: {str(e)}"
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
  # Función predict para procesar la entrada del usuario
65
- async def predict(api_choice, borrador):
66
  """
67
- api_choice: str - Define si se usará 'NVIDIA' o 'Google Gemini'.
68
  borrador: str - El texto del borrador judicial que se debe procesar.
69
  """
70
- system_instruction = default_system_instruction
71
- model_name = "gemini-exp-1114" if api_choice == "Google Gemini" else "gpt-4"
72
-
73
- # Verifica si se selecciona NVIDIA o Google Gemini
74
- if api_choice == "NVIDIA":
75
- client = nvidia_client
76
- is_nvidia = True
77
- elif api_choice == "Google Gemini":
78
- client = google_model
79
- is_nvidia = False
80
- else:
81
- return "Error: Debe seleccionar una API válida ('NVIDIA' o 'Google Gemini')."
82
-
83
- # Llama a la función genérica de generación
84
- result = await generate_content(client, model_name, system_instruction, borrador, is_nvidia)
85
  return result
86
 
87
  # Interfaz de usuario con Gradio
88
  with gr.Blocks() as demo:
89
  gr.Markdown("### Mejorador de Resoluciones Judiciales para Derecho de Familia - Chile")
90
 
91
- # Selección de API (NVIDIA o Google Gemini)
92
- api_choice = gr.Radio(
93
- choices=["NVIDIA", "Google Gemini"],
94
- label="Selecciona el modelo API",
95
- value="Google Gemini"
96
- )
97
-
98
  # Campo de entrada para el borrador judicial
99
  borrador = gr.Textbox(
100
  label="Ingresa el borrador de la resolución judicial",
@@ -114,8 +107,8 @@ with gr.Blocks() as demo:
114
 
115
  # Conexión del botón con la función predict
116
  submit_btn.click(
117
- fn=lambda api_choice, borrador: asyncio.run(predict(api_choice, borrador)),
118
- inputs=[api_choice, borrador],
119
  outputs=output
120
  )
121
 
 
7
  # Configuración de claves de API
8
  NVIDIA_API_KEY = os.getenv("NVIDIA_API_KEY")
9
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
10
+ genai.configure(api_key=GEMINI_API_KEY)
11
 
12
  # Instrucciones del sistema por defecto (pueden ser modificadas por el usuario)
13
  default_system_instruction = """
 
52
  )
53
  return completion.choices[0].message.content
54
  else: # Suponemos que es Google Gemini
55
+ response = await asyncio.to_thread(client.generate_content, [system_instruction, borrador])
 
56
  return response.text
57
  except genai.types.GenerativeContentError as e:
58
  return f"Error en Google Gemini (Contenido): {str(e)}"
 
61
  except Exception as e:
62
  return f"Error en {model_name}: {str(e)}"
63
 
64
+ # Función para combinar las respuestas de ambos modelos
65
+ async def combine_responses(borrador):
66
+ system_instruction = default_system_instruction
67
+
68
+ # Generar contenido con Google Gemini
69
+ google_result = await generate_content(google_model, "gemini-exp-1114", system_instruction, borrador, is_nvidia=False)
70
+
71
+ # Generar contenido con NVIDIA
72
+ nvidia_result = await generate_content(nvidia_client, "gpt-4", system_instruction, borrador, is_nvidia=True)
73
+
74
+ # Combinar las respuestas
75
+ combined_result = f"**Google Gemini:**\n{google_result}\n\n**NVIDIA:**\n{nvidia_result}"
76
+ return combined_result
77
+
78
  # Función predict para procesar la entrada del usuario
79
+ async def predict(borrador):
80
  """
 
81
  borrador: str - El texto del borrador judicial que se debe procesar.
82
  """
83
+ # Llama a la función para combinar las respuestas
84
+ result = await combine_responses(borrador)
 
 
 
 
 
 
 
 
 
 
 
 
 
85
  return result
86
 
87
  # Interfaz de usuario con Gradio
88
  with gr.Blocks() as demo:
89
  gr.Markdown("### Mejorador de Resoluciones Judiciales para Derecho de Familia - Chile")
90
 
 
 
 
 
 
 
 
91
  # Campo de entrada para el borrador judicial
92
  borrador = gr.Textbox(
93
  label="Ingresa el borrador de la resolución judicial",
 
107
 
108
  # Conexión del botón con la función predict
109
  submit_btn.click(
110
+ fn=lambda borrador: asyncio.run(predict(borrador)),
111
+ inputs=borrador,
112
  outputs=output
113
  )
114