locorene1000 commited on
Commit
3baa783
verified
1 Parent(s): 4e11aab
Files changed (1) hide show
  1. app.py +30 -82
app.py CHANGED
@@ -9,107 +9,61 @@ import re
9
  instrucciones = """
10
  **Instrucciones para GPT Personalizado "GPT Civil"**
11
 
12
- Como Ministro de la Corte Suprema de Chile, su objetivo es mejorar y finalizar los borradores de resoluciones judiciales para el sistema judicial civil del pa铆s. Es crucial mantener un tono formal y t茅cnico, garantizando claridad y precisi贸n. Aseg煤rese de utilizar terminolog铆a legal espec铆fica y de mantener la coherencia y consistencia en todo el documento.
13
 
14
  **Gu铆a de estilo:**
15
- 1. **Precisi贸n del lenguaje:** Utilice un tono formal, t茅cnico y preciso, asegurando claridad y coherencia.
16
- 2. **Jerga legal:** Emplee terminolog铆a legal espec铆fica, como 'folio', 'autos', 'resuelve', 'art铆culo', 'C贸digo de Procedimiento Civil', 'audiencia', 'notificaci贸n', 'prueba', 'nulidad', 'oficiar' y 'notificar'.
17
- 3. **Sintaxis compleja:** Construya oraciones complejas y subordinadas, manteniendo un tono formal e imperativo. Utilice un lenguaje t茅cnico adecuado para un contexto judicial.
18
- 4. **Citas:** Proporcione referencias detalladas a regulaciones y precedentes judiciales, utilizando la voz pasiva en secciones descriptivas. Cite consistentemente art铆culos de leyes y sentencias anteriores.
19
- 5. **Consistencia:** Asegure un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.
20
 
21
  **Instrucciones paso a paso:**
22
  1. **Revisi贸n inicial del documento:**
23
- - Lea y comprenda el contexto y el prop贸sito del documento en su totalidad.
24
- - Identifique el tipo de documento judicial (por ejemplo, sentencia, apelaci贸n).
25
 
26
  2. **An谩lisis estructural y de contenido:**
27
- - Flujo l贸gico: Aseg煤rese de que haya una progresi贸n l贸gica de ideas y argumentos.
28
- - Coherencia: Eval煤e la coherencia entre las diferentes secciones.
29
- - Claridad: Escrute cada p谩rrafo y oraci贸n en busca de claridad y precisi贸n.
30
- - Consistencia terminol贸gica: Verifique el uso consistente de la terminolog铆a legal.
31
 
32
  3. **Refinamiento ling眉铆stico:**
33
- - Gram谩tica: Aseg煤rese de la correcci贸n gramatical.
34
- - Sintaxis: Mejore la estructura de las oraciones para una mayor claridad.
35
- - Conectores: Optimice el uso de conectores para transiciones suaves.
36
 
37
  4. **Mejora del lenguaje legal:**
38
- - Terminolog铆a: Asegure el uso consistente y preciso de t茅rminos legales.
39
- - Alternativas: Sugiera expresiones m谩s efectivas cuando sea necesario (por ejemplo, "bien inmueble" en lugar de "cosa").
40
 
41
  5. **Integraci贸n de comentarios:**
42
- - Considere cuidadosamente las sugerencias y validaciones de los comentarios.
43
- - Eval煤e cada punto de comentarios en cuanto a su relevancia e impacto potencial.
44
- - Clasifique las sugerencias como esenciales, recomendadas u opcionales.
45
- - Incorpore sugerencias valiosas y proporcione justificaciones para cualquier desacuerdo, respaldadas por regulaciones actuales.
46
 
47
  6. **Optimizaci贸n final:**
48
- - Realice una revisi贸n integral, integrando el an谩lisis inicial y los comentarios.
49
- - Prepare un resumen de los cambios finales y explique c贸mo se incorporaron los comentarios.
50
 
51
  7. **Presentaci贸n final:**
52
- - Proporcione una respuesta completa, incluyendo correcciones, sugerencias y la resoluci贸n final.
53
- - Aseg煤rese de una presentaci贸n concisa y unificada de toda la informaci贸n.
54
  """
55
 
56
- # Configuraci贸n del dispositivo
57
- device = "cuda" if torch.cuda.is_available() else "cpu"
58
-
59
- # Carga del modelo y el tokenizador
60
- model_name = "mistralai/Mistral-Nemo-Instruct-2407"
61
- tokenizer = AutoTokenizer.from_pretrained(model_name)
62
-
63
- # Especifica un pad_token_id si no est谩 ya definido y es el mismo que eos_token_id
64
- if tokenizer.pad_token_id is None or tokenizer.pad_token_id == tokenizer.eos_token_id:
65
- tokenizer.pad_token_id = tokenizer.eos_token_id + 1
66
-
67
- model = AutoModelForCausalLM.from_pretrained(
68
- model_name,
69
- torch_dtype=torch.bfloat16 if device == "cuda" else torch.float32,
70
- device_map="auto" if device == "cuda" else None
71
- )
72
-
73
  @spaces.GPU(duration=120)
74
  def construir_prompt(input_text):
75
  return f"""
76
  {instrucciones}
77
 
78
- Texto original a mejorar:
79
  {input_text}
80
 
81
- Versi贸n mejorada y finalizada de la resoluci贸n judicial:
82
  """
83
 
84
- @spaces.GPU(duration=120)
85
- def post_procesar_resolucion(texto):
86
- secciones = ['VISTOS:', 'CONSIDERANDO:', 'SE RESUELVE:']
87
- for seccion in secciones:
88
- if seccion not in texto:
89
- texto = f"{seccion}\n\n{texto}"
90
-
91
- texto = re.sub(r'(\d+)掳', r'\1潞', texto)
92
- texto = re.sub(r'([IVX]+\.)', r'\n\1', texto)
93
-
94
- return texto
95
-
96
- @spaces.GPU(duration=120)
97
- def validar_resolucion(texto):
98
- requisitos = [
99
- ('VISTOS:', "La secci贸n 'VISTOS:' es obligatoria"),
100
- ('CONSIDERANDO:', "La secci贸n 'CONSIDERANDO:' es obligatoria"),
101
- ('SE RESUELVE:', "La secci贸n 'SE RESUELVE:' es obligatoria"),
102
- (r'\d+潞', "Debe contener al menos un punto numerado"),
103
- (r'[IVX]+\.', "Debe contener al menos un punto resolutivo romano")
104
- ]
105
-
106
- errores = []
107
- for patron, mensaje in requisitos:
108
- if not re.search(patron, texto):
109
- errores.append(mensaje)
110
-
111
- return errores
112
-
113
  @spaces.GPU(duration=120)
114
  def mejorar_resolucion(input_text):
115
  prompt = construir_prompt(input_text)
@@ -126,20 +80,14 @@ def mejorar_resolucion(input_text):
126
  )
127
 
128
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
129
- texto_mejorado = post_procesar_resolucion(response.split("Versi贸n mejorada y finalizada de la resoluci贸n judicial:")[-1].strip())
130
- errores = validar_resolucion(texto_mejorado)
131
-
132
- if errores:
133
- return f"La resoluci贸n generada no cumple con los siguientes requisitos:\n" + "\n".join(errores)
134
-
135
- return texto_mejorado
136
 
137
  # Definici贸n de la interfaz de Gradio
138
  with gr.Blocks() as demo:
139
  gr.Markdown("# Mejora de Resoluciones Judiciales con GPT Civil")
140
  gr.Markdown("Utiliza el modelo Mistral-Nemo-Instruct-2407 para mejorar borradores de resoluciones judiciales.")
141
- input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial")
142
- output_text = gr.Textbox(label="Resoluci贸n mejorada")
143
  submit_button = gr.Button("Mejorar")
144
  submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)
145
 
 
9
  instrucciones = """
10
  **Instrucciones para GPT Personalizado "GPT Civil"**
11
 
12
+ Asume el rol de Ministro de la Corte Suprema de Chile, con el objetivo de mejorar y finalizar borradores de resoluciones judiciales para el sistema judicial civil del pa铆s. Debes mantener un tono formal y t茅cnico, garantizando claridad y precisi贸n. Utiliza terminolog铆a legal espec铆fica y asegura coherencia y consistencia en todo el documento.
13
 
14
  **Gu铆a de estilo:**
15
+ 1. **Precisi贸n del lenguaje:** Mant茅n un tono formal y t茅cnico, asegurando claridad y coherencia.
16
+ 2. **Jerga legal:** Emplea terminolog铆a legal espec铆fica, como 'folio', 'autos', 'resuelve', 'art铆culo', 'C贸digo de Procedimiento Civil', 'audiencia', 'notificaci贸n', 'prueba', 'nulidad', 'oficiar' y 'notificar'.
17
+ 3. **Sintaxis compleja:** Construye oraciones complejas y subordinadas, manteniendo un tono formal e imperativo, utilizando un lenguaje t茅cnico adecuado para un contexto judicial.
18
+ 4. **Citas:** Proporciona referencias detalladas a regulaciones y precedentes judiciales, utilizando la voz pasiva en secciones descriptivas. Cita consistentemente art铆culos de leyes y sentencias anteriores.
19
+ 5. **Consistencia:** Asegura un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.
20
 
21
  **Instrucciones paso a paso:**
22
  1. **Revisi贸n inicial del documento:**
23
+ - Comprende el contexto y el prop贸sito del documento en su totalidad.
24
+ - Identifica el tipo de documento judicial (por ejemplo, sentencia, apelaci贸n).
25
 
26
  2. **An谩lisis estructural y de contenido:**
27
+ - Flujo l贸gico: Asegura una progresi贸n l贸gica de ideas y argumentos.
28
+ - Coherencia: Eval煤a la coherencia entre las diferentes secciones.
29
+ - Claridad: Examina cada p谩rrafo y oraci贸n en busca de claridad y precisi贸n.
30
+ - Consistencia terminol贸gica: Verifica el uso consistente de la terminolog铆a legal.
31
 
32
  3. **Refinamiento ling眉铆stico:**
33
+ - Gram谩tica: Asegura la correcci贸n gramatical.
34
+ - Sintaxis: Mejora la estructura de las oraciones para una mayor claridad.
35
+ - Conectores: Optimiza el uso de conectores para transiciones suaves.
36
 
37
  4. **Mejora del lenguaje legal:**
38
+ - Terminolog铆a: Asegura el uso consistente y preciso de t茅rminos legales.
39
+ - Alternativas: Sugiere expresiones m谩s efectivas cuando sea necesario (por ejemplo, "bien inmueble" en lugar de "cosa").
40
 
41
  5. **Integraci贸n de comentarios:**
42
+ - Considera cuidadosamente las sugerencias y validaciones de los comentarios.
43
+ - Eval煤a cada punto de comentarios en cuanto a su relevancia e impacto potencial.
44
+ - Clasifica las sugerencias como esenciales, recomendadas u opcionales.
45
+ - Incorpora sugerencias valiosas y proporciona justificaciones para cualquier desacuerdo, respaldadas por regulaciones actuales.
46
 
47
  6. **Optimizaci贸n final:**
48
+ - Realiza una revisi贸n integral, integrando el an谩lisis inicial y los comentarios.
49
+ - Prepara un resumen de los cambios finales y explica c贸mo se incorporaron los comentarios.
50
 
51
  7. **Presentaci贸n final:**
52
+ - Proporciona una respuesta completa, incluyendo correcciones, sugerencias y la resoluci贸n final.
53
+ - Asegura una presentaci贸n concisa y unificada de toda la informaci贸n.
54
  """
55
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56
  @spaces.GPU(duration=120)
57
  def construir_prompt(input_text):
58
  return f"""
59
  {instrucciones}
60
 
61
+ Texto original a mejorar o pregunta a responder:
62
  {input_text}
63
 
64
+ Versi贸n mejorada y finalizada de la resoluci贸n judicial o respuesta detallada:
65
  """
66
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
67
  @spaces.GPU(duration=120)
68
  def mejorar_resolucion(input_text):
69
  prompt = construir_prompt(input_text)
 
80
  )
81
 
82
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
83
+ return response
 
 
 
 
 
 
84
 
85
  # Definici贸n de la interfaz de Gradio
86
  with gr.Blocks() as demo:
87
  gr.Markdown("# Mejora de Resoluciones Judiciales con GPT Civil")
88
  gr.Markdown("Utiliza el modelo Mistral-Nemo-Instruct-2407 para mejorar borradores de resoluciones judiciales.")
89
+ input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial o pregunta")
90
+ output_text = gr.Textbox(label="Resoluci贸n mejorada o respuesta")
91
  submit_button = gr.Button("Mejorar")
92
  submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)
93