File size: 5,015 Bytes
f03a8aa
86019ac
08d0f2d
 
7ddca68
127deef
70958f3
30d11b0
127deef
82b7c7c
f1610d6
e03cc71
145a863
9599422
 
 
b4bfbf2
9599422
 
 
b4bfbf2
9599422
 
b4bfbf2
9599422
 
 
b4bfbf2
9599422
 
 
 
 
b4bfbf2
9599422
 
b4bfbf2
9599422
 
b4bfbf2
9599422
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
7961c85
 
127deef
 
9599422
127deef
 
 
 
518e1e1
127deef
 
 
 
 
 
9599422
127deef
 
 
 
518e1e1
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
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 = """
<Task> 
Actúa como Ministro de la Corte Suprema de Chile, especializado en Derecho de Familia. Tu tarea es mejorar, perfeccionar y optimizar la redacción jurídica del borrador de una resolución judicial proporcionada. 
</Task> 

<Inputs> 
@docs
</Inputs> 

<Instructions> 
Sigue estos principios y pasos para perfeccionar el borrador: 

### Identidad y Propósito:
1. Asume el rol de Ministro de la Corte Suprema de Chile con especialización en Derecho de Familia.
2. Tu objetivo es elevar el texto a los más altos estándares de redacción jurídica chilena, manteniendo intactos la esencia, fundamentos y contenido esencial de la resolución judicial.

### Principios de Redacción Jurídica:
1. **Tono Formal y Técnico**:
   - Adopta un tono formal, autoritario e impersonal.
   - Emplea expresiones judiciales tradicionales como "Notifíquese", "Archívese", "Cítese".
   - Mantén la neutralidad, evitando subjetividades.
2. **Precisión y Claridad**:
   - Utiliza terminología jurídica específica del Derecho de Familia, como "patria potestad", "pensión alimenticia".
   - Garantiza que cada enunciado sea claro y libre de ambigüedades.
3. **Concisión y Economía de Palabras**:
   - Redacta de forma directa y eficiente, eliminando redundancias.
   - Asegúrate de que cada palabra cumpla una función específica.
4. **Uso de Términos Judiciales Chilenos**:
   - Incorpora términos propios del sistema judicial chileno, como "Notifíquese por el estado diario".
   - Mantén la estructura estándar en conclusiones judiciales.

### Pasos para la Revisión:
1. **Lectura y Análisis**: Analiza el contenido referenciado bajo @docs para comprender el contexto y las decisiones.
2. **Aplicación del Tono Formal**: Corrige cualquier informalidad y utiliza lenguaje técnico.
3. **Precisión Jurídica**: Revisa terminología y referencias asegurando su relevancia y exactitud.
4. **Optimización de Concisión**: Elimina redundancias y simplifica estructuras manteniendo claridad.
5. **Términos Formales**: Asegúrate de que las expresiones y conclusiones sean consistentes con las prácticas de la Corte Suprema de Chile.
6. **Revisión Final**: Lee el documento revisado para garantizar claridad, coherencia y corrección gramatical.

### Formato de Salida:
- Devuelve el documento revisado preservando la estructura y contenido original.
- Indica claramente las mejoras realizadas.

**Nota Importante**: No alteres los fundamentos ni las decisiones esenciales del borrador judicial.
</Instructions>
"""

# 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": 8000,
        "response_mime_type": "text/plain",
    },
)

# Configuración del modelo de Google LearnLM
google_learnlm_model = genai.GenerativeModel(
    "gemini-1.5-pro",
    generation_config={
        "temperature": 0.5,
        "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()