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()