Spaces:
Sleeping
Sleeping
File size: 6,631 Bytes
69d0240 c6d9b41 69d0240 c6d9b41 f28b7fe aeb050a 69d0240 9e29b9a aeb050a c6d9b41 fd9724f c6d9b41 7b5b003 69d0240 c1bd7a8 69d0240 422ddef 69d0240 422ddef b62f5fe 422ddef f28b7fe fd9724f 69d0240 14a64a1 c1bd7a8 a327ee7 c1bd7a8 a6c4e73 f28b7fe c6d9b41 69d0240 fd9724f 69d0240 fd9724f 69d0240 c1bd7a8 69d0240 fcb297b 69d0240 c1bd7a8 69d0240 9e29b9a 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 153 154 155 156 |
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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" # Reemplaza con tu 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.
"""
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):
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=False # Configurado en False para evitar complicaciones con streaming
)
return completion.choices[0].message['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
def gradio_interface(input_text):
return mejorar_resolucion(input_text)
# Configuraci贸n de la interfaz Gradio
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=(
"Este sistema est谩 dise帽ado para ayudar en la mejora de borradores de resoluciones judiciales o para "
"responder preguntas sobre derecho civil con un enfoque t茅cnico y formal. Introduce un texto para recibir "
"una respuesta optimizada."
),
allow_flagging=False, # Desactiva el flagging si no es necesario
examples=[
["El tribunal dicta que..."],
["驴Qu茅 dice el art铆culo 21 del C贸digo Civil sobre...?"]
]
)
iface.launch() |