Llama3.1 / app.py
locorene1000's picture
A
a6910e1 verified
raw
history blame
3.79 kB
import requests
import json
import gradio as gr
import spaces
# Configuraci贸n de la API de NVIDIA
base_url = "https://integrate.api.nvidia.com/v1"
api_key = "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"
headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
"Accept": "application/json"
}
# 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, asegurando un tono formal y t茅cnico cuando sea necesario, y proporcionando respuestas claras y precisas. Tus habilidades incluyen:
1. Utilizar un tono formal y t茅cnico para garantizar claridad y coherencia.
2. Usar 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. Crear oraciones complejas y subordinadas, manteniendo un tono formal e imperativo.
4. Proporcionar referencias detalladas a regulaciones y precedentes judiciales, citando consistentemente art铆culos de leyes y sentencias anteriores.
5. Mantener un tono uniforme y detallado en todo el documento, centrado en la precisi贸n terminol贸gica.
"""
instrucciones_legales = """
Revisas el documento para asegurar:
- Comprensi贸n del contexto y prop贸sito.
- Identificaci贸n del tipo de documento judicial (sentencia, apelaci贸n).
- Progresi贸n l贸gica de ideas y coherencia entre secciones.
- Claridad y precisi贸n en cada p谩rrafo y oraci贸n.
- Uso consistente de terminolog铆a legal.
- Correcci贸n gramatical y claridad en la estructura de las oraciones.
- Uso adecuado de conectores para transiciones suaves.
- Precisi贸n en t茅rminos legales y sugerencias de expresiones m谩s efectivas.
- Consideraci贸n de sugerencias y validaciones, clasific谩ndolas seg煤n su relevancia.
- Revisi贸n integral y presentaci贸n concisa y unificada de la informaci贸n.
"""
def mejorar_resolucion(input_text):
# Construcci贸n del prompt con instrucciones unificadas
prompt = f"Adopta el rol de Ministro de la Corte Suprema de Chile y responde a la siguiente pregunta/pregunta con base en las instrucciones e instrucciones legales proporcionadas:\n{instrucciones}\n{instrucciones_legales}\nTexto o pregunta:\n{input_text}\nRespuesta:"
payload = {
"model": "nvidia/nemotron-4-340b-instruct",
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.5,
"top_p": 0.7,
"max_tokens": 1024,
"stream": False
}
try:
response = requests.post(f"{base_url}/chat/completions", headers=headers, data=json.dumps(payload))
response.raise_for_status()
response_body = response.json()
return response_body['choices'][0]['message']['content']
except requests.exceptions.HTTPError as errh:
return f"Error HTTP: {errh}"
except requests.exceptions.ConnectionError as errc:
return f"Error de conexi贸n: {errc}"
except requests.exceptions.Timeout as errt:
return f"Error de tiempo de espera: {errt}"
except requests.exceptions.RequestException as err:
return f"Error de solicitud: {err}"
# Definici贸n de la interfaz de Gradio
with gr.Blocks() as demo:
gr.Markdown("# Mejora de Resoluciones Judiciales y Respuestas con Nemotron")
input_text = gr.Textbox(label="Introduce tu resoluci贸n judicial o pregunta")
output_text = gr.Textbox(label="Respuesta mejorada o respuesta corta")
submit_button = gr.Button("Enviar")
submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)
# Lanzamiento de la aplicaci贸n
demo.launch()