locorene1000 commited on
Commit
9e29b9a
1 Parent(s): 14a64a1
Files changed (1) hide show
  1. app.py +30 -36
app.py CHANGED
@@ -5,80 +5,59 @@ from openai import OpenAI
5
  # Configuración del cliente OpenAI con la API de NVIDIA
6
  client = OpenAI(
7
  base_url="https://integrate.api.nvidia.com/v1",
8
- api_key="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"
9
  )
10
 
11
  # Instrucciones para el modelo
12
  instrucciones = """
13
  Eres un Ministro de la Corte Suprema de Chile, especializado en derecho civil. Tu tarea principal es mejorar borradores de resoluciones judiciales y responder preguntas generales sobre redacción judicial, asegurando un tono formal y técnico cuando sea necesario, y proporcionando respuestas claras y precisas. No debes modificar la estructura de la resolución judicial.
14
-
15
  ### Habilidades Principales:
16
  1. **Claridad y Coherencia**:
17
  - Utiliza un tono formal y técnico.
18
  - Proporciona respuestas claras y precisas.
19
-
20
  2. **Terminología Legal**:
21
  - Usa terminología legal específica, como 'folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil', 'audiencia', 'notificación', 'prueba', 'nulidad', 'oficiar' y 'notificar'.
22
-
23
  3. **Estructura Gramatical**:
24
  - Crea oraciones complejas y subordinadas, manteniendo un tono formal e imperativo.
25
-
26
  4. **Referencias y Precedentes**:
27
  - Proporciona referencias detalladas a regulaciones y precedentes judiciales, citando consistentemente artículos de leyes y sentencias anteriores.
28
-
29
  5. **Consistencia**:
30
  - Mantén un tono uniforme y detallado en todo el documento, centrado en la precisión terminológica.
31
-
32
  ### Directrices de Revisión:
33
  1. **Comprensión del Contexto y Propósito**:
34
  - Asegura la comprensión del contexto y propósito del documento.
35
-
36
  2. **Identificación del Tipo de Documento**:
37
  - Identifica correctamente el tipo de documento judicial (sentencia, apelación).
38
-
39
  3. **Progresión Lógica y Coherencia**:
40
  - Asegura una progresión lógica de ideas y coherencia entre secciones.
41
-
42
  4. **Claridad y Precisión**:
43
  - Evalúa la claridad y precisión en cada párrafo y oración.
44
-
45
  5. **Consistencia en Terminología Legal**:
46
  - Verifica el uso consistente de terminología legal.
47
-
48
  6. **Corrección Gramatical**:
49
  - Asegura la corrección gramatical y claridad en la estructura de las oraciones.
50
-
51
  7. **Uso Adecuado de Conectores**:
52
  - Usa conectores adecuados para transiciones suaves.
53
-
54
  8. **Precisión en Términos Legales**:
55
  - Proporciona precisión en términos legales y sugerencias de expresiones más efectivas.
56
-
57
  9. **Consideración de Sugerencias y Validaciones**:
58
  - Clasifica las sugerencias según su relevancia y ajusta el documento en consecuencia.
59
-
60
  10. **Revisión Integral**:
61
  - Realiza una revisión integral y presentación concisa y unificada de la información.
62
-
63
  ### Ejemplos de Buenas Prácticas:
64
  1. **Buena Práctica**:
65
  - "El tribunal determina que el demandante tiene derecho a una indemnización conforme al artículo 21 del Código Civil."
66
-
67
  2. **Mala Práctica**:
68
  - "El tribunal dice que el demandante debería recibir algún dinero."
69
-
70
  ### Prioridades:
71
  1. Enfócate en la claridad y precisión.
72
  2. Usa terminología legal específica.
73
  3. Mantén la consistencia en el tono y terminología.
74
  """
75
 
76
- terminologia_legal = ['folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil', 'audiencia', 'notificación', 'prueba', 'nulidad', 'oficiar', 'notificar']
77
 
78
  def construir_prompt(input_text, contexto=None, tarea=None):
79
- """
80
- Construye el prompt para el modelo LLaMA 3.1.
81
- """
82
  prompt = f"Texto o pregunta: {input_text}"
83
  if contexto:
84
  prompt += f"\nContexto: {contexto}"
@@ -86,7 +65,7 @@ def construir_prompt(input_text, contexto=None, tarea=None):
86
  prompt += f"\nTarea: {tarea}"
87
  return prompt
88
 
89
- def generar_respuesta(prompt):
90
  """
91
  Genera una respuesta del modelo LLaMA 3.1 dado un prompt específico.
92
  """
@@ -102,15 +81,18 @@ def generar_respuesta(prompt):
102
  temperature=0.7,
103
  top_p=0.9,
104
  max_tokens=2048,
105
- stream=True
106
  )
107
 
108
- response_content = ""
109
- for chunk in completion:
110
- if chunk.choices[0].delta.content is not None:
111
- response_content += chunk.choices[0].delta.content
 
 
 
 
112
 
113
- return response_content.strip()
114
  except Exception as e:
115
  return f"Error: {e}"
116
 
@@ -142,7 +124,7 @@ def mejorar_resolucion(input_text):
142
  prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
143
 
144
  # Generar la respuesta
145
- respuesta = generar_respuesta(prompt)
146
 
147
  # Validar la respuesta
148
  sugerencias = validar_respuesta(respuesta, contexto=input_text, tarea="resolucion_judicial")
@@ -154,16 +136,28 @@ def mejorar_resolucion(input_text):
154
 
155
  return respuesta
156
 
157
- # Interfaz Gradio
158
  def gradio_interface(input_text):
159
  return mejorar_resolucion(input_text)
160
 
 
161
  iface = gr.Interface(
162
  fn=gradio_interface,
163
- inputs="text",
164
- outputs="text",
165
  title="Mejora de Resoluciones Judiciales",
166
- description="Introduce una resolución judicial o una pregunta relacionada con derecho civil. El sistema mejorará el borrador o proporcionará una respuesta técnica y formal."
 
 
 
 
 
 
 
 
 
 
 
 
167
  )
168
 
169
- iface.launch(share=True)
 
5
  # Configuración del cliente OpenAI con la API de NVIDIA
6
  client = OpenAI(
7
  base_url="https://integrate.api.nvidia.com/v1",
8
+ api_key="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" # Reemplaza con tu API Key
9
  )
10
 
11
  # Instrucciones para el modelo
12
  instrucciones = """
13
  Eres un Ministro de la Corte Suprema de Chile, especializado en derecho civil. Tu tarea principal es mejorar borradores de resoluciones judiciales y responder preguntas generales sobre redacción judicial, asegurando un tono formal y técnico cuando sea necesario, y proporcionando respuestas claras y precisas. No debes modificar la estructura de la resolución judicial.
 
14
  ### Habilidades Principales:
15
  1. **Claridad y Coherencia**:
16
  - Utiliza un tono formal y técnico.
17
  - Proporciona respuestas claras y precisas.
 
18
  2. **Terminología Legal**:
19
  - Usa terminología legal específica, como 'folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil', 'audiencia', 'notificación', 'prueba', 'nulidad', 'oficiar' y 'notificar'.
 
20
  3. **Estructura Gramatical**:
21
  - Crea oraciones complejas y subordinadas, manteniendo un tono formal e imperativo.
 
22
  4. **Referencias y Precedentes**:
23
  - Proporciona referencias detalladas a regulaciones y precedentes judiciales, citando consistentemente artículos de leyes y sentencias anteriores.
 
24
  5. **Consistencia**:
25
  - Mantén un tono uniforme y detallado en todo el documento, centrado en la precisión terminológica.
 
26
  ### Directrices de Revisión:
27
  1. **Comprensión del Contexto y Propósito**:
28
  - Asegura la comprensión del contexto y propósito del documento.
 
29
  2. **Identificación del Tipo de Documento**:
30
  - Identifica correctamente el tipo de documento judicial (sentencia, apelación).
 
31
  3. **Progresión Lógica y Coherencia**:
32
  - Asegura una progresión lógica de ideas y coherencia entre secciones.
 
33
  4. **Claridad y Precisión**:
34
  - Evalúa la claridad y precisión en cada párrafo y oración.
 
35
  5. **Consistencia en Terminología Legal**:
36
  - Verifica el uso consistente de terminología legal.
 
37
  6. **Corrección Gramatical**:
38
  - Asegura la corrección gramatical y claridad en la estructura de las oraciones.
 
39
  7. **Uso Adecuado de Conectores**:
40
  - Usa conectores adecuados para transiciones suaves.
 
41
  8. **Precisión en Términos Legales**:
42
  - Proporciona precisión en términos legales y sugerencias de expresiones más efectivas.
 
43
  9. **Consideración de Sugerencias y Validaciones**:
44
  - Clasifica las sugerencias según su relevancia y ajusta el documento en consecuencia.
 
45
  10. **Revisión Integral**:
46
  - Realiza una revisión integral y presentación concisa y unificada de la información.
 
47
  ### Ejemplos de Buenas Prácticas:
48
  1. **Buena Práctica**:
49
  - "El tribunal determina que el demandante tiene derecho a una indemnización conforme al artículo 21 del Código Civil."
 
50
  2. **Mala Práctica**:
51
  - "El tribunal dice que el demandante debería recibir algún dinero."
 
52
  ### Prioridades:
53
  1. Enfócate en la claridad y precisión.
54
  2. Usa terminología legal específica.
55
  3. Mantén la consistencia en el tono y terminología.
56
  """
57
 
58
+ terminologia_legal = ['folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil', ...]
59
 
60
  def construir_prompt(input_text, contexto=None, tarea=None):
 
 
 
61
  prompt = f"Texto o pregunta: {input_text}"
62
  if contexto:
63
  prompt += f"\nContexto: {contexto}"
 
65
  prompt += f"\nTarea: {tarea}"
66
  return prompt
67
 
68
+ def generar_respuesta(prompt, stream=False):
69
  """
70
  Genera una respuesta del modelo LLaMA 3.1 dado un prompt específico.
71
  """
 
81
  temperature=0.7,
82
  top_p=0.9,
83
  max_tokens=2048,
84
+ stream=False
85
  )
86
 
87
+ if stream:
88
+ response_content = ""
89
+ for chunk in completion:
90
+ if chunk.choices[0].delta.content is not None:
91
+ response_content += chunk.choices[0].delta.content
92
+ return response_content.strip()
93
+ else:
94
+ return completion.choices[0].message['content'].strip()
95
 
 
96
  except Exception as e:
97
  return f"Error: {e}"
98
 
 
124
  prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
125
 
126
  # Generar la respuesta
127
+ respuesta = generar_respuesta(prompt, stream=False) # Se usa stream=False para simplificar
128
 
129
  # Validar la respuesta
130
  sugerencias = validar_respuesta(respuesta, contexto=input_text, tarea="resolucion_judicial")
 
136
 
137
  return respuesta
138
 
 
139
  def gradio_interface(input_text):
140
  return mejorar_resolucion(input_text)
141
 
142
+ # Mejoras en la interfaz de Gradio
143
  iface = gr.Interface(
144
  fn=gradio_interface,
145
+ inputs=gr.inputs.Textbox(lines=10, placeholder="Introduce aquí la resolución judicial o la pregunta...", label="Texto o Pregunta"),
146
+ outputs=gr.outputs.Textbox(label="Respuesta Mejorada"),
147
  title="Mejora de Resoluciones Judiciales",
148
+ description=(
149
+ "Este sistema está diseñado para ayudar en la mejora de borradores de resoluciones judiciales o para "
150
+ "responder preguntas sobre derecho civil con un enfoque técnico y formal. Introduce un texto para recibir "
151
+ "una respuesta optimizada."
152
+ ),
153
+ allow_flagging=False, # Desactiva el flagging si no es necesario
154
+ theme="huggingface", # Usa un tema moderno para mejor apariencia
155
+ live=False, # No es necesario actualizar en tiempo real
156
+ layout="vertical", # Layout vertical para claridad
157
+ examples=[
158
+ ["El tribunal dicta que..."],
159
+ ["¿Qué dice el artículo 21 del Código Civil sobre...?"]
160
+ ]
161
  )
162
 
163
+ iface.launch() # Se eliminó share=True para compatibilidad con Hugging Face Spaces