eberhenriquez94 commited on
Commit
e7f4934
verified
1 Parent(s): a2f020a
Files changed (1) hide show
  1. app.py +48 -40
app.py CHANGED
@@ -1,13 +1,16 @@
1
  import os
2
  import asyncio
3
- import google.generativeai as genai
 
4
  import gradio as gr
5
 
6
  # Configuraci贸n de la clave de API
7
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
8
  if not GEMINI_API_KEY:
9
  raise ValueError("La clave GEMINI_API_KEY no est谩 configurada correctamente.")
10
- genai.configure(api_key=GEMINI_API_KEY)
 
 
11
 
12
  # Instrucciones del sistema por defecto
13
  instruction = """
@@ -72,64 +75,69 @@ La versi贸n revisada del borrador de la resoluci贸n judicial, aplicando las corr
72
  * La estructura original del borrador, los hechos probados y la fundamentaci贸n jur铆dica son intocables.
73
  * Emplee el estilo jur铆dico imperativo y el estilo de redacci贸n descrito.
74
  """
75
- # Configuraci贸n del modelo de Google gemini-2.0-flash-exp
76
- google_flash_exp_model = genai.GenerativeModel(
77
- "gemini-2.0-pro-exp-02-05",
78
- system_instruction=instruction,
79
- generation_config={
80
- "temperature": 0.3,
81
- "top_p": 0.9,
82
- "top_k": 40,
83
- "max_output_tokens": 8000,
84
- "response_mime_type": "text/plain",
85
- },
86
- )
87
 
88
- # Configuraci贸n del modelo de Google gemini-exp-1206
89
- google_gemini_ex_model = genai.GenerativeModel(
90
- "gemini-2.0-flash-thinking-exp-01-21",
91
  system_instruction=instruction,
92
- generation_config={
93
- "temperature": 0.3,
94
- "top_p": 0.9,
95
- "top_k": 40,
96
- "max_output_tokens": 8000,
97
- "response_mime_type": "text/plain",
98
- },
99
  )
100
 
101
- async def generate_content(client, model_name, borrador):
 
 
 
 
 
102
  try:
103
- if not hasattr(client, 'generate_content'):
104
- raise AttributeError(f"El cliente {model_name} no tiene implementado el m茅todo 'generate_content'.")
105
- response = await asyncio.to_thread(client.generate_content, borrador)
 
 
106
  return response.text
107
  except Exception as e:
108
  return f"Error en {model_name}: {str(e)}"
109
 
 
110
  async def combine_responses(borrador):
111
- google_flash_exp_task = asyncio.create_task(
112
- generate_content(google_flash_exp_model, "Google Gemini flash-exp", borrador)
113
- )
114
- google_gemini_ex_task = asyncio.create_task(
115
- generate_content(google_gemini_ex_model, "Google gemini-exp-1206", borrador)
 
 
116
  )
117
- google_flash_exp_result = await google_flash_exp_task
118
- google_gemini_ex_result = await google_gemini_ex_task
119
- combined_result = f"**Google Gemini flash-exp:**\n{google_flash_exp_result}\n\n**Google gemini-exp-1206:**\n{google_gemini_ex_result}"
120
  return combined_result
121
 
 
122
  async def predict(borrador):
123
  return await combine_responses(borrador)
124
 
 
 
 
 
125
  # Interfaz Gradio
126
  with gr.Blocks() as demo:
127
  gr.Markdown("### Mejorador de resoluciones judiciales - Derecho de Familia en Chile")
128
- borrador = gr.Textbox(label="Borrador judicial", placeholder="Escribe o pega el texto aqu铆...", lines=10)
129
- output = gr.Textbox(label="Resultado mejorado", placeholder="El resultado aparecer谩 aqu铆...", lines=10)
 
 
 
 
 
 
 
 
130
  submit_btn = gr.Button("Enviar")
131
-
132
- submit_btn.click(fn=predict, inputs=borrador, outputs=output)
133
 
134
  if __name__ == "__main__":
135
  demo.launch()
 
1
  import os
2
  import asyncio
3
+ from google import genai
4
+ from google.genai import types
5
  import gradio as gr
6
 
7
  # Configuraci贸n de la clave de API
8
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
9
  if not GEMINI_API_KEY:
10
  raise ValueError("La clave GEMINI_API_KEY no est谩 configurada correctamente.")
11
+
12
+ # Se crea el cliente de la SDK para Gemini Developer API
13
+ client = genai.Client(api_key=GEMINI_API_KEY)
14
 
15
  # Instrucciones del sistema por defecto
16
  instruction = """
 
75
  * La estructura original del borrador, los hechos probados y la fundamentaci贸n jur铆dica son intocables.
76
  * Emplee el estilo jur铆dico imperativo y el estilo de redacci贸n descrito.
77
  """
 
 
 
 
 
 
 
 
 
 
 
 
78
 
79
+ # Configuraci贸n com煤n de generaci贸n para ambos modelos
80
+ generation_config = types.GenerateContentConfig(
 
81
  system_instruction=instruction,
82
+ temperature=0.3,
83
+ top_p=0.9,
84
+ top_k=40,
85
+ max_output_tokens=8000,
86
+ response_mime_type="text/plain"
 
 
87
  )
88
 
89
+ # Definici贸n de los nombres de modelo a utilizar
90
+ model_flash_exp = "gemini-2.0-pro-exp-02-05"
91
+ model_gemini_ex = "gemini-2.0-flash-thinking-exp-01-21"
92
+
93
+ # Funci贸n as铆ncrona para generar contenido usando el modelo indicado
94
+ async def generate_content(model_name, borrador):
95
  try:
96
+ response = await client.aio.models.generate_content(
97
+ model=model_name,
98
+ contents=borrador,
99
+ config=generation_config
100
+ )
101
  return response.text
102
  except Exception as e:
103
  return f"Error en {model_name}: {str(e)}"
104
 
105
+ # Funci贸n que combina las respuestas de ambos modelos
106
  async def combine_responses(borrador):
107
+ flash_task = asyncio.create_task(generate_content(model_flash_exp, borrador))
108
+ gemini_ex_task = asyncio.create_task(generate_content(model_gemini_ex, borrador))
109
+ flash_result = await flash_task
110
+ gemini_ex_result = await gemini_ex_task
111
+ combined_result = (
112
+ f"**Google Gemini flash-exp:**\n{flash_result}\n\n"
113
+ f"**Google gemini-exp-1206:**\n{gemini_ex_result}"
114
  )
 
 
 
115
  return combined_result
116
 
117
+ # Funci贸n as铆ncrona principal
118
  async def predict(borrador):
119
  return await combine_responses(borrador)
120
 
121
+ # Funci贸n sincr贸nica que envuelve la llamada as铆ncrona (para Gradio)
122
+ def predict_sync(borrador):
123
+ return asyncio.run(predict(borrador))
124
+
125
  # Interfaz Gradio
126
  with gr.Blocks() as demo:
127
  gr.Markdown("### Mejorador de resoluciones judiciales - Derecho de Familia en Chile")
128
+ borrador_input = gr.Textbox(
129
+ label="Borrador judicial",
130
+ placeholder="Escribe o pega el texto aqu铆...",
131
+ lines=10
132
+ )
133
+ output = gr.Textbox(
134
+ label="Resultado mejorado",
135
+ placeholder="El resultado aparecer谩 aqu铆...",
136
+ lines=10
137
+ )
138
  submit_btn = gr.Button("Enviar")
139
+
140
+ submit_btn.click(fn=predict_sync, inputs=borrador_input, outputs=output)
141
 
142
  if __name__ == "__main__":
143
  demo.launch()