Llama3.1 / app.py
locorene1000's picture
a
a6c4e73 verified
raw
history blame
5.4 kB
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()