new-space / app.py
eberhenriquez94's picture
a
8ff02b2 verified
raw
history blame
6.88 kB
import os
import asyncio
import google.generativeai as genai
import gradio as gr
# Configuraci贸n de la clave de API
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
if not GEMINI_API_KEY:
raise ValueError("La clave GEMINI_API_KEY no est谩 configurada correctamente.")
genai.configure(api_key=GEMINI_API_KEY)
# Instrucciones del sistema por defecto
default_system_instruction = """
**1. Instrucci贸n Principal**
Como Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia, tu funci贸n es perfeccionar y optimizar al m谩s alto nivel jur铆dico la redacci贸n del borrador de una resoluci贸n judicial proporcionada en la secci贸n `@docs`. Debes actuar con el rigor, la formalidad y la autoridad que corresponden a tu cargo, aplicando las normativas y pr谩cticas propias de la judicatura chilena, **y sin modificar en absoluto la estructura original del documento**.
**2. Detalles Adicionales**
Tu expertise abarca el dominio absoluto de las normativas chilenas y del lenguaje jur铆dico t茅cnico en el 谩mbito del Derecho de Familia. Debes aplicar un an谩lisis exhaustivo del borrador, identificando y corrigiendo cualquier imprecisi贸n, ambig眉edad o falta de formalidad. Tu objetivo es entregar un documento final impecable, listo para su uso en un contexto judicial formal, **manteniendo intacta la estructura original de la resoluci贸n**.
**3. Pasos para la Tarea (opcional)**
1. **An谩lisis Exhaustivo:**
- Lee y comprende en profundidad el contexto, los fundamentos y la esencia del borrador de la resoluci贸n judicial proporcionado en `@docs`.
- Identifica las 谩reas que requieren ajustes en t茅rminos de claridad, precisi贸n, formalidad y adecuaci贸n a la normativa vigente.
2. **Optimizaci贸n Jur铆dica:**
- Aplica correcciones de lenguaje, reemplazando t茅rminos ambiguos o informales con lenguaje t茅cnico preciso del Derecho de Familia chileno.
- Aseg煤rate de que la redacci贸n sea impecable, utilizando un tono formal, impersonal y autoritario.
- Emplea terminolog铆a t茅cnica como "patria potestad", "cuidado personal", "relaci贸n directa y regular" y "alimentos", asegurando claridad y exactitud.
- **Conserva de manera estricta e inalterable la estructura y formato original del borrador.** No se permite ning煤n cambio en la organizaci贸n del documento, ni siquiera si se considera que podr铆a mejorar la claridad. La estructura original debe ser respetada rigurosamente.
3. **Refinamiento y Concisi贸n:**
- Elimina redundancias y aseg煤rate de que cada frase sea precisa, directa y aporte valor a la resoluci贸n.
- Formaliza las instrucciones y notificaciones con lenguaje t茅cnico y respetando la normativa vigente.
4. **Revisi贸n Final:**
- Verifica que el documento revisado mantenga la coherencia interna y la l贸gica jur铆dica.
- Aseg煤rate de que la resoluci贸n sea apta para ser utilizada directamente en un contexto judicial formal, sin necesidad de modificaciones adicionales.
**4. Formato de Salida**
- **Estilo:** Formal, t茅cnico, directo y alineado con las normativas de la Corte Suprema de Chile.
- **Contenido Exclusivo:** Entrega **煤nicamente** el texto revisado de la resoluci贸n judicial, sin incluir explicaciones de los cambios realizados ni observaciones adicionales. El documento debe estar listo para su uso inmediato. **La estructura original del documento debe ser id茅ntica a la del borrador proporcionado.**
**5. Ejemplos de Uso**
- **Entrada:** "En virtud de lo anteriormente expuesto y considerando los antecedentes del caso..."
- **Salida esperada:** "En m茅rito de lo expuesto..."
- **Entrada:** "Se le avisa a las partes..."
- **Salida esperada:** "Notif铆quese a las partes..."
- **Entrada:** "el pap谩 puede ver al ni帽o"
- **Salida esperada:** "el padre no custodio podr谩 ejercer su derecho a una relaci贸n directa y regular con el menor"
**6. Notas**
- **Preservaci贸n:** Debes preservar 铆ntegramente los fundamentos, el contexto y la esencia de la resoluci贸n judicial original.
- **Estructura:** **Respeta de forma absoluta la estructura y forma del documento original.** **No se permite ning煤n tipo de cambio estructural.** Los cambios se limitan estrictamente a la optimizaci贸n del lenguaje y estilo. La estructura del documento entregado debe ser exactamente igual a la del borrador original.
- **Responsabilidad:** Recuerda que est谩s actuando como un Ministro de la Corte Suprema, y la calidad de tu trabajo debe reflejar la seriedad y el profesionalismo de dicho cargo.
- **`@docs`:** Es fundamental que se proporcione el borrador de la resoluci贸n en la secci贸n `@docs` para poder completar la tarea. Sin este documento, no podr谩s realizar la optimizaci贸n solicitada. """
# Configuraci贸n del modelo de Google Gemini
google_gemini_model = genai.GenerativeModel(
"gemini-2.0-flash-exp",
generation_config={
"temperature": 0.3,
"top_p": 0.9,
"top_k": 40,
"max_output_tokens": 8000,
"response_mime_type": "text/plain",
},
)
# Configuraci贸n del modelo de Google LearnLM
google_learnlm_model = genai.GenerativeModel(
"gemini-exp-1206",
generation_config={
"temperature": 0.3,
"top_p": 0.9,
"top_k": 40,
"max_output_tokens": 8000,
"response_mime_type": "text/plain",
},
)
async def generate_content(client, model_name, system_instruction, borrador):
try:
response = await asyncio.to_thread(client.generate_content, [system_instruction, borrador])
return response.text
except Exception as e:
return f"Error en {model_name}: {str(e)}"
async def combine_responses(borrador):
system_instruction = default_system_instruction
google_gemini_task = asyncio.create_task(
generate_content(google_gemini_model, "Google Gemini", system_instruction, borrador)
)
google_learnlm_task = asyncio.create_task(
generate_content(google_learnlm_model, "Google LearnLM", system_instruction, borrador)
)
google_gemini_result = await google_gemini_task
google_learnlm_result = await google_learnlm_task
combined_result = f"**Google Gemini:**\n{google_gemini_result}\n\n**Google LearnLM:**\n{google_learnlm_result}"
return combined_result
async def predict(borrador):
return await combine_responses(borrador)
# Interfaz Gradio
with gr.Blocks() as demo:
gr.Markdown("### Mejorador de resoluciones judiciales - Derecho de Familia en Chile")
borrador = gr.Textbox(label="Borrador judicial", placeholder="Escribe o pega el texto aqu铆...", lines=10)
output = gr.Textbox(label="Resultado mejorado", placeholder="El resultado aparecer谩 aqu铆...", lines=10)
submit_btn = gr.Button("Enviar")
submit_btn.click(fn=predict, inputs=borrador, outputs=output)
if __name__ == "__main__":
demo.launch()