File size: 4,768 Bytes
884a832
 
840ce5d
6d9deea
41ceafd
ac8a2b6
6d9deea
28f1aa2
 
09fe985
1c3956c
3baa783
f349076
 
3baa783
 
 
 
 
f349076
 
 
3baa783
 
f349076
 
3baa783
 
 
 
f349076
 
3baa783
 
 
f349076
 
3baa783
 
f349076
 
3baa783
 
 
 
f349076
 
3baa783
 
f349076
 
3baa783
 
09fe985
6d9deea
4e11aab
ac8a2b6
 
 
 
3baa783
ac8a2b6
 
3baa783
ac8a2b6
 
4e11aab
ac8a2b6
 
 
 
ee299f2
840ce5d
ac8a2b6
 
 
ee299f2
ac8a2b6
ee299f2
 
ac8a2b6
884a832
3baa783
28f1aa2
c348098
 
 
 
3baa783
 
c348098
 
28f1aa2
 
884a832
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import os
import torch
from transformers import pipeline, AutoTokenizer, AutoModelForCausalLM
import gradio as gr
import spaces
import re

# Instrucciones espec铆ficas para el modelo
instrucciones = """
**Instrucciones para GPT Personalizado "GPT Civil"**

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.

**Gu铆a de estilo:**
1. **Precisi贸n del lenguaje:** Mant茅n un tono formal y t茅cnico, asegurando claridad y coherencia.
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'.
3. **Sintaxis compleja:** Construye oraciones complejas y subordinadas, manteniendo un tono formal e imperativo, utilizando un lenguaje t茅cnico adecuado para un contexto judicial.
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.
5. **Consistencia:** Asegura un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.

**Instrucciones paso a paso:**
1. **Revisi贸n inicial del documento:**
   - Comprende el contexto y el prop贸sito del documento en su totalidad.
   - Identifica el tipo de documento judicial (por ejemplo, sentencia, apelaci贸n).

2. **An谩lisis estructural y de contenido:**
   - Flujo l贸gico: Asegura una progresi贸n l贸gica de ideas y argumentos.
   - Coherencia: Eval煤a la coherencia entre las diferentes secciones.
   - Claridad: Examina cada p谩rrafo y oraci贸n en busca de claridad y precisi贸n.
   - Consistencia terminol贸gica: Verifica el uso consistente de la terminolog铆a legal.

3. **Refinamiento ling眉铆stico:**
   - Gram谩tica: Asegura la correcci贸n gramatical.
   - Sintaxis: Mejora la estructura de las oraciones para una mayor claridad.
   - Conectores: Optimiza el uso de conectores para transiciones suaves.

4. **Mejora del lenguaje legal:**
   - Terminolog铆a: Asegura el uso consistente y preciso de t茅rminos legales.
   - Alternativas: Sugiere expresiones m谩s efectivas cuando sea necesario (por ejemplo, "bien inmueble" en lugar de "cosa").

5. **Integraci贸n de comentarios:**
   - Considera cuidadosamente las sugerencias y validaciones de los comentarios.
   - Eval煤a cada punto de comentarios en cuanto a su relevancia e impacto potencial.
   - Clasifica las sugerencias como esenciales, recomendadas u opcionales.
   - Incorpora sugerencias valiosas y proporciona justificaciones para cualquier desacuerdo, respaldadas por regulaciones actuales.

6. **Optimizaci贸n final:**
   - Realiza una revisi贸n integral, integrando el an谩lisis inicial y los comentarios.
   - Prepara un resumen de los cambios finales y explica c贸mo se incorporaron los comentarios.

7. **Presentaci贸n final:**
   - Proporciona una respuesta completa, incluyendo correcciones, sugerencias y la resoluci贸n final.
   - Asegura una presentaci贸n concisa y unificada de toda la informaci贸n.
"""

@spaces.GPU(duration=120)
def construir_prompt(input_text):
    return f"""
{instrucciones}

Texto original a mejorar o pregunta a responder:
{input_text}

Versi贸n mejorada y finalizada de la resoluci贸n judicial o respuesta detallada:
"""

@spaces.GPU(duration=120)
def mejorar_resolucion(input_text):
    prompt = construir_prompt(input_text)
    inputs = tokenizer(prompt, return_tensors="pt", padding=True, truncation=True, max_length=1024).to(device)
    
    outputs = model.generate(
        inputs.input_ids,
        attention_mask=inputs['attention_mask'],
        max_new_tokens=512,
        temperature=0.7,
        do_sample=True,
        num_return_sequences=1,
        pad_token_id=tokenizer.pad_token_id
    )
    
    response = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return response

# Definici贸n de la interfaz de Gradio
with gr.Blocks() as demo:
    gr.Markdown("# Mejora de Resoluciones Judiciales con GPT Civil")
    gr.Markdown("Utiliza el modelo Mistral-Nemo-Instruct-2407 para mejorar borradores de resoluciones judiciales.")
    input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial o pregunta")
    output_text = gr.Textbox(label="Resoluci贸n mejorada o respuesta")
    submit_button = gr.Button("Mejorar")
    submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)

# Lanzamiento de la aplicaci贸n
demo.launch()