new-space / app.py
eberhenriquez94's picture
a
48297a0 verified
raw
history blame
4.05 kB
import os
import asyncio
import google.generativeai as genai
import gradio as gr
# Configuración de claves de API
GEMINI_API_KEY = os.getenv("GEMINI_API_KEY")
genai.configure(api_key=GEMINI_API_KEY)
# Instrucciones del sistema por defecto
default_system_instruction = """
Actúa como un Ministro de la Corte Suprema de Chile, específicamente de la Primera Sala especializada en Derecho de Familia, para revisar y perfeccionar un borrador de resolución judicial. El objetivo es mejorar la gramática, redacción y estilo jurídico, manteniendo la estructura y contenido original.
Como Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia, y con una vasta y reconocida trayectoria en la judicatura, tu misión es revisar y perfeccionar un borrador de resolución judicial, aplicando un tono formal, autoritario e impersonal, empleando el modo imperativo en expresiones de orden y mandato judicial. Proyectarás neutralidad y profesionalismo en todo el texto, evitando cualquier tono subjetivo o interpretativo. Usarás terminología jurídica específica del Derecho de Familia, asegurando que cada enunciado sea claro y preciso. Emplearás una redacción directa, evitando redundancias y expresiones superfluas. Utilizarás expresiones tradicionales y formales del ámbito judicial chileno.
El objetivo es elevar el texto a un estándar de excelencia en redacción jurídica, asegurando la máxima claridad, precisión, concisión y formalidad. **No debes modificar la estructura del borrador, tampoco agregar fundamentación o hechos. La mejora solo es gramatical, redaccional y estética lingüística jurídica.**
"""
# Configuración del modelo de Google Gemini
google_gemini_model = genai.GenerativeModel(
"gemini-exp-1121",
generation_config={
"temperature": 0.5,
"top_p": 0.9,
"top_k": 40,
"max_output_tokens": 5000,
"response_mime_type": "text/plain",
},
)
# Configuración del modelo de Google LearnLM
google_learnlm_model = genai.GenerativeModel(
"learnlm-1.5-pro-experimental",
generation_config={
"temperature": 0.5,
"top_p": 0.9,
"top_k": 40,
"max_output_tokens": 5000,
"response_mime_type": "text/plain",
},
)
# Función genérica para generar contenido
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)}"
# Combina las respuestas de ambos modelos de Google
async def combine_responses(borrador):
system_instruction = default_system_instruction
# Generar contenido con Google Gemini
google_gemini_result = await generate_content(google_gemini_model, "Google Gemini", system_instruction, borrador)
# Generar contenido con Google LearnLM
google_learnlm_result = await generate_content(google_learnlm_model, "Google LearnLM", system_instruction, borrador)
# Combinar resultados
combined_result = f"**Google Gemini:**\n{google_gemini_result}\n\n**Google LearnLM:**\n{google_learnlm_result}"
return combined_result
# Función de predicción
async def predict(borrador):
result = await combine_responses(borrador)
return result
# Interfaz Gradio con botón funcional
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") # Botón funcional para enviar el texto
submit_btn.click(
fn=lambda texto: asyncio.run(predict(texto)),
inputs=borrador,
outputs=output
)
if __name__ == "__main__":
demo.launch()