Spaces:
Running
Running
eberhenriquez94
commited on
app.py
CHANGED
@@ -2,56 +2,59 @@ import gradio as gr
|
|
2 |
import os
|
3 |
from openai import OpenAI
|
4 |
|
5 |
-
# Configuraci贸n de la clave de API
|
6 |
api_key = os.getenv("API_KEY")
|
7 |
if not api_key:
|
8 |
raise ValueError("La variable de entorno 'API_KEY' no est谩 configurada.")
|
9 |
|
10 |
-
|
11 |
-
client = OpenAI(
|
12 |
-
base_url="https://integrate.api.nvidia.com/v1",
|
13 |
-
api_key=api_key
|
14 |
-
)
|
15 |
|
16 |
def llama_response(message):
|
17 |
-
|
|
|
|
|
18 |
system_message = {
|
19 |
"role": "system",
|
20 |
-
"content": (
|
21 |
-
|
|
|
|
|
|
|
22 |
|
23 |
-
**
|
|
|
|
|
|
|
24 |
|
25 |
-
|
26 |
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
|
32 |
-
|
33 |
|
34 |
-
1.
|
35 |
-
2.
|
36 |
-
3.
|
37 |
-
4.
|
38 |
-
5.
|
39 |
-
6.
|
40 |
|
41 |
-
|
42 |
|
43 |
-
|
|
|
|
|
44 |
|
45 |
-
|
46 |
|
47 |
-
|
48 |
-
"""
|
|
|
49 |
}
|
50 |
-
|
51 |
-
# Creaci贸n del mensaje del usuario
|
52 |
user_message = {"role": "user", "content": message}
|
53 |
|
54 |
-
# Generaci贸n de la respuesta utilizando la API de OpenAI
|
55 |
try:
|
56 |
completion = client.chat.completions.create(
|
57 |
model="meta/llama-3.1-405b-instruct",
|
@@ -61,29 +64,41 @@ Es crucial que el asistente de IA se adhiera estrictamente a las instrucciones,
|
|
61 |
max_tokens=4000,
|
62 |
stream=True
|
63 |
)
|
64 |
-
|
65 |
-
# Procesamiento de la respuesta
|
66 |
response_text = ""
|
67 |
for chunk in completion:
|
68 |
if chunk.choices[0].delta.content is not None:
|
69 |
response_text += chunk.choices[0].delta.content
|
70 |
-
|
|
|
|
|
71 |
except Exception as e:
|
72 |
print(f"Error al llamar a la API: {e}")
|
73 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
74 |
|
75 |
-
# Configuraci贸n de la interfaz de Gradio
|
76 |
-
description = (
|
77 |
-
"Este Space permite interactuar con el modelo llama3.1-405b actuando como Ministro de la Corte Suprema de Chile especializado en Derecho de Familia. "
|
78 |
-
"El prop贸sito es perfeccionar la redacci贸n de resoluciones judiciales manteniendo los est谩ndares del lenguaje judicial chileno."
|
79 |
-
)
|
80 |
interface = gr.Interface(
|
81 |
fn=llama_response,
|
82 |
-
inputs=gr.Textbox(lines=10, label="Ingrese el borrador de la resoluci贸n"
|
83 |
-
|
|
|
84 |
title="Ministro IA de la Corte Suprema - Derecho de Familia",
|
85 |
-
description=description
|
|
|
86 |
)
|
87 |
|
88 |
-
# Ejecuci贸n de la aplicaci贸n
|
89 |
interface.launch()
|
|
|
2 |
import os
|
3 |
from openai import OpenAI
|
4 |
|
|
|
5 |
api_key = os.getenv("API_KEY")
|
6 |
if not api_key:
|
7 |
raise ValueError("La variable de entorno 'API_KEY' no est谩 configurada.")
|
8 |
|
9 |
+
client = OpenAI(base_url="https://integrate.api.nvidia.com/v1", api_key=api_key)
|
|
|
|
|
|
|
|
|
10 |
|
11 |
def llama_response(message):
|
12 |
+
if not message or len(message) < 50:
|
13 |
+
return "Error: El borrador de la resoluci贸n es demasiado corto o est谩 vac铆o.", "Error"
|
14 |
+
|
15 |
system_message = {
|
16 |
"role": "system",
|
17 |
+
"content": (
|
18 |
+
"""
|
19 |
+
Act煤a como un Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia. Tu tarea es perfeccionar la redacci贸n de un borrador de resoluci贸n judicial, asegurando claridad, precisi贸n, concisi贸n y formalidad. No debes cambiar la sustancia ni el fundamento de la decisi贸n original.
|
20 |
+
|
21 |
+
## Objetivos principales:
|
22 |
|
23 |
+
1. **Mantener un tono formal, t茅cnico e impersonal.** Usa el modo imperativo solo cuando ya est茅 presente en el borrador (ej., "Notif铆quese").
|
24 |
+
2. **Asegurar claridad y precisi贸n.** Emplea terminolog铆a jur铆dica precisa del Derecho de Familia (ej., "r茅gimen de visitas" en lugar de "ver al ni帽o").
|
25 |
+
3. **Ser conciso.** Elimina redundancias y frases innecesarias.
|
26 |
+
4. **Utilizar expresiones judiciales chilenas est谩ndar.** Usa frases tradicionales en conclusiones y firmas si est谩n presentes (ej., "Provey贸 y firm贸 el Juez mediante firma electr贸nica avanzada").
|
27 |
|
28 |
+
## Ejemplos:
|
29 |
|
30 |
+
- Si el borrador dice: "El juez decide que el pap谩 puede ver a su hijo los fines de semana."
|
31 |
+
Reformular a: "Se establece un r茅gimen de visitas del menor con su padre los fines de semana."
|
32 |
+
- Si el borrador dice: "Se ordena pagarle una pensi贸n a la mam谩 para los gastos del ni帽o."
|
33 |
+
Reformular a: "Se fija una pensi贸n alimenticia a favor de la demandante para la manutenci贸n del menor."
|
34 |
|
35 |
+
## Pasos a seguir:
|
36 |
|
37 |
+
1. Analiza el borrador para identificar 谩reas de mejora en claridad, precisi贸n, concisi贸n y formalidad.
|
38 |
+
2. Aplica un tono formal y t茅cnico, usando el imperativo solo donde corresponda.
|
39 |
+
3. Mejora la precisi贸n usando terminolog铆a jur铆dica correcta.
|
40 |
+
4. Asegura la concisi贸n eliminando redundancias.
|
41 |
+
5. Utiliza expresiones judiciales chilenas est谩ndar.
|
42 |
+
6. Revisa y corrige el texto final.
|
43 |
|
44 |
+
## Restricciones:
|
45 |
|
46 |
+
- No debes a帽adir nuevos hechos, decisiones, ni modificar el fondo de la resoluci贸n.
|
47 |
+
- No interpretes ni ampl铆es el contenido existente, solo mejora la redacci贸n.
|
48 |
+
- No incluyas an谩lisis o comentarios personales.
|
49 |
|
50 |
+
## Formato de Salida:
|
51 |
|
52 |
+
Devuelve el borrador de la resoluci贸n judicial revisado y mejorado en formato de texto, manteniendo la estructura original.
|
53 |
+
"""
|
54 |
+
)
|
55 |
}
|
|
|
|
|
56 |
user_message = {"role": "user", "content": message}
|
57 |
|
|
|
58 |
try:
|
59 |
completion = client.chat.completions.create(
|
60 |
model="meta/llama-3.1-405b-instruct",
|
|
|
64 |
max_tokens=4000,
|
65 |
stream=True
|
66 |
)
|
|
|
|
|
67 |
response_text = ""
|
68 |
for chunk in completion:
|
69 |
if chunk.choices[0].delta.content is not None:
|
70 |
response_text += chunk.choices[0].delta.content
|
71 |
+
yield response_text, "Procesando..." # Streaming en Gradio
|
72 |
+
yield response_text, "Listo"
|
73 |
+
|
74 |
except Exception as e:
|
75 |
print(f"Error al llamar a la API: {e}")
|
76 |
+
yield "Error: No se pudo procesar la solicitud. Revise el formato del borrador o intente nuevamente m谩s tarde.", "Error"
|
77 |
+
|
78 |
+
description = """
|
79 |
+
## Ministro IA de la Corte Suprema - Derecho de Familia
|
80 |
+
|
81 |
+
Este Space permite interactuar con el modelo llama3.1-405b actuando como Ministro de la Corte Suprema de Chile especializado en Derecho de Familia.
|
82 |
+
El prop贸sito es perfeccionar la redacci贸n de resoluciones judiciales manteniendo los est谩ndares del lenguaje judicial chileno.
|
83 |
+
|
84 |
+
**Instrucciones:**
|
85 |
+
1. Pegue el borrador de la resoluci贸n en el cuadro de texto de abajo.
|
86 |
+
2. Haga clic en "Submit".
|
87 |
+
"""
|
88 |
+
|
89 |
+
examples = [
|
90 |
+
["El juez decide que el pap谩 puede ver a su hijo los fines de semana.", "Se establece un r茅gimen de visitas del menor con su padre los fines de semana."],
|
91 |
+
["Se ordena pagarle una pensi贸n a la mam谩 para los gastos del ni帽o.", "Se fija una pensi贸n alimenticia a favor de la demandante para la manutenci贸n del menor."]
|
92 |
+
]
|
93 |
|
|
|
|
|
|
|
|
|
|
|
94 |
interface = gr.Interface(
|
95 |
fn=llama_response,
|
96 |
+
inputs=gr.Textbox(lines=10, label="Ingrese el borrador de la resoluci贸n",
|
97 |
+
placeholder="Ejemplo: 'Considerando que... Resuelvo...'"),
|
98 |
+
outputs=[gr.Textbox(label="Resoluci贸n mejorada"), gr.Label(label="Estado")],
|
99 |
title="Ministro IA de la Corte Suprema - Derecho de Familia",
|
100 |
+
description=description,
|
101 |
+
examples=examples
|
102 |
)
|
103 |
|
|
|
104 |
interface.launch()
|