locorene1000 commited on
Commit
32e8213
verified
1 Parent(s): 22c26c5
Files changed (1) hide show
  1. app.py +45 -61
app.py CHANGED
@@ -1,82 +1,66 @@
1
  import gradio as gr
2
- from transformers import pipeline
3
  import torch
 
 
4
  import spaces
5
- import time
6
 
7
- # Funci贸n para verificar y esperar una GPU
8
  def wait_for_gpu():
9
  while not torch.cuda.is_available():
10
  print("Esperando por una GPU...")
11
- time.sleep(10) # Espera 10 segundos antes de volver a verificar
12
  print("GPU encontrada, continuando con la configuraci贸n.")
13
 
14
- # Espera hasta que una GPU est茅 disponible
15
  wait_for_gpu()
16
 
17
- # Configuraci贸n del pipeline con el modelo Meta-Llama usando GPU y FP16
18
- pipe = pipeline(
19
- "text-generation",
20
- model="meta-llama/Meta-Llama-3.1-70B-Instruct",
21
- device=0,
22
- torch_dtype=torch.float16,
23
- low_cpu_mem_usage=True # Para reducir el uso de memoria en CPU
24
- )
 
 
 
 
 
 
 
 
 
 
 
25
 
26
- # Instrucciones para mejorar resoluciones judiciales
 
 
 
27
  instructions = """
28
  **Instrucciones para GPT Personalizado "GPT Civil"**
29
 
30
- 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.
31
-
32
- **Gu铆a de estilo:**
33
- 1. **Precisi贸n del lenguaje:** Utilice un tono formal, t茅cnico y preciso, asegurando claridad y coherencia.
34
- 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'.
35
- 3. **Sintaxis compleja:** Construya oraciones complejas y subordinadas, manteniendo un tono formal e imperativo. Utilice un lenguaje t茅cnico adecuado para un contexto judicial.
36
- 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.
37
- 5. **Consistencia:** Asegure un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.
38
-
39
- **Instrucciones paso a paso:**
40
- 1. **Revisi贸n inicial del documento:**
41
- - Lea y comprenda el contexto y el prop贸sito del documento en su totalidad.
42
- - Identifique el tipo de documento judicial (por ejemplo, sentencia, apelaci贸n).
43
-
44
- 2. **An谩lisis estructural y de contenido:**
45
- - Flujo l贸gico: Aseg煤rese de que haya una progresi贸n l贸gica de ideas y argumentos.
46
- - Coherencia: Eval煤e la coherencia entre las diferentes secciones.
47
- - Claridad: Escrute cada p谩rrafo y oraci贸n en busca de claridad y precisi贸n.
48
- - Consistencia terminol贸gica: Verifique el uso consistente de la terminolog铆a legal.
49
-
50
- 3. **Refinamiento ling眉铆stico:**
51
- - Gram谩tica: Aseg煤rese de la correcci贸n gramatical.
52
- - Sintaxis: Mejore la estructura de las oraciones para una mayor claridad.
53
- - Conectores: Optimice el uso de conectores para transiciones suaves.
54
-
55
- 4. **Mejora del lenguaje legal:**
56
- - Terminolog铆a: Asegure el uso consistente y preciso de t茅rminos legales.
57
- - Alternativas: Sugiera expresiones m谩s efectivas cuando sea necesario (por ejemplo, "bien inmueble" en lugar de "cosa").
58
-
59
- 5. **Integraci贸n de comentarios:**
60
- - Considere cuidadosamente las sugerencias y validaciones de los comentarios.
61
- - Eval煤e cada punto de comentarios en cuanto a su relevancia e impacto potencial.
62
- - Clasifique las sugerencias como esenciales, recomendadas u opcionales.
63
- - Incorpore sugerencias valiosas y proporcione justificaciones para cualquier desacuerdo, respaldadas por regulaciones actuales.
64
-
65
- 6. **Optimizaci贸n final:**
66
- - Realice una revisi贸n integral, integrando el an谩lisis inicial y los comentarios.
67
- - Prepare un resumen de los cambios finales y explique c贸mo se incorporaron los comentarios.
68
-
69
- 7. **Presentaci贸n final:**
70
- - Proporcione una respuesta completa, incluyendo correcciones, sugerencias y la resoluci贸n final.
71
- - Aseg煤rese de una presentaci贸n concisa y unificada de toda la informaci贸n.
72
  """
73
- @spaces.GPU(duration=120) # Ajusta la duraci贸n seg煤n el tiempo estimado de la tarea
 
74
  def mejorar_resolucion(message, history=None):
75
- prompt = f"Analiza profundamente y aplica estas {instructions}\n\n y luego mejora esta resoluci贸n judicial {message}"
76
- response = pipe(prompt, max_new_tokens=1000, return_full_text=False, clean_up_tokenization_spaces=True)
77
- return response[0]["generated_text"]
 
 
 
 
 
 
 
 
 
 
 
78
 
79
- # Configuraci贸n de la interfaz de Gradio
80
  with gr.Blocks() as demo:
81
  chatbot = gr.ChatInterface(fn=mejorar_resolucion, title="Mejora de Resoluciones Judiciales")
82
  demo.launch()
 
1
  import gradio as gr
 
2
  import torch
3
+ from awq import AutoAWQForCausalLM
4
+ from transformers import AutoTokenizer, AwqConfig
5
  import spaces
 
6
 
7
+ # Esperar a que una GPU est茅 disponible
8
  def wait_for_gpu():
9
  while not torch.cuda.is_available():
10
  print("Esperando por una GPU...")
11
+ time.sleep(10)
12
  print("GPU encontrada, continuando con la configuraci贸n.")
13
 
 
14
  wait_for_gpu()
15
 
16
+ # Configuraci贸n del modelo y tokenizador usando AutoAWQ
17
+ @spaces.GPU(duration=120) # Asegura la asignaci贸n de GPU durante la carga del modelo
18
+ def cargar_modelo():
19
+ model_id = "hugging-quants/Meta-Llama-3.1-70B-Instruct-AWQ-INT4"
20
+ quantization_config = AwqConfig(
21
+ bits=4,
22
+ fuse_max_seq_len=512,
23
+ do_fuse=True,
24
+ )
25
+
26
+ tokenizer = AutoTokenizer.from_pretrained(model_id)
27
+ model = AutoAWQForCausalLM.from_pretrained(
28
+ model_id,
29
+ torch_dtype=torch.float16,
30
+ low_cpu_mem_usage=True,
31
+ device_map="auto", # Distribuir autom谩ticamente en las GPUs disponibles
32
+ quantization_config=quantization_config
33
+ )
34
+ return model, tokenizer
35
 
36
+ # Cargar el modelo y el tokenizador
37
+ model, tokenizer = cargar_modelo()
38
+
39
+ # Instrucciones para la mejora de resoluciones judiciales
40
  instructions = """
41
  **Instrucciones para GPT Personalizado "GPT Civil"**
42
 
43
+ 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...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
44
  """
45
+
46
+ @spaces.GPU(duration=120)
47
  def mejorar_resolucion(message, history=None):
48
+ prompt = [
49
+ {"role": "system", "content": instructions},
50
+ {"role": "user", "content": f"Mejora esta resoluci贸n judicial: {message}"}
51
+ ]
52
+ inputs = tokenizer.apply_chat_template(
53
+ prompt,
54
+ tokenize=True,
55
+ add_generation_prompt=True,
56
+ return_tensors="pt",
57
+ return_dict=True,
58
+ ).to("cuda")
59
+
60
+ outputs = model.generate(**inputs, do_sample=True, max_new_tokens=500)
61
+ return tokenizer.batch_decode(outputs[:, inputs['input_ids'].shape[1]:], skip_special_tokens=True)[0]
62
 
63
+ # Interfaz de usuario con Gradio
64
  with gr.Blocks() as demo:
65
  chatbot = gr.ChatInterface(fn=mejorar_resolucion, title="Mejora de Resoluciones Judiciales")
66
  demo.launch()