eberhenriquez94 commited on
Commit
e03cc71
1 Parent(s): 705e75d
Files changed (1) hide show
  1. app.py +14 -33
app.py CHANGED
@@ -1,7 +1,7 @@
1
  import os
2
  import asyncio
3
  import google.generativeai as genai
4
- from openai import OpenAI, APIError as OpenAIError
5
  import gradio as gr
6
 
7
  # Configuración de claves de API
@@ -9,11 +9,11 @@ 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 = """
14
  Actúa como un Ministro de la Corte Suprema de Chile, específicamente de la Primera Sala especializada en Derecho de Familia, para revisar y perfeccionar un borrador de resolución judicial. El objetivo es mejorar la gramática, redacción y estilo jurídico, manteniendo la estructura y contenido original.
15
  Como Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia, y con una vasta y reconocida trayectoria en la judicatura, tu misión es revisar y perfeccionar un borrador de resolución judicial, aplicando un tono formal, autoritario e impersonal, empleando el modo imperativo en expresiones de orden y mandato judicial. Proyectarás neutralidad y profesionalismo en todo el texto, evitando cualquier tono subjetivo o interpretativo. Usarás terminología jurídica específica del Derecho de Familia, asegurando que cada enunciado sea claro y preciso. Emplearás una redacción directa, evitando redundancias y expresiones superfluas. Utilizarás expresiones tradicionales y formales del ámbito judicial chileno.
16
- El objetivo es elevar el texto a un estándar de excelencia en redacción jurídica, asegurando la máxima claridad, precisión, concisión y formalidad. **No debes modificar la estructura del borrador, tampoco agregar fundamentación o hechos. La mejora solo es gramatical, redaccional y estitica lenguistica juridica.**
17
  """
18
 
19
  # Configuración del modelo de Google
@@ -44,74 +44,55 @@ async def generate_content(client, model_name, system_instruction, borrador, is_
44
  ]
45
  completion = await asyncio.to_thread(
46
  client.chat.completions.create,
47
- model="meta/llama-3.1-405b-instruct",
48
  messages=messages,
49
  temperature=0.5,
50
  top_p=0.7,
51
  max_tokens=4000
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)}"
59
- except OpenAIError as e:
60
- return f"Error en NVIDIA API: {str(e.message)}"
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",
94
  placeholder="Escribe o pega el texto aquí...",
95
  lines=10
96
  )
97
-
98
- # Botón de procesamiento
99
- submit_btn = gr.Button("Procesar texto")
100
-
101
- # Campo de salida para el resultado procesado
102
  output = gr.Textbox(
103
  label="Resultado mejorado",
104
  placeholder="El resultado aparecerá aquí...",
105
  lines=10
106
  )
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
 
115
- # Iniciar el servidor Gradio
116
  if __name__ == "__main__":
117
  demo.launch()
 
1
  import os
2
  import asyncio
3
  import google.generativeai as genai
4
+ from openai import OpenAI
5
  import gradio as gr
6
 
7
  # Configuración de claves de API
 
9
  GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
10
  genai.configure(api_key=GEMINI_API_KEY)
11
 
12
+ # Instrucciones del sistema por defecto
13
  default_system_instruction = """
14
  Actúa como un Ministro de la Corte Suprema de Chile, específicamente de la Primera Sala especializada en Derecho de Familia, para revisar y perfeccionar un borrador de resolución judicial. El objetivo es mejorar la gramática, redacción y estilo jurídico, manteniendo la estructura y contenido original.
15
  Como Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia, y con una vasta y reconocida trayectoria en la judicatura, tu misión es revisar y perfeccionar un borrador de resolución judicial, aplicando un tono formal, autoritario e impersonal, empleando el modo imperativo en expresiones de orden y mandato judicial. Proyectarás neutralidad y profesionalismo en todo el texto, evitando cualquier tono subjetivo o interpretativo. Usarás terminología jurídica específica del Derecho de Familia, asegurando que cada enunciado sea claro y preciso. Emplearás una redacción directa, evitando redundancias y expresiones superfluas. Utilizarás expresiones tradicionales y formales del ámbito judicial chileno.
16
+ El objetivo es elevar el texto a un estándar de excelencia en redacción jurídica, asegurando la máxima claridad, precisión, concisión y formalidad. **No debes modificar la estructura del borrador, tampoco agregar fundamentación o hechos. La mejora solo es gramatical, redaccional y estética lingüística jurídica.**
17
  """
18
 
19
  # Configuración del modelo de Google
 
44
  ]
45
  completion = await asyncio.to_thread(
46
  client.chat.completions.create,
47
+ model="meta/llama-3.1-405b-instruct",
48
  messages=messages,
49
  temperature=0.5,
50
  top_p=0.7,
51
  max_tokens=4000
52
  )
53
  return completion.choices[0].message.content
54
+ else:
55
  response = await asyncio.to_thread(client.generate_content, [system_instruction, borrador])
56
  return response.text
 
 
 
 
57
  except Exception as e:
58
  return f"Error en {model_name}: {str(e)}"
59
 
60
+ # Combina las respuestas de ambos modelos
61
  async def combine_responses(borrador):
62
  system_instruction = default_system_instruction
63
 
64
  # Generar contenido con Google Gemini
65
+ google_result = await generate_content(google_model, "Google Gemini", system_instruction, borrador, is_nvidia=False)
66
 
67
  # Generar contenido con NVIDIA
68
+ nvidia_result = await generate_content(nvidia_client, "NVIDIA", system_instruction, borrador, is_nvidia=True)
69
 
70
+ # Combinar resultados
71
  combined_result = f"**Google Gemini:**\n{google_result}\n\n**NVIDIA:**\n{nvidia_result}"
72
  return combined_result
73
 
74
+ # Función de predicción
75
  async def predict(borrador):
 
 
 
 
76
  result = await combine_responses(borrador)
77
  return result
78
 
79
+ # Interfaz Gradio simplificada
80
  with gr.Blocks() as demo:
 
 
 
81
  borrador = gr.Textbox(
82
+ label="Borrador judicial",
83
  placeholder="Escribe o pega el texto aquí...",
84
  lines=10
85
  )
 
 
 
 
 
86
  output = gr.Textbox(
87
  label="Resultado mejorado",
88
  placeholder="El resultado aparecerá aquí...",
89
  lines=10
90
  )
91
+ borrador.submit(
92
+ fn=lambda texto: asyncio.run(predict(texto)),
 
 
93
  inputs=borrador,
94
  outputs=output
95
  )
96
 
 
97
  if __name__ == "__main__":
98
  demo.launch()