File size: 6,502 Bytes
69d0240
c6d9b41
69d0240
c6d9b41
f28b7fe
aeb050a
69d0240
07abd54
aeb050a
c6d9b41
 
 
fd9724f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c6d9b41
 
07abd54
69d0240
 
07abd54
 
 
69d0240
 
 
 
 
 
 
c1bd7a8
69d0240
 
 
422ddef
69d0240
 
422ddef
 
b62f5fe
422ddef
f28b7fe
fd9724f
69d0240
 
14a64a1
07abd54
a327ee7
 
07abd54
 
 
 
a6c4e73
07abd54
f28b7fe
 
c6d9b41
69d0240
 
 
 
 
 
 
 
 
fd9724f
69d0240
 
 
fd9724f
69d0240
 
 
 
 
 
 
 
 
 
 
 
 
 
c1bd7a8
69d0240
 
 
 
 
 
 
 
 
 
 
07abd54
69d0240
 
 
 
 
c1bd7a8
 
69d0240
07abd54
 
69d0240
c6d9b41
c1bd7a8
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
import re
import gradio as gr
from openai import OpenAI

# Configuraci贸n del cliente OpenAI con la API de NVIDIA
client = OpenAI(
    base_url="https://integrate.api.nvidia.com/v1",
    api_key="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"
)

# 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.
"""

terminologia_legal = ['folio', 'autos', 'resuelve', 'art铆culo', 'C贸digo de Procedimiento Civil', 'audiencia', 'notificaci贸n', 'prueba', 'nulidad', 'oficiar', 'notificar']

def construir_prompt(input_text, contexto=None, tarea=None):
    """
    Construye el prompt para el modelo LLaMA 3.1.
    """
    prompt = f"Texto o pregunta: {input_text}"
    if contexto:
        prompt += f"\nContexto: {contexto}"
    if tarea:
        prompt += f"\nTarea: {tarea}"
    return prompt

def generar_respuesta(prompt):
    """
    Genera una respuesta del modelo LLaMA 3.1 dado un prompt espec铆fico.
    """
    messages = [
        {"role": "system", "content": instrucciones},
        {"role": "user", "content": prompt}
    ]

    try:
        completion = client.chat.completions.create(
            model="meta/llama-3.1-405b-instruct",
            messages=messages,
            temperature=0.7,
            top_p=0.9,
            max_tokens=2048,
            stream=True
        )

        response_content = ""
        for chunk in completion:
            if chunk.choices[0].delta.content is not None:
                response_content += chunk.choices[0].delta.content

        return response_content.strip()
    except Exception as e:
        return f"Error: {e}"

def validar_respuesta(respuesta, contexto=None, tarea=None):
    """
    Valida la coherencia y la calidad de la respuesta generada.
    """
    sugerencias = []

    # Verificar la consistencia terminol贸gica
    if not any(term in respuesta for term in terminologia_legal):
        sugerencias.append("Incluir terminolog铆a legal espec铆fica.")

    # Verificar la correcci贸n gramatical b谩sica
    if not re.match(r'^[A-Z][^.?!]*[.?!]$', respuesta):
        sugerencias.append("Mejorar la correcci贸n gramatical y estructura de las oraciones.")

    # Asegurar que se mantenga la formalidad y precisi贸n
    if len(respuesta) < 20:
        sugerencias.append("Aumentar la longitud para proporcionar una respuesta m谩s 煤til.")

    return sugerencias

def mejorar_resolucion(input_text):
    """
    Funci贸n principal que mejora la resoluci贸n judicial o responde preguntas.
    """
    # Construir el prompt
    prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")

    # Generar la respuesta
    respuesta = generar_respuesta(prompt)

    # Validar la respuesta
    sugerencias = validar_respuesta(respuesta, contexto=input_text, tarea="resolucion_judicial")

    # Si la respuesta no es v谩lida, generar una nueva respuesta
    if sugerencias:
        prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
        respuesta = generar_respuesta(prompt)

    return respuesta

# Interfaz Gradio
def gradio_interface(input_text):
    return mejorar_resolucion(input_text)

iface = gr.Interface(
    fn=gradio_interface,
    inputs=gr.Textbox(lines=10, placeholder="Introduce aqu铆 la resoluci贸n judicial o la pregunta...", label="Texto o Pregunta"),
    outputs=gr.Textbox(label="Respuesta Mejorada"),
    title="Mejora de Resoluciones Judiciales",
    description="Introduce una resoluci贸n judicial o una pregunta relacionada con derecho civil. El sistema mejorar谩 el borrador o proporcionar谩 una respuesta t茅cnica y formal.",
    allow_flagging="never"  # Ajuste basado en advertencias de Gradio
)

iface.launch()