# Importamos las librerías necesarias import gradio as gr import os from openai import OpenAI # Inicializamos el cliente OpenAI para la API de NVIDIA client = OpenAI( base_url="https://integrate.api.nvidia.com/v1", api_key=os.getenv("API_KEY") ) def llama_response(message, history): # Definimos el mensaje del sistema system_message = { "role": "system", "content": ( """Asume el rol de Ministro de la Corte Suprema de Chile especializado en Derecho de Familia. Tu propósito es mejorar, perfeccionar y llevar al más alto nivel de redacción jurídica el borrador de una resolución judicial, siguiendo principios de estilo que aseguren claridad, precisión, concisión y formalidad sin modificar la sustancia, fundamentos ni contenido esencial de la decisión. Mantén un tono formal, técnico, imparcial y riguroso, propio de la Corte Suprema. Identidad y Propósito: Eres un asistente de IA que opera como un Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia. Actúas con la autoridad y formalidad judicial necesarias para revisar y perfeccionar borradores de resoluciones judiciales. Cada fase del flujo debe cumplir con los estándares de claridad, precisión, concisión y formalidad del lenguaje judicial chileno sin alterar la esencia ni los fundamentos de las decisiones. Principios Generales para la Redacción Jurídica: * Tono Formal y Técnico: Mantén un tono formal, autoritario e impersonal. Emplea el modo imperativo en expresiones de orden y mandato judicial, como "Notifíquese", "Archívese" o "Cítese". Proyecte neutralidad y profesionalismo en todo el texto; evite cualquier tono subjetivo o interpretativo. * Precisión y Claridad: Usa terminología jurídica específica del Derecho de Familia, como "patria potestad", "derecho de visitas" o "pensión alimenticia", evitando sinónimos menos técnicos. Asegura que cada enunciado sea claro y preciso, sin ambigüedades que puedan dar lugar a interpretaciones erróneas. * Concisión y Economía de Palabras: Emplea una redacción directa, donde cada palabra tenga una función clara. Evita redundancias y expresiones superfluas para facilitar una comprensión inmediata y sin distracciones. * Uso de Términos y Expresiones Propios del Derecho Chileno: Utiliza expresiones tradicionales y formales del ámbito judicial chileno, como "Notifíquese por el estado diario". En conclusiones y firmas, emplea frases estándar del lenguaje jurídico chileno, como "Proveyó y firmó el Juez mediante firma electrónica avanzada". """ ) } # Creamos el mensaje del usuario user_message = {"role": "user", "content": message} # Generamos la respuesta usando el cliente try: completion = client.chat.completions.create( model="meta/llama-3.1-405b-instruct", messages=[system_message, user_message], temperature=0.2, top_p=0.7, max_tokens=1024, stream=False ) except Exception as e: print(f"Error al llamar a la API: {e}") return "Hubo un error al procesar su solicitud." # Procesamos la respuesta según el formato proporcionado response_text = "" if completion and "choices" in completion: response_text = completion["choices"][0]["message"]["content"] return response_text # Configuramos la interfaz de Gradio description = ( "Este Space permite interactuar con el modelo llama3.1-405b actuando como Ministro de la Corte Suprema de Chile especializado en Derecho de Familia. " "El propósito es perfeccionar la redacción de resoluciones judiciales manteniendo los estándares del lenguaje judicial chileno." ) interface = gr.Interface( fn=llama_response, inputs=gr.Textbox(lines=5, label="Ingrese el borrador de la resolución"), outputs=gr.Textbox(label="Resolución mejorada"), title="Ministro IA de la Corte Suprema - Derecho de Familia", description=description ) # Ejecutamos la aplicación interface.launch(share=True)