Crea un Asistente de Redacción con APEX_AI

Tiempo de lectura: 2 minutos

¿Cuántas veces has visto un campo de “Observaciones” en tu sistema con textos como “cliente enojado llamar luego” o “el pedido llego mal”?

Como desarrolladores, solemos validar que el campo no esté vacío, pero rara vez validamos la calidad del contenido. En Oracle APEX 24.2, podemos solucionar esto sin crear microservicios complejos. Vamos a usar el paquete APEX_AI para convertir notas rápidas y sucias en resúmenes ejecutivos impecables.

El Objetivo

Queremos transformar un campo de texto simple en un “Editor Inteligente” donde el usuario pueda escribir ideas sueltas y, con un clic, la IA las reescriba con tono profesional.

Paso 1: Workspace Utilities

Lo primero es la seguridad. No queremos hardcodear API Keys en nuestro código PL/SQL.

  1. Ve a App Builder > Workspace Utilities > Generative AI.
  2. Crea un nuevo servicio (puedes usar OpenAI, Cohere o OCI Generative AI).
  3. Clave: Dale un Static ID fácil de recordar, por ejemplo: MY_AI_SERVICE.
  4. APEX guardará las credenciales en su bóveda segura (Web Credentials).

Paso 2: La Interfaz (UI)

En tu página de APEX (digamos, pág 10), crea:

  1. Text Area (Input): P10_RAW_NOTES (Donde el usuario escribe “mal”).
  2. Select List (Opcional): P10_TONE con valores: 'Formal', 'Directo', 'Empático'.
  3. Botón: “✨ Mejorar Texto”.
  4. Text Area (Output): P10_POLISHED_NOTES (Donde va la magia).

Paso 3: El Código

Olvídate de APEX_WEB_SERVICE.MAKE_REST_REQUEST y de parsear JSON manualmente. En APEX 24.2, la IA es nativa.

Crea una Dynamic Action en el botón “Mejorar Texto”:

  • Action: Execute Server-side Code.
  • Items to Submit: P10_RAW_NOTES, P10_TONE.
  • Items to Return: P10_POLISHED_NOTES.

Código PL/SQL:

SQL

DECLARE
    l_response CLOB;
    l_system_prompt VARCHAR2(4000);
BEGIN
    -- 1. Definimos la "Personalidad" del Asistente
    -- Usamos el System Prompt para darle contexto estricto.
    l_system_prompt := 'Actúa como un secretario ejecutivo experto. ' ||
                       'Tu tarea es reescribir el texto del usuario para que sea claro, ' ||
                       'profesional y gramaticalmente perfecto en Español. ' ||
                       'Mantén los datos fácticos, elimina jerga coloquial y usa un tono ' || 
                       NVL(:P10_TONE, 'Formal') || '.';

    -- 2. Llamada Nativa (APEX 24.2)
    -- Nota: 'MY_AI_SERVICE' es el Static ID que definimos en Workspace Utilities.
    l_response := apex_ai.generate(
        p_prompt            => :P10_RAW_NOTES,
        p_service_static_id => 'MY_AI_SERVICE',
        p_system_prompt     => l_system_prompt,
        p_temperature       => 0.4, -- Bajo para ser preciso, no creativo
        p_max_tokens        => 500
    );

    -- 3. Entregamos el resultado
    :P10_POLISHED_NOTES := l_response;

EXCEPTION
    WHEN OTHERS THEN
        -- Gestión de errores 
        apex_error.add_error(
            p_message => 'El asistente está tomando un café (Error de IA): ' || SQLERRM,
            p_display_location => apex_error.c_inline_in_notification
        );
END;

Todo sin usar web services en Python o Java

  1. Latencia: La llamada sale directamente desde la base de datos hacia el proveedor de IA. No hay saltos intermedios (Browser -> App Server -> Python Microservice -> OpenAI).
  2. Contexto de Sesión: Podrías concatenar fácilmente datos de otras tablas en el prompt (ej: “Ten en cuenta que este cliente es VIP”) usando simples SELECT INTO.
  3. Mantenimiento: Si cambias de OpenAI a OCI GenAI (Llama 3), solo cambias la configuración en Workspace Utilities. Cero cambios de código.

Conclusión

La IA en el desarrollo empresarial no tiene por qué ser agentes autónomos complejos. A veces, la mayor victoria rápida (quick win) es simplemente ayudar a tus usuarios a comunicarse mejor. Con APEX_AI, esto te toma literalmente 10 minutos implementar.

Post a Comment

Your email address will not be published. Required fields are marked *