# Importamos las librerías necesarias import gradio as gr import os from openai import OpenAI # Inicializamos el cliente OpenAI para la API de NVIDIA api_key = os.getenv("API_KEY") if not api_key: raise ValueError("La variable de entorno 'API_KEY' no está configurada.") client = OpenAI( base_url="https://integrate.api.nvidia.com/v1", api_key=api_key ) def llama_response(message): # 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'. Proyecta neutralidad y profesionalismo en todo el texto; " " evita 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()