Spaces:
Running
Running
# 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) |