Spaces:
Sleeping
Sleeping
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() |