locorene1000 commited on
Commit
69d0240
1 Parent(s): 2f07ca1
Files changed (1) hide show
  1. app.py +75 -32
app.py CHANGED
@@ -1,10 +1,11 @@
1
- from openai import OpenAI
2
  import gradio as gr
 
3
 
4
  # Configuración del cliente OpenAI con la API de NVIDIA
5
  client = OpenAI(
6
- base_url = "https://integrate.api.nvidia.com/v1",
7
- api_key = "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"
8
  )
9
 
10
  # Instrucciones para el modelo
@@ -72,28 +73,34 @@ Eres un Ministro de la Corte Suprema de Chile, especializado en derecho civil. T
72
  3. Mantén la consistencia en el tono y terminología.
73
  """
74
 
75
- def mejorar_resolucion(input_text):
76
- # Construcción del prompt con instrucciones unificadas
77
- prompt = f"Texto o pregunta:\n{input_text}\nRespuesta:"
78
-
79
- # Construcción de los mensajes según especificaciones
 
 
 
 
 
 
 
 
 
 
 
 
80
  messages = [
81
- {
82
- "role": "system",
83
- "content": instrucciones
84
- },
85
- {
86
- "role": "user",
87
- "content": prompt
88
- }
89
  ]
90
 
91
  try:
92
  completion = client.chat.completions.create(
93
  model="meta/llama-3.1-405b-instruct",
94
  messages=messages,
95
- temperature=1.0,
96
- top_p=0.7,
97
  max_tokens=1024,
98
  stream=True
99
  )
@@ -107,20 +114,56 @@ def mejorar_resolucion(input_text):
107
  except Exception as e:
108
  return f"Error: {e}"
109
 
110
- # Configuración avanzada de Gradio
111
- def gradio_interface():
112
- with gr.Blocks() as demo:
113
- gr.Markdown("# Mejora de Resoluciones Judiciales y Respuestas sobre Redacción Judicial")
114
- with gr.Row():
115
- with gr.Column():
116
- input_text = gr.Textbox(label="Introduce tu resolución judicial o pregunta", lines=5, placeholder="Escribe aquí tu resolución judicial o pregunta...")
117
- submit_button = gr.Button("Enviar")
118
- with gr.Column():
119
- output_text = gr.Textbox(label="Respuesta mejorada o respuesta corta", lines=10, placeholder="Aquí aparecerá la respuesta...")
120
 
121
- submit_button.click(fn=mejorar_resolucion, inputs=input_text, outputs=output_text)
 
 
122
 
123
- demo.launch()
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
- # Lanzamiento de la interfaz de Gradio
126
- gradio_interface()
 
1
+ import re
2
  import gradio as gr
3
+ from openai import OpenAI
4
 
5
  # Configuración del cliente OpenAI con la API de NVIDIA
6
  client = OpenAI(
7
+ base_url="https://integrate.api.nvidia.com/v1",
8
+ api_key="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"
9
  )
10
 
11
  # Instrucciones para el modelo
 
73
  3. Mantén la consistencia en el tono y terminología.
74
  """
75
 
76
+ terminologia_legal = ['folio', 'autos', 'resuelve', 'artículo', 'Código de Procedimiento Civil', 'audiencia', 'notificación', 'prueba', 'nulidad', 'oficiar', 'notificar']
77
+
78
+ def construir_prompt(input_text, contexto=None, tarea=None):
79
+ """
80
+ Construye el prompt para el modelo LLaMA 3.1.
81
+ """
82
+ prompt = f"Texto o pregunta: {input_text}"
83
+ if contexto:
84
+ prompt += f"\nContexto: {contexto}"
85
+ if tarea:
86
+ prompt += f"\nTarea: {tarea}"
87
+ return prompt
88
+
89
+ def generar_respuesta(prompt):
90
+ """
91
+ Genera una respuesta del modelo LLaMA 3.1 dado un prompt específico.
92
+ """
93
  messages = [
94
+ {"role": "system", "content": instrucciones},
95
+ {"role": "user", "content": prompt}
 
 
 
 
 
 
96
  ]
97
 
98
  try:
99
  completion = client.chat.completions.create(
100
  model="meta/llama-3.1-405b-instruct",
101
  messages=messages,
102
+ temperature=0.7,
103
+ top_p=0.9,
104
  max_tokens=1024,
105
  stream=True
106
  )
 
114
  except Exception as e:
115
  return f"Error: {e}"
116
 
117
+ def validar_respuesta(respuesta, contexto=None, tarea=None):
118
+ """
119
+ Valida la coherencia y la calidad de la respuesta generada.
120
+ """
121
+ sugerencias = []
122
+
123
+ # Verificar la consistencia terminológica
124
+ if not any(term in respuesta for term in terminologia_legal):
125
+ sugerencias.append("Incluir terminología legal específica.")
 
126
 
127
+ # Verificar la corrección gramatical básica
128
+ if not re.match(r'^[A-Z][^.?!]*[.?!]$', respuesta):
129
+ sugerencias.append("Mejorar la corrección gramatical y estructura de las oraciones.")
130
 
131
+ # Asegurar que se mantenga la formalidad y precisión
132
+ if len(respuesta) < 20:
133
+ sugerencias.append("Aumentar la longitud para proporcionar una respuesta más útil.")
134
+
135
+ return sugerencias
136
+
137
+ def mejorar_resolucion(input_text):
138
+ """
139
+ Función principal que mejora la resolución judicial o responde preguntas.
140
+ """
141
+ # Construir el prompt
142
+ prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
143
+
144
+ # Generar la respuesta
145
+ respuesta = generar_respuesta(prompt)
146
+
147
+ # Validar la respuesta
148
+ sugerencias = validar_respuesta(respuesta, contexto=input_text, tarea="resolucion_judicial")
149
+
150
+ # Si la respuesta no es válida, generar una nueva respuesta
151
+ if sugerencias:
152
+ prompt = construir_prompt(input_text, contexto=input_text, tarea="resolucion_judicial")
153
+ respuesta = generar_respuesta(prompt)
154
+
155
+ return respuesta
156
+
157
+ # Interfaz Gradio
158
+ def gradio_interface(input_text):
159
+ return mejorar_resolucion(input_text)
160
+
161
+ iface = gr.Interface(
162
+ fn=gradio_interface,
163
+ inputs="text",
164
+ outputs="text",
165
+ title="Mejora de Resoluciones Judiciales",
166
+ description="Introduce una resolución judicial o una pregunta relacionada con derecho civil. El sistema mejorará el borrador o proporcionará una respuesta técnica y formal."
167
+ )
168
 
169
+ iface.launch(share=True)