locorene1000 commited on
Commit
28f1aa2
1 Parent(s): c59c044
Files changed (2) hide show
  1. app.py +74 -47
  2. requirements.txt +0 -1
app.py CHANGED
@@ -1,56 +1,83 @@
1
  import gradio as gr
2
  import torch
3
- from transformers import AutoModelForCausalLM, AutoTokenizer
4
  import spaces
5
 
6
- class Modelo:
7
- def __init__(self):
8
- self.model_id = "mistralai/Mistral-Nemo-Instruct-2407"
9
- self.tokenizer = None
10
- self.model = None
11
- self.instrucciones = """
 
 
 
 
 
 
 
 
 
12
  **Instrucciones para GPT Personalizado "GPT Civil"**
13
 
14
- 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...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
15
  """
16
-
17
- @spaces.GPU(duration=120)
18
- def cargar_modelo_y_tokenizador(self):
19
- if not torch.cuda.is_available():
20
- raise Exception("No hay GPU disponible")
21
-
22
- self.tokenizer = AutoTokenizer.from_pretrained(self.model_id)
23
-
24
- self.model = AutoModelForCausalLM.from_pretrained(
25
- self.model_id,
26
- torch_dtype=torch.bfloat16, # Utiliza BF16 para ahorrar memoria
27
- device_map="auto", # Asigna autom谩ticamente en funci贸n de los recursos disponibles
28
- low_cpu_mem_usage=True
29
- )
30
- self.model.to("cuda") # Mover expl铆citamente el modelo a la GPU si es posible
31
-
32
- @spaces.GPU(duration=120)
33
- def mejorar_resolucion(self, message, history=None):
34
- if self.model is None or self.tokenizer is None:
35
- self.cargar_modelo_y_tokenizador()
36
-
37
- prompt = [
38
- {"role": "system", "content": self.instrucciones},
39
- {"role": "user", "content": f"Mejora esta resoluci贸n judicial: {message}"}
40
- ]
41
- inputs = self.tokenizer.apply_chat_template(
42
- prompt,
43
- tokenize=True,
44
- add_generation_prompt=True,
45
- return_tensors="pt",
46
- return_dict=True,
47
- ).to("cuda") # Asegura que los tensores se procesen en GPU
48
-
49
- outputs = self.model.generate(**inputs, do_sample=True, max_new_tokens=500)
50
- return self.tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0]
51
-
52
- modelo = Modelo()
53
 
 
 
 
 
 
 
 
54
  with gr.Blocks() as demo:
55
- chatbot = gr.ChatInterface(fn=modelo.mejorar_resolucion, title="Mejora de Resoluciones Judiciales")
56
- demo.launch()
 
 
 
 
 
 
 
 
1
  import gradio as gr
2
  import torch
3
+ from transformers import pipeline
4
  import spaces
5
 
6
+ @spaces.GPU(duration=120) # Solicita el uso de GPU por 120 segundos
7
+ def initialize_pipeline():
8
+ # Asegurando que se utilice la GPU
9
+ device = 0 if torch.cuda.is_available() else -1
10
+
11
+ # Configuraci贸n del pipeline con el modelo y dispositivo
12
+ model_name = "mistralai/Mistral-Nemo-Instruct-2407"
13
+ chatbot = pipeline("text-generation", model=model_name, device=device)
14
+ return chatbot
15
+
16
+ # Inicializar el pipeline una vez se haya asignado la GPU
17
+ chatbot = initialize_pipeline()
18
+
19
+ # Instrucciones espec铆ficas para el modelo
20
+ instrucciones = """
21
  **Instrucciones para GPT Personalizado "GPT Civil"**
22
 
23
+ 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.
24
+
25
+ **Gu铆a de estilo:**
26
+ 1. **Precisi贸n del lenguaje:** Utilice un tono formal, t茅cnico y preciso, asegurando claridad y coherencia.
27
+ 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'.
28
+ 3. **Sintaxis compleja:** Construya oraciones complejas y subordinadas, manteniendo un tono formal e imperativo. Utilice un lenguaje t茅cnico adecuado para un contexto judicial.
29
+ 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.
30
+ 5. **Consistencia:** Asegure un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.
31
+
32
+ **Instrucciones paso a paso:**
33
+ 1. **Revisi贸n inicial del documento:**
34
+ - Lea y comprenda el contexto y el prop贸sito del documento en su totalidad.
35
+ - Identifique el tipo de documento judicial (por ejemplo, sentencia, apelaci贸n).
36
+
37
+ 2. **An谩lisis estructural y de contenido:**
38
+ - Flujo l贸gico: Aseg煤rese de que haya una progresi贸n l贸gica de ideas y argumentos.
39
+ - Coherencia: Eval煤e la coherencia entre las diferentes secciones.
40
+ - Claridad: Escrute cada p谩rrafo y oraci贸n en busca de claridad y precisi贸n.
41
+ - Consistencia terminol贸gica: Verifique el uso consistente de la terminolog铆a legal.
42
+
43
+ 3. **Refinamiento ling眉铆stico:**
44
+ - Gram谩tica: Aseg煤rese de la correcci贸n gramatical.
45
+ - Sintaxis: Mejore la estructura de las oraciones para una mayor claridad.
46
+ - Conectores: Optimice el uso de conectores para transiciones suaves.
47
+
48
+ 4. **Mejora del lenguaje legal:**
49
+ - Terminolog铆a: Asegure el uso consistente y preciso de t茅rminos legales.
50
+ - Alternativas: Sugiera expresiones m谩s efectivas cuando sea necesario (por ejemplo, "bien inmueble" en lugar de "cosa").
51
+
52
+ 5. **Integraci贸n de comentarios:**
53
+ - Considere cuidadosamente las sugerencias y validaciones de los comentarios.
54
+ - Eval煤e cada punto de comentarios en cuanto a su relevancia e impacto potencial.
55
+ - Clasifique las sugerencias como esenciales, recomendadas u opcionales.
56
+ - Incorpore sugerencias valiosas y proporcione justificaciones para cualquier desacuerdo, respaldadas por regulaciones actuales.
57
+
58
+ 6. **Optimizaci贸n final:**
59
+ - Realice una revisi贸n integral, integrando el an谩lisis inicial y los comentarios.
60
+ - Prepare un resumen de los cambios finales y explique c贸mo se incorporaron los comentarios.
61
+
62
+ 7. **Presentaci贸n final:**
63
+ - Proporcione una respuesta completa, incluyendo correcciones, sugerencias y la resoluci贸n final.
64
+ - Aseg煤rese de una presentaci贸n concisa y unificada de toda la informaci贸n.
65
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
66
 
67
+ def mejorar_resolucion(input_text):
68
+ # Construcci贸n del prompt con instrucciones y entrada del usuario
69
+ prompt = f"{instrucciones}\n\n{input_text}"
70
+ response = chatbot(prompt, max_new_tokens=500, temperature=0.3)
71
+ return response[0]['generated_text']
72
+
73
+ # Definici贸n de la interfaz de Gradio
74
  with gr.Blocks() as demo:
75
+ gr.Markdown("# Mejora de Resoluciones Judiciales con GPT Civil")
76
+ gr.Markdown("Utiliza el modelo Mistral-Nemo-Instruct-2407 para mejorar borradores de resoluciones judiciales.")
77
+ input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial")
78
+ output_text = gr.Textbox(label="Resoluci贸n mejorada")
79
+ submit_button = gr.Button("Mejorar")
80
+ submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)
81
+
82
+ # Lanzamiento de la aplicaci贸n
83
+ demo.launch()
requirements.txt CHANGED
@@ -3,5 +3,4 @@ huggingface_hub
3
  gradio
4
  torch
5
  numpy<2
6
- autoawq
7
  accelerate
 
3
  gradio
4
  torch
5
  numpy<2
 
6
  accelerate