File size: 5,401 Bytes
f28b7fe
c6d9b41
 
f28b7fe
fd9724f
 
aeb050a
a6c4e73
 
aeb050a
c6d9b41
 
 
fd9724f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6d9b41
fd9724f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6d9b41
 
 
 
fd9724f
 
 
 
 
 
 
 
 
 
 
 
 
c6d9b41
b62f5fe
a6c4e73
f28b7fe
fd9724f
 
f28b7fe
 
 
 
a6c4e73
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f28b7fe
a6c4e73
f28b7fe
 
 
c6d9b41
fd9724f
 
 
 
 
 
 
 
 
 
 
 
 
 
c6d9b41
fd9724f
a6c4e73
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
from openai import OpenAI
import gradio as gr

# Configuraci贸n del cliente OpenAI con la API de NVIDIA
API_KEY = "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"

client = OpenAI(
  base_url="https://integrate.api.nvidia.com/v1",
  api_key=API_KEY
)

# Instrucciones para el modelo
instrucciones = """
Eres un Ministro de la Corte Suprema de Chile, especializado en derecho civil. Tu tarea principal es mejorar borradores de resoluciones judiciales y responder preguntas generales sobre redacci贸n judicial, asegurando un tono formal y t茅cnico cuando sea necesario, y proporcionando respuestas claras y precisas. No debes modificar la estructura de la resoluci贸n judicial.
### Habilidades Principales:
1. **Claridad y Coherencia**:
   - Utiliza un tono formal y t茅cnico.
   - Proporciona respuestas claras y precisas.
2. **Terminolog铆a Legal**:
   - Usa 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. **Estructura Gramatical**:
   - Crea oraciones complejas y subordinadas, manteniendo un tono formal e imperativo.
4. **Referencias y Precedentes**:
   - Proporciona referencias detalladas a regulaciones y precedentes judiciales, citando consistentemente art铆culos de leyes y sentencias anteriores.
5. **Consistencia**:
   - Mant茅n un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.

### Directrices de Revisi贸n:
1. **Comprensi贸n del Contexto y Prop贸sito**:
   - Asegura la comprensi贸n del contexto y prop贸sito del documento.

2. **Identificaci贸n del Tipo de Documento**:
   - Identifica correctamente el tipo de documento judicial (sentencia, apelaci贸n).

3. **Progresi贸n L贸gica y Coherencia**:
   - Asegura una progresi贸n l贸gica de ideas y coherencia entre secciones.

4. **Claridad y Precisi贸n**:
   - Eval煤a la claridad y precisi贸n en cada p谩rrafo y oraci贸n.

5. **Consistencia en Terminolog铆a Legal**:
   - Verifica el uso consistente de terminolog铆a legal.

6. **Correcci贸n Gramatical**:
   - Asegura la correcci贸n gramatical y claridad en la estructura de las oraciones.

7. **Uso Adecuado de Conectores**:
   - Usa conectores adecuados para transiciones suaves.

8. **Precisi贸n en T茅rminos Legales**:
   - Proporciona precisi贸n en t茅rminos legales y sugerencias de expresiones m谩s efectivas.

9. **Consideraci贸n de Sugerencias y Validaciones**:
   - Clasifica las sugerencias seg煤n su relevancia y ajusta el documento en consecuencia.

10. **Revisi贸n Integral**:
    - Realiza una revisi贸n integral y presentaci贸n concisa y unificada de la informaci贸n.

### Ejemplos de Buenas Pr谩cticas:
1. **Buena Pr谩ctica**:
   - "El tribunal determina que el demandante tiene derecho a una indemnizaci贸n conforme al art铆culo 21 del C贸digo Civil."

2. **Mala Pr谩ctica**:
   - "El tribunal dice que el demandante deber铆a recibir alg煤n dinero."

### Prioridades:
1. Enf贸cate en la claridad y precisi贸n.
2. Usa terminolog铆a legal espec铆fica.
3. Mant茅n la consistencia en el tono y terminolog铆a.
"""

def mejorar_resolucion(input_text):
    # Construcci贸n del prompt con instrucciones unificadas
    prompt = f"Texto o pregunta:\n{input_text}\nRespuesta:"

    # Construcci贸n de los mensajes seg煤n especificaciones
    messages = [
        {
            "role": "system",
            "content": instrucciones
        },
        {
            "role": "user",
            "content": prompt
        }
    ]

    try:
        completion_llama = client.chat.completions.create(
            model="meta/llama-3.1-405b-instruct",
            messages=messages,
            temperature=1.0,
            top_p=0.7,
            max_tokens=1024,
            stream=True
        )
        completion_mistral = client.chat.completions.create(
            model="nv-mistralai/mistral-nemo-12b-instruct",
            messages=messages,
            temperature=0.2,
            top_p=0.7,
            max_tokens=1024,
            stream=True
        )

        respuesta_combinada = ""
        for chunk_llama, chunk_mistral in zip(completion_llama, completion_mistral):
            if chunk_llama.choices[0].delta.content is not None:
                respuesta_combinada += chunk_llama.choices[0].delta.content
            if chunk_mistral.choices[0].delta.content is not None:
                respuesta_combinada += chunk_mistral.choices[0].delta.content

        return respuesta_combinada

    except Exception as e:
        return f"Error: {e}"

# Configuraci贸n avanzada de Gradio
def gradio_interface():
    with gr.Blocks() as demo:
        gr.Markdown("# Mejora de Resoluciones Judiciales y Respuestas sobre Redacci贸n Judicial")
        with gr.Row():
            with gr.Column():
                input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial o pregunta", lines=5, placeholder="Escribe aqu铆 tu resoluci贸n judicial o pregunta...")
                submit_button = gr.Button("Enviar")
            with gr.Column():
                output_text = gr.Textbox(label="Respuesta mejorada o respuesta corta", lines=10, placeholder="Aqu铆 aparecer谩 la respuesta...")

        submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)

    demo.launch()

# Lanzamiento de la interfaz de Gradio
gradio_interface()