Spaces:
Sleeping
Sleeping
from openai import OpenAI | |
import gradio as gr | |
# Configuraci贸n del cliente OpenAI con la API de NVIDIA | |
API_KEY = "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" | |
client = OpenAI( | |
base_url="https://integrate.api.nvidia.com/v1", | |
api_key=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. | |
""" | |
def mejorar_resolucion(input_text): | |
# Construcci贸n del prompt con instrucciones unificadas | |
prompt = f"Texto o pregunta:\n{input_text}\nRespuesta:" | |
# Construcci贸n de los mensajes seg煤n especificaciones | |
messages = [ | |
{ | |
"role": "system", | |
"content": instrucciones | |
}, | |
{ | |
"role": "user", | |
"content": prompt | |
} | |
] | |
try: | |
completion_llama = client.chat.completions.create( | |
model="meta/llama-3.1-405b-instruct", | |
messages=messages, | |
temperature=1.0, | |
top_p=0.7, | |
max_tokens=1024, | |
stream=True | |
) | |
completion_mistral = client.chat.completions.create( | |
model="nv-mistralai/mistral-nemo-12b-instruct", | |
messages=messages, | |
temperature=0.2, | |
top_p=0.7, | |
max_tokens=1024, | |
stream=True | |
) | |
respuesta_combinada = "" | |
for chunk_llama, chunk_mistral in zip(completion_llama, completion_mistral): | |
if chunk_llama.choices[0].delta.content is not None: | |
respuesta_combinada += chunk_llama.choices[0].delta.content | |
if chunk_mistral.choices[0].delta.content is not None: | |
respuesta_combinada += chunk_mistral.choices[0].delta.content | |
return respuesta_combinada | |
except Exception as e: | |
return f"Error: {e}" | |
# Configuraci贸n avanzada de Gradio | |
def gradio_interface(): | |
with gr.Blocks() as demo: | |
gr.Markdown("# Mejora de Resoluciones Judiciales y Respuestas sobre Redacci贸n Judicial") | |
with gr.Row(): | |
with gr.Column(): | |
input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial o pregunta", lines=5, placeholder="Escribe aqu铆 tu resoluci贸n judicial o pregunta...") | |
submit_button = gr.Button("Enviar") | |
with gr.Column(): | |
output_text = gr.Textbox(label="Respuesta mejorada o respuesta corta", lines=10, placeholder="Aqu铆 aparecer谩 la respuesta...") | |
submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text) | |
demo.launch() | |
# Lanzamiento de la interfaz de Gradio | |
gradio_interface() | |