File size: 4,768 Bytes
6579161
 
 
e3d9417
6579161
 
e3d9417
6579161
 
 
 
 
e3d9417
6579161
 
 
 
 
 
e3d9417
6579161
 
 
 
e3d9417
6579161
 
 
 
 
e3d9417
6579161
 
 
 
e3d9417
6579161
 
 
e3d9417
6579161
 
 
 
 
e3d9417
6579161
 
 
e3d9417
6579161
 
 
e3d9417
6579161
 
 
 
 
 
 
 
 
 
e3d9417
6579161
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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()