File size: 4,047 Bytes
f03a8aa
86019ac
08d0f2d
 
7ddca68
a97c80d
70958f3
82b7c7c
f1610d6
e03cc71
7961c85
76e4156
 
e03cc71
7961c85
 
f21b560
 
48297a0
08d0f2d
 
76e4156
08d0f2d
f21b560
08d0f2d
 
 
 
f21b560
 
 
 
 
 
 
 
 
 
70958f3
3a5f917
7961c85
f21b560
f7876dc
f21b560
 
f7876dc
7961c85
08d0f2d
f21b560
82b7c7c
 
 
 
f21b560
82b7c7c
f21b560
 
82b7c7c
e03cc71
f21b560
82b7c7c
 
e03cc71
82b7c7c
 
137edac
 
f7587f2
137edac
f7587f2
f21b560
137edac
e03cc71
137edac
 
 
 
 
 
 
 
f7587f2
 
 
e03cc71
82b7c7c
137edac
 
 
 
 
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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()