Spaces:
Running
Running
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() |