locorene1000 commited on
Commit
c348098
verified
1 Parent(s): ee299f2
Files changed (1) hide show
  1. app.py +18 -57
app.py CHANGED
@@ -8,48 +8,7 @@ import spaces
8
  instrucciones = """
9
  **Instrucciones para GPT Personalizado "GPT Civil"**
10
 
11
- 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.
12
-
13
- **Gu铆a de estilo:**
14
- 1. **Precisi贸n del lenguaje:** Utilice un tono formal, t茅cnico y preciso, asegurando claridad y coherencia.
15
- 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'.
16
- 3. **Sintaxis compleja:** Construya oraciones complejas y subordinadas, manteniendo un tono formal e imperativo. Utilice un lenguaje t茅cnico adecuado para un contexto judicial.
17
- 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.
18
- 5. **Consistencia:** Asegure un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.
19
-
20
- **Instrucciones paso a paso:**
21
- 1. **Revisi贸n inicial del documento:**
22
- - Lea y comprenda el contexto y el prop贸sito del documento en su totalidad.
23
- - Identifique el tipo de documento judicial (por ejemplo, sentencia, apelaci贸n).
24
-
25
- 2. **An谩lisis estructural y de contenido:**
26
- - Flujo l贸gico: Aseg煤rese de que haya una progresi贸n l贸gica de ideas y argumentos.
27
- - Coherencia: Eval煤e la coherencia entre las diferentes secciones.
28
- - Claridad: Escrute cada p谩rrafo y oraci贸n en busca de claridad y precisi贸n.
29
- - Consistencia terminol贸gica: Verifique el uso consistente de la terminolog铆a legal.
30
-
31
- 3. **Refinamiento ling眉铆stico:**
32
- - Gram谩tica: Aseg煤rese de la correcci贸n gramatical.
33
- - Sintaxis: Mejore la estructura de las oraciones para una mayor claridad.
34
- - Conectores: Optimice el uso de conectores para transiciones suaves.
35
-
36
- 4. **Mejora del lenguaje legal:**
37
- - Terminolog铆a: Asegure el uso consistente y preciso de t茅rminos legales.
38
- - Alternativas: Sugiera expresiones m谩s efectivas cuando sea necesario (por ejemplo, "bien inmueble" en lugar de "cosa").
39
-
40
- 5. **Integraci贸n de comentarios:**
41
- - Considere cuidadosamente las sugerencias y validaciones de los comentarios.
42
- - Eval煤e cada punto de comentarios en cuanto a su relevancia e impacto potencial.
43
- - Clasifique las sugerencias como esenciales, recomendadas u opcionales.
44
- - Incorpore sugerencias valiosas y proporcione justificaciones para cualquier desacuerdo, respaldadas por regulaciones actuales.
45
-
46
- 6. **Optimizaci贸n final:**
47
- - Realice una revisi贸n integral, integrando el an谩lisis inicial y los comentarios.
48
- - Prepare un resumen de los cambios finales y explique c贸mo se incorporaron los comentarios.
49
-
50
- 7. **Presentaci贸n final:**
51
- - Proporcione una respuesta completa, incluyendo correcciones, sugerencias y la resoluci贸n final.
52
- - Aseg煤rese de una presentaci贸n concisa y unificada de toda la informaci贸n.
53
  """
54
 
55
  # Configuraci贸n del dispositivo
@@ -59,9 +18,9 @@ device = "cuda" if torch.cuda.is_available() else "cpu"
59
  model_name = "mistralai/Mistral-Nemo-Instruct-2407"
60
  tokenizer = AutoTokenizer.from_pretrained(model_name)
61
 
62
- # Asegurar pad_token_id 煤nico
63
  if tokenizer.pad_token_id is None or tokenizer.pad_token_id == tokenizer.eos_token_id:
64
- tokenizer.pad_token_id = tokenizer.eos_token_id + 1
65
 
66
  model = AutoModelForCausalLM.from_pretrained(
67
  model_name,
@@ -69,30 +28,32 @@ model = AutoModelForCausalLM.from_pretrained(
69
  device_map="auto" if device == "cuda" else None
70
  )
71
 
 
72
  def mejorar_resolucion(input_text):
73
  # Construcci贸n del prompt con instrucciones y entrada del usuario
74
  prompt = f"{instrucciones}\n\n{input_text}"
75
- inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True).to(device)
76
  attention_mask = inputs['attention_mask']
 
77
  outputs = model.generate(
78
- inputs.input_ids,
79
- attention_mask=attention_mask,
80
- max_new_tokens=500,
81
- temperature=0.3,
82
  do_sample=True,
83
  pad_token_id=tokenizer.pad_token_id
84
  )
85
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
86
  return response
87
 
88
- # Configuraci贸n de la interfaz de Gradio
89
- demo = gr.Interface(
90
- fn=mejorar_resolucion,
91
- inputs=gr.Textbox(label="Introduce tu resoluci贸n judicial"),
92
- outputs=gr.Textbox(label="Resoluci贸n mejorada"),
93
- title="Mejora de Resoluciones Judiciales con GPT Civil",
94
- description="Utiliza el modelo Mistral-Nemo-Instruct-2407 para mejorar borradores de resoluciones judiciales."
95
- )
96
 
97
  # Lanzamiento de la aplicaci贸n
98
  demo.launch()
 
8
  instrucciones = """
9
  **Instrucciones para GPT Personalizado "GPT Civil"**
10
 
11
+ ... (detalles de las instrucciones) ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
12
  """
13
 
14
  # Configuraci贸n del dispositivo
 
18
  model_name = "mistralai/Mistral-Nemo-Instruct-2407"
19
  tokenizer = AutoTokenizer.from_pretrained(model_name)
20
 
21
+ # Especifica un pad_token_id si no est谩 ya definido y es el mismo que eos_token_id
22
  if tokenizer.pad_token_id is None or tokenizer.pad_token_id == tokenizer.eos_token_id:
23
+ tokenizer.pad_token_id = tokenizer.eos_token_id + 1 # O cualquier otro valor que consideres adecuado
24
 
25
  model = AutoModelForCausalLM.from_pretrained(
26
  model_name,
 
28
  device_map="auto" if device == "cuda" else None
29
  )
30
 
31
+ @spaces.GPU(duration=120)
32
  def mejorar_resolucion(input_text):
33
  # Construcci贸n del prompt con instrucciones y entrada del usuario
34
  prompt = f"{instrucciones}\n\n{input_text}"
35
+ inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True, max_length=512).to(device)
36
  attention_mask = inputs['attention_mask']
37
+
38
  outputs = model.generate(
39
+ inputs.input_ids,
40
+ attention_mask=attention_mask,
41
+ max_new_tokens=500,
42
+ temperature=0.3,
43
  do_sample=True,
44
  pad_token_id=tokenizer.pad_token_id
45
  )
46
  response = tokenizer.decode(outputs[0], skip_special_tokens=True)
47
  return response
48
 
49
+ # Definici贸n de la interfaz de Gradio
50
+ with gr.Blocks() as demo:
51
+ gr.Markdown("# Mejora de Resoluciones Judiciales con GPT Civil")
52
+ gr.Markdown("Utiliza el modelo Mistral-Nemo-Instruct-2407 para mejorar borradores de resoluciones judiciales.")
53
+ input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial")
54
+ output_text = gr.Textbox(label="Resoluci贸n mejorada")
55
+ submit_button = gr.Button("Mejorar")
56
+ submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)
57
 
58
  # Lanzamiento de la aplicaci贸n
59
  demo.launch()