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()