Spaces:
Sleeping
Sleeping
locorene1000
commited on
Commit
•
9e29b9a
1
Parent(s):
14a64a1
app.py
CHANGED
@@ -5,80 +5,59 @@ from openai import OpenAI
|
|
5 |
# Configuración del cliente OpenAI con la API de NVIDIA
|
6 |
client = OpenAI(
|
7 |
base_url="https://integrate.api.nvidia.com/v1",
|
8 |
-
api_key="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"
|
9 |
)
|
10 |
|
11 |
# Instrucciones para el modelo
|
12 |
instrucciones = """
|
13 |
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.
|
14 |
-
|
15 |
### Habilidades Principales:
|
16 |
1. **Claridad y Coherencia**:
|
17 |
- Utiliza un tono formal y técnico.
|
18 |
- Proporciona respuestas claras y precisas.
|
19 |
-
|
20 |
2. **Terminología Legal**:
|
21 |
- 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'.
|
22 |
-
|
23 |
3. **Estructura Gramatical**:
|
24 |
- Crea oraciones complejas y subordinadas, manteniendo un tono formal e imperativo.
|
25 |
-
|
26 |
4. **Referencias y Precedentes**:
|
27 |
- Proporciona referencias detalladas a regulaciones y precedentes judiciales, citando consistentemente artículos de leyes y sentencias anteriores.
|
28 |
-
|
29 |
5. **Consistencia**:
|
30 |
- Mantén un tono uniforme y detallado en todo el documento, centrado en la precisión terminológica.
|
31 |
-
|
32 |
### Directrices de Revisión:
|
33 |
1. **Comprensión del Contexto y Propósito**:
|
34 |
- Asegura la comprensión del contexto y propósito del documento.
|
35 |
-
|
36 |
2. **Identificación del Tipo de Documento**:
|
37 |
- Identifica correctamente el tipo de documento judicial (sentencia, apelación).
|
38 |
-
|
39 |
3. **Progresión Lógica y Coherencia**:
|
40 |
- Asegura una progresión lógica de ideas y coherencia entre secciones.
|
41 |
-
|
42 |
4. **Claridad y Precisión**:
|
43 |
- Evalúa la claridad y precisión en cada párrafo y oración.
|
44 |
-
|
45 |
5. **Consistencia en Terminología Legal**:
|
46 |
- Verifica el uso consistente de terminología legal.
|
47 |
-
|
48 |
6. **Corrección Gramatical**:
|
49 |
- Asegura la corrección gramatical y claridad en la estructura de las oraciones.
|
50 |
-
|
51 |
7. **Uso Adecuado de Conectores**:
|
52 |
- Usa conectores adecuados para transiciones suaves.
|
53 |
-
|
54 |
8. **Precisión en Términos Legales**:
|
55 |
- Proporciona precisión en términos legales y sugerencias de expresiones más efectivas.
|
56 |
-
|
57 |
9. **Consideración de Sugerencias y Validaciones**:
|
58 |
- Clasifica las sugerencias según su relevancia y ajusta el documento en consecuencia.
|
59 |
-
|
60 |
10. **Revisión Integral**:
|
61 |
- Realiza una revisión integral y presentación concisa y unificada de la información.
|
62 |
-
|
63 |
### Ejemplos de Buenas Prácticas:
|
64 |
1. **Buena Práctica**:
|
65 |
- "El tribunal determina que el demandante tiene derecho a una indemnización conforme al artículo 21 del Código Civil."
|
66 |
-
|
67 |
2. **Mala Práctica**:
|
68 |
- "El tribunal dice que el demandante debería recibir algún dinero."
|
69 |
-
|
70 |
### Prioridades:
|
71 |
1. Enfócate en la claridad y precisión.
|
72 |
2. Usa terminología legal específica.
|
73 |
3. Mantén la consistencia en el tono y terminología.
|
74 |
"""
|
75 |
|
76 |
-
terminologia_legal = ['folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil',
|
77 |
|
78 |
def construir_prompt(input_text, contexto=None, tarea=None):
|
79 |
-
"""
|
80 |
-
Construye el prompt para el modelo LLaMA 3.1.
|
81 |
-
"""
|
82 |
prompt = f"Texto o pregunta: {input_text}"
|
83 |
if contexto:
|
84 |
prompt += f"\nContexto: {contexto}"
|
@@ -86,7 +65,7 @@ def construir_prompt(input_text, contexto=None, tarea=None):
|
|
86 |
prompt += f"\nTarea: {tarea}"
|
87 |
return prompt
|
88 |
|
89 |
-
def generar_respuesta(prompt):
|
90 |
"""
|
91 |
Genera una respuesta del modelo LLaMA 3.1 dado un prompt específico.
|
92 |
"""
|
@@ -102,15 +81,18 @@ def generar_respuesta(prompt):
|
|
102 |
temperature=0.7,
|
103 |
top_p=0.9,
|
104 |
max_tokens=2048,
|
105 |
-
stream=
|
106 |
)
|
107 |
|
108 |
-
|
109 |
-
|
110 |
-
|
111 |
-
|
|
|
|
|
|
|
|
|
112 |
|
113 |
-
return response_content.strip()
|
114 |
except Exception as e:
|
115 |
return f"Error: {e}"
|
116 |
|
@@ -142,7 +124,7 @@ def mejorar_resolucion(input_text):
|
|
142 |
prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
|
143 |
|
144 |
# Generar la respuesta
|
145 |
-
respuesta = generar_respuesta(prompt)
|
146 |
|
147 |
# Validar la respuesta
|
148 |
sugerencias = validar_respuesta(respuesta, contexto=input_text, tarea="resolucion_judicial")
|
@@ -154,16 +136,28 @@ def mejorar_resolucion(input_text):
|
|
154 |
|
155 |
return respuesta
|
156 |
|
157 |
-
# Interfaz Gradio
|
158 |
def gradio_interface(input_text):
|
159 |
return mejorar_resolucion(input_text)
|
160 |
|
|
|
161 |
iface = gr.Interface(
|
162 |
fn=gradio_interface,
|
163 |
-
inputs="
|
164 |
-
outputs="
|
165 |
title="Mejora de Resoluciones Judiciales",
|
166 |
-
description=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
167 |
)
|
168 |
|
169 |
-
iface.launch(share=True
|
|
|
5 |
# Configuración del cliente OpenAI con la API de NVIDIA
|
6 |
client = OpenAI(
|
7 |
base_url="https://integrate.api.nvidia.com/v1",
|
8 |
+
api_key="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" # Reemplaza con tu API Key
|
9 |
)
|
10 |
|
11 |
# Instrucciones para el modelo
|
12 |
instrucciones = """
|
13 |
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.
|
|
|
14 |
### Habilidades Principales:
|
15 |
1. **Claridad y Coherencia**:
|
16 |
- Utiliza un tono formal y técnico.
|
17 |
- Proporciona respuestas claras y precisas.
|
|
|
18 |
2. **Terminología Legal**:
|
19 |
- 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'.
|
|
|
20 |
3. **Estructura Gramatical**:
|
21 |
- Crea oraciones complejas y subordinadas, manteniendo un tono formal e imperativo.
|
|
|
22 |
4. **Referencias y Precedentes**:
|
23 |
- Proporciona referencias detalladas a regulaciones y precedentes judiciales, citando consistentemente artículos de leyes y sentencias anteriores.
|
|
|
24 |
5. **Consistencia**:
|
25 |
- Mantén un tono uniforme y detallado en todo el documento, centrado en la precisión terminológica.
|
|
|
26 |
### Directrices de Revisión:
|
27 |
1. **Comprensión del Contexto y Propósito**:
|
28 |
- Asegura la comprensión del contexto y propósito del documento.
|
|
|
29 |
2. **Identificación del Tipo de Documento**:
|
30 |
- Identifica correctamente el tipo de documento judicial (sentencia, apelación).
|
|
|
31 |
3. **Progresión Lógica y Coherencia**:
|
32 |
- Asegura una progresión lógica de ideas y coherencia entre secciones.
|
|
|
33 |
4. **Claridad y Precisión**:
|
34 |
- Evalúa la claridad y precisión en cada párrafo y oración.
|
|
|
35 |
5. **Consistencia en Terminología Legal**:
|
36 |
- Verifica el uso consistente de terminología legal.
|
|
|
37 |
6. **Corrección Gramatical**:
|
38 |
- Asegura la corrección gramatical y claridad en la estructura de las oraciones.
|
|
|
39 |
7. **Uso Adecuado de Conectores**:
|
40 |
- Usa conectores adecuados para transiciones suaves.
|
|
|
41 |
8. **Precisión en Términos Legales**:
|
42 |
- Proporciona precisión en términos legales y sugerencias de expresiones más efectivas.
|
|
|
43 |
9. **Consideración de Sugerencias y Validaciones**:
|
44 |
- Clasifica las sugerencias según su relevancia y ajusta el documento en consecuencia.
|
|
|
45 |
10. **Revisión Integral**:
|
46 |
- Realiza una revisión integral y presentación concisa y unificada de la información.
|
|
|
47 |
### Ejemplos de Buenas Prácticas:
|
48 |
1. **Buena Práctica**:
|
49 |
- "El tribunal determina que el demandante tiene derecho a una indemnización conforme al artículo 21 del Código Civil."
|
|
|
50 |
2. **Mala Práctica**:
|
51 |
- "El tribunal dice que el demandante debería recibir algún dinero."
|
|
|
52 |
### Prioridades:
|
53 |
1. Enfócate en la claridad y precisión.
|
54 |
2. Usa terminología legal específica.
|
55 |
3. Mantén la consistencia en el tono y terminología.
|
56 |
"""
|
57 |
|
58 |
+
terminologia_legal = ['folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil', ...]
|
59 |
|
60 |
def construir_prompt(input_text, contexto=None, tarea=None):
|
|
|
|
|
|
|
61 |
prompt = f"Texto o pregunta: {input_text}"
|
62 |
if contexto:
|
63 |
prompt += f"\nContexto: {contexto}"
|
|
|
65 |
prompt += f"\nTarea: {tarea}"
|
66 |
return prompt
|
67 |
|
68 |
+
def generar_respuesta(prompt, stream=False):
|
69 |
"""
|
70 |
Genera una respuesta del modelo LLaMA 3.1 dado un prompt específico.
|
71 |
"""
|
|
|
81 |
temperature=0.7,
|
82 |
top_p=0.9,
|
83 |
max_tokens=2048,
|
84 |
+
stream=False
|
85 |
)
|
86 |
|
87 |
+
if stream:
|
88 |
+
response_content = ""
|
89 |
+
for chunk in completion:
|
90 |
+
if chunk.choices[0].delta.content is not None:
|
91 |
+
response_content += chunk.choices[0].delta.content
|
92 |
+
return response_content.strip()
|
93 |
+
else:
|
94 |
+
return completion.choices[0].message['content'].strip()
|
95 |
|
|
|
96 |
except Exception as e:
|
97 |
return f"Error: {e}"
|
98 |
|
|
|
124 |
prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
|
125 |
|
126 |
# Generar la respuesta
|
127 |
+
respuesta = generar_respuesta(prompt, stream=False) # Se usa stream=False para simplificar
|
128 |
|
129 |
# Validar la respuesta
|
130 |
sugerencias = validar_respuesta(respuesta, contexto=input_text, tarea="resolucion_judicial")
|
|
|
136 |
|
137 |
return respuesta
|
138 |
|
|
|
139 |
def gradio_interface(input_text):
|
140 |
return mejorar_resolucion(input_text)
|
141 |
|
142 |
+
# Mejoras en la interfaz de Gradio
|
143 |
iface = gr.Interface(
|
144 |
fn=gradio_interface,
|
145 |
+
inputs=gr.inputs.Textbox(lines=10, placeholder="Introduce aquí la resolución judicial o la pregunta...", label="Texto o Pregunta"),
|
146 |
+
outputs=gr.outputs.Textbox(label="Respuesta Mejorada"),
|
147 |
title="Mejora de Resoluciones Judiciales",
|
148 |
+
description=(
|
149 |
+
"Este sistema está diseñado para ayudar en la mejora de borradores de resoluciones judiciales o para "
|
150 |
+
"responder preguntas sobre derecho civil con un enfoque técnico y formal. Introduce un texto para recibir "
|
151 |
+
"una respuesta optimizada."
|
152 |
+
),
|
153 |
+
allow_flagging=False, # Desactiva el flagging si no es necesario
|
154 |
+
theme="huggingface", # Usa un tema moderno para mejor apariencia
|
155 |
+
live=False, # No es necesario actualizar en tiempo real
|
156 |
+
layout="vertical", # Layout vertical para claridad
|
157 |
+
examples=[
|
158 |
+
["El tribunal dicta que..."],
|
159 |
+
["¿Qué dice el artículo 21 del Código Civil sobre...?"]
|
160 |
+
]
|
161 |
)
|
162 |
|
163 |
+
iface.launch() # Se eliminó share=True para compatibilidad con Hugging Face Spaces
|