Spaces:
Running
Running
File size: 3,873 Bytes
f03a8aa 86019ac 08d0f2d 7ddca68 127deef 70958f3 30d11b0 127deef 82b7c7c f1610d6 e03cc71 7961c85 76e4156 e03cc71 7961c85 127deef 08d0f2d f21b560 f7876dc f21b560 f7876dc 7961c85 08d0f2d 82b7c7c 30d11b0 f21b560 82b7c7c 30d11b0 137edac 30d11b0 137edac f7587f2 30d11b0 f21b560 30d11b0 137edac 5bcf9f5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
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 = """
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",
},
)
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() |