AI

Construyendo un Agente de IA Inteligente para la Moderación de Contenidos con Salida Estructurada

AI content moderation agent  tutorial overview with structured output and function calling

Construyendo un Agente de IA Inteligente para la Moderación de Contenidos con Salida Estructurada

En este tutorial, exploraremos cómo crear un agente de IA inteligente que puede moderar contenido y generar informes estructurados. Utilizaremos las nuevas características de OpenAI para salida estructurada y llamadas a funciones para construir este sistema avanzado. Nuestro objetivo es desarrollar una IA que pueda analizar contenido de manera efectiva y proporcionar resultados detallados y organizados.

La Evolución de las Salidas de IA

OpenAI recientemente introdujo capacidades de salida estructurada, lo que ha cambiado la forma en que trabajamos con modelos de IA. Antes de esta actualización, los desarrolladores enfrentaban muchos desafíos al utilizar contenido generado por IA. Las respuestas eran generalmente solo texto plano o formatos JSON simples. Esto causó problemas tanto a desarrolladores como a empresas.

La falta de estructura en las salidas de IA a menudo conducía a información inconsistente. Los desarrolladores tenían que escribir código complejo para darle sentido a las respuestas de la IA, lo que tomaba mucho tiempo y podía llevar a errores. También era difícil controlar cómo la IA presentaba la información, lo que dificultaba el uso de estas salidas en sistemas existentes.

Estas limitaciones hicieron que fuera especialmente desafiante construir aplicaciones confiables para tareas que necesitaban datos estructurados y precisos. Los equipos que trabajaban en documentos legales, informes de cumplimiento y análisis de negocios se encontraban pasando más tiempo lidiando con las salidas de IA que realmente beneficiándose de ellas.

El Cambio de Juego: Salidas Estructuradas

Pero ahora, las cosas han cambiado. OpenAI ha introducido algo llamado "salidas estructuradas". Esto significa que la IA ahora puede darnos información en un formato que es mucho más fácil de usar. Imagina pedir una receta y recibir de vuelta una lista de ingredientes y pasos bien organizada, en lugar de solo un bloque de texto. Eso es el tipo de mejora de la que estamos hablando.

Para nuestro agente de moderación de contenido, esto es realmente emocionante. Ahora podemos pedirle a la IA tipos específicos de información en formatos exactos. ¿Necesitas cláusulas legales, números financieros o requisitos de cumplimiento? La IA puede proporcionar esto de manera estructurada que es fácil de manejar. Esto ahorra mucho tiempo y esfuerzo en el procesamiento y organización de la información.

Pero eso no es todo. OpenAI también ha agregado algo llamado "llamadas a funciones" a sus modelos de IA. Esto es como darle a nuestro agente de IA la capacidad de presionar botones y tirar de palancas basadas en la información que procesa. No solo proporciona datos; también puede tomar acciones.

Al combinar salidas estructuradas y llamadas a funciones, nuestro agente se vuelve increíblemente poderoso. Puede trabajar con múltiples fuentes de información, tomar decisiones complejas y crear informes muy personalizados. Es como tener un asistente súper inteligente que no solo puede entender información compleja, sino también hacer algo útil con ella.

Este tipo de IA puede ser realmente útil para empresas que necesitan revisar mucho contenido rápidamente. Puede ayudar a asegurar que el contenido cumpla con ciertos estándares, señalar problemas potenciales e incluso sugerir mejoras. Y dado que trabaja de manera rápida y consistente, puede liberar a los moderadores humanos para que se concentren en tareas más complejas.

En este tutorial, haremos un recorrido sobre cómo construir este tipo de agente de IA. Te mostraremos cómo configurarlo, cómo utilizar estas nuevas características y cómo hacerlo funcionar para tus necesidades específicas. Al final, tendrás una herramienta poderosa que puede ayudar con todo tipo de tareas de moderación de contenido.

Comencemos a Programar

Primero, crea un nuevo directorio para nuestro proyecto:

mkdir structuredOutput

A continuación, configuraremos un entorno virtual. Esto nos ayudará a gestionar las dependencias de nuestro proyecto por separado de otros proyectos de Python.

Para Windows:

python -m venv env

Para macOS y Linux:

python3 -m venv env

Con nuestro entorno virtual activado, instalemos las bibliotecas requeridas:

pip install openai supabase-py pydantic colorama

Ahora, crea un archivo app.py en el directorio structuredOutput. Este será el archivo principal de nuestro proyecto.

A continuación, crea un archivo .env en el mismo directorio. Este archivo almacenará nuestra información sensible como claves API. Agrega los siguientes marcadores de posición al archivo:

OPENAI_API_KEY=your_openai_api_key
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_key

No te preocupes si no tienes estas claves aún. En la siguiente sección, te guiaremos a través de la creación de una cuenta de Supabase, configurando una tabla y obteniendo las credenciales necesarias. También explicaremos cómo obtener tu clave API de OpenAI si aún no tienes una.

Al configurar nuestro entorno de esta manera, estamos asegurando que nuestro proyecto esté organizado, nuestras dependencias sean gestionadas y nuestra información sensible sea mantenida segura. Este enfoque nos prepara para el éxito a medida que avanzamos en la construcción de nuestro agente de salida estructurada.

Configurando las Claves API

Ahora que tenemos la estructura de nuestro proyecto en su lugar, obtengamos las claves API necesarias para nuestra aplicación.

Clave API de OpenAI

Para obtener tu clave API de OpenAI:

  1. Visita tu panel de OpenAI en https://platform.openai.com/settings/organization/general
  2. Busca la sección de Claves API y crea una nueva clave secreta
  3. Copia esta clave y pégala en tu archivo .env para la variable OPENAI_API_KEY

Introducción a Supabase

Supabase es una alternativa de código abierto a Firebase que proporciona un conjunto de herramientas para construir aplicaciones escalables y seguras. Ofrece una base de datos PostgreSQL, autenticación, API instantáneas y suscripciones en tiempo real, todo en un solo paquete.

Estamos utilizando Supabase en este proyecto por varias razones:

  • Fácil configuración: Supabase proporciona una interfaz fácil de usar para crear y gestionar bases de datos.
  • Poder de PostgreSQL: Está construido sobre PostgreSQL, dándonos acceso a una base de datos robusta y completa.
  • Capacidades en tiempo real: Supabase permite la sincronización de datos en tiempo real, lo que puede ser útil para la generación de documentos colaborativos.
  • Autenticación incorporada: Aunque no lo estamos utilizando en este tutorial, el sistema de autenticación de Supabase puede ser valioso para asegurar tu aplicación en el futuro.
  • Escalabilidad: Supabase está diseñado para escalar con tu aplicación, siendo adecuado tanto para pequeños proyectos como para implementaciones a gran escala.

Configurando Supabase

Ahora, configuremos tu proyecto Supabase:

  1. Visita https://supabase.com/dashboard/sign-up para crear una cuenta de Supabase si no tienes una.
  2. Una vez que hayas iniciado sesión, haz clic en "Nuevo Proyecto" y sigue las instrucciones para crear un nuevo proyecto.
  3. Después de que tu proyecto haya sido creado, se te llevará al panel del proyecto.
  4. En la barra lateral izquierda, haz clic en tu Página de Inicio del Proyecto y desplázate hacia abajo para encontrar la sección de API.

Aquí encontrarás la URL de tu proyecto y la clave API. Copia estos y agrégales a tu archivo .env para las variables SUPABASE_URL y SUPABASE_KEY respectivamente.

Tu archivo .env debería verse ahora algo así (con tus claves reales, por supuesto):

OPENAI_API_KEY=your_openai_api_key
SUPABASE_URL=your_supabase_url
SUPABASE_KEY=your_supabase_key

Próximos Pasos

¡Gran trabajo! Ahora has configurado las cuentas y claves API necesarias para nuestro proyecto. En la siguiente sección, nos adentraremos en la creación de nuestra tabla Supabase, seleccionando los campos apropiados y configurando el esquema para nuestro sistema de generación de documentos. Esto sentará las bases para almacenar y recuperar los datos estructurados con los que trabajará nuestro agente de IA.

Creando la Tabla de Supabase

Ahora que hemos configurado nuestro proyecto Supabase, vamos a crear la tabla que almacenará nuestros datos de moderación. Esta tabla será la columna vertebral de nuestro sistema de salida estructurada, permitiéndonos almacenar y recuperar resultados de moderación de manera eficiente.

Pasos para Crear la Tabla

  1. En el panel de tu proyecto Supabase, busca la barra lateral y haz clic en la pestaña "Editor de Tablas".
  2. Haz clic en el botón "Crear una nueva tabla".
  3. Nombra tu tabla MODERATION_TABLE.
  4. Desmarcar la opción "Habilitar seguridad a nivel de fila (RLS)" por ahora. (Nota: En un entorno de producción, querrías establecer reglas de seguridad adecuadas.)

Configurando el Esquema

Para nuestro proyecto de moderación, necesitamos un esquema específico que pueda acomodar varios aspectos de la moderación de contenido. En la interfaz de Supabase, verás una sección titulada "Columnas" con opciones para "Acerca de tipos de datos" y "Importar datos a través de una hoja de cálculo". Debajo de eso, encontrarás campos para "Nombre", "Tipo", "Valor predeterminado" y "Primario".

Este es el esquema que utilizaremos:

  • id (texto) - Establecer como Primario
  • content_id (texto)
  • status (texto)
  • content (texto)
  • reported_to (texto)
  • is_offensive (bool)
  • confidence_score (float4)
  • flagged_terms (texto)
  • created_at (timestamp) - Establecer el Valor Predeterminado a ahora()
  • moderation_result (texto)

Agrega cada una de estas columnas a tu tabla usando la interfaz de Supabase. Asegúrate de establecer el tipo de dato correcto para cada columna y marcar la columna id como la clave primaria.

Después de agregar todas las columnas, haz clic en el botón "Guardar" para crear tu tabla.

Próximos Pasos

Con nuestra tabla Supabase ahora configurada, tenemos una base sólida para almacenar la salida estructurada de nuestro agente de moderación de IA. En la siguiente sección, comenzaremos a construir el código en Python para interactuar con esta tabla, incluyendo funciones para insertar nuevas entradas de moderación y recuperar las existentes. Esto formará el núcleo de las capacidades de gestión de datos de nuestro sistema de moderación.

Entrando en la Programación Real

Desglosaremos este código en secciones y luego profundizaremos en cada función. Comenzaremos con las dos primeras secciones.

Importaciones y Configuración Inicial

Esta sección configura nuestro entorno importando las bibliotecas necesarias e inicializando componentes clave. Estamos usando Pydantic para la validación de datos, OpenAI para interacciones de IA y Supabase para operaciones de base de datos. Colorama se utiliza para la salida de consola en color, mejorando la legibilidad.

Operaciones de Base de Datos

Esta función, supabase_operation, es un ayudante versátil para interactuar con nuestra base de datos Supabase. Soporta varias operaciones como insertar, seleccionar, actualizar y eliminar. Desglosemos:

  • Comenzamos creando un objeto de consulta para nuestra MODERATION_TABLE.
  • Dependiendo de la operación (insertar, seleccionar, actualizar o eliminar), modificamos la consulta en consecuencia.
  • Si se proporcionan filtros, los aplicamos a la consulta. Esto permite operaciones de base de datos más específicas.
  • Finalmente, ejecutamos la consulta y devolvemos el resultado.

Esta función abstrae las complejidades de las operaciones de base de datos, facilitando realizar varias acciones en nuestros datos de moderación a lo largo del resto del código.

Modelos de Datos y Funciones de Moderación

Examinemos la siguiente sección de nuestro código, que define nuestros modelos de datos y funciones de moderación centrales.

Esta sección define las estructuras y funciones centrales para nuestro sistema de moderación:

  • Modelos Pydantic: Usamos Pydantic para definir modelos de datos estructurados. ModerationResult representa la salida central de moderación, mientras que ModerationOutput incluye metadatos adicionales sobre el contenido moderado.
  • Función moderate_text: Esta es nuestra función principal de moderación. Así es como funciona:
def moderate_text(content_id: str, content: str) -> ModerationOutput:
    # Verificar el contenido contra una lista de términos ofensivos
    # Calcular si el contenido es ofensivo y asignar un puntaje de confianza
    # Insertar el resultado en Supabase
    return result

La Función de Bloqueo de Contenido y de Advertencia

La función block_content toma un content_id como entrada. Está diseñada para marcar contenido como bloqueado cuando se considera demasiado ofensivo. Esta función crea un registro en nuestra base de datos indicando que el contenido ha sido bloqueado, junto con el motivo. Es una función crucial para mantener estándares de contenido en una plataforma.

La función issue_warning se utiliza para contenido que es borderline inapropiado. También toma un content_id y registra una advertencia en la base de datos. Esta función es útil para rastrear usuarios que publican contenido cuestionable con frecuencia o para dar a los usuarios la oportunidad de modificar su comportamiento antes de que se tomen acciones más severas.

La función report_to_human es nuestra opción de respaldo para casos complejos. Esta función señala contenido para revisión por un moderador humano, lo cual es esencial para manejar situaciones matizadas que la IA podría no estar equipada para juzgar con precisión.

Inicializando el Cliente y Definiendo los Esquemas

Primero, inicializamos el cliente de OpenAI. Este cliente es nuestra puerta de entrada para interactuar con los poderosos modelos de lenguaje de OpenAI. La clave API es crucial, ya que autentica nuestras solicitudes a los servicios de OpenAI.

Ahora, veamos cada esquema de función individualmente:

  • El esquema moderate_text_function define cómo nuestra IA debería entender y usar nuestra función principal de moderación.
  • El esquema block_content_function se utiliza cuando el contenido necesita ser bloqueado de inmediato.
  • El esquema issue_warning_function describe cómo emitir una advertencia para contenido borderline.
  • El esquema report_to_human_function se utiliza cuando la IA determina que es necesaria la intervención humana.

Finalmente, compilamos todos estos esquemas de función en una sola lista. Esta lista representa el kit de herramientas completo disponible para nuestra IA para la moderación de contenido.

Configuración Inicial de Mensajes

Esta sección inicializa la lista de mensajes, que es crucial para mantener el contexto de la conversación con la IA:

  • El primer mensaje establece el rol del sistema, definiendo el comportamiento de la IA como asistente de moderación de contenido.
  • El segundo mensaje simula una entrada inicial del usuario para comenzar la conversación.

Estos mensajes proporcionan el contexto inicial para la IA, preparando el escenario para el proceso de moderación.

Bucle Principal de Conversación

El corazón de nuestro sistema de moderación de contenidos es el bucle principal de conversación. Este bucle gestiona la interacción continua entre el usuario y la IA, manejando la entrada, procesando respuestas y ejecutando acciones de moderación.

Inicialización

El bucle comienza con una fase de inicialización. Imprimimos un mensaje de bienvenida para señalar que el sistema de moderación está listo. Esto le da al usuario una indicación clara de que pueden empezar a interactuar con el sistema. El uso de texto en color mejora la experiencia del usuario.

A continuación, entramos en un bucle infinito while, permitiendo a nuestro sistema aceptar y procesar continuamente la entrada del usuario hasta que se le indique explícitamente que se detenga.

Manejo de la Entrada del Usuario

En cada iteración, manejamos la entrada del usuario. El sistema solicita la entrada del usuario con un prefijo verde "Usuario:". Luego verificamos si el usuario quiere salir de la conversación comparando su entrada con una lista de comandos de salida.

Análisis de Contenido

Con la entrada del usuario capturada, pasamos a la fase de análisis. Indicamos que el análisis del contenido está en progreso y añadimos una breve pausa para una mejor experiencia de usuario. El sistema luego envía una solicitud a la API de OpenAI, pasando toda la historia de la conversación, funciones disponibles y especificando que la IA puede decidir si llamar a una función.

Procesamiento de Respuestas

Después de recibir la respuesta de la API, la procesamos. Verificamos si la IA decidió llamar a una función. Dependiendo de la función llamada, se toman diferentes acciones:

  • Para la moderación de texto, llamamos a la función moderate_text y procesamos su resultado.
  • Otras funciones manejan acciones como bloquear contenido, emitir advertencias o reportar a moderadores humanos.

Manejo de Errores y Conclusión

Esta sección gestiona excepciones y proporciona una actualización de estado final. La declaración de impresión final, independientemente de los errores, confirma que el registro de moderación se ha guardado en la base de datos.

Ejecutando el Agente

Para ejecutar el agente de moderación de contenido, sigue estos pasos:

  1. Abre tu terminal o línea de comandos.
  2. Navega al directorio que contiene app.py.
  3. Ejecuta el siguiente comando:
python app.py

Flujo de Trabajo del Agente

En una aplicación de la vida real, este agente probablemente formaría parte de un sistema asíncrono más grande que maneja mensajes de alto volumen en chats o en plataformas de redes sociales.

  • Cada mensaje se enviaría a este agente para moderación.
  • Los mensajes podrían ser permitidos, bloqueados o señalados para revisión según los resultados de la moderación.

Conclusión

En este tutorial, hemos construido un sistema sofisticado de moderación de contenido impulsado por IA utilizando las capacidades de salida estructurada y llamadas a funciones de OpenAI. Este sistema demuestra cómo:

  • Configurar un entorno de desarrollo para aplicaciones impulsadas por IA
  • Integrar la API de OpenAI para un procesamiento avanzado del lenguaje
  • Implementar una solución de base de datos utilizando Supabase para registro y persistencia de datos
  • Crear un ciclo de moderación de contenido robusto e interactivo

Este proyecto sirve como base para construir sistemas de IA más complejos, mostrando el potencial de estas tecnologías en aplicaciones prácticas.

Puede que te interese

A visual representation of AI-driven customer service solutions using TruLens and OpenAI's GPT-4 Turbo.
Screenshot of Google Generative AI Studio interface showcasing prompts and features.

Dejar un comentario

Todos los comentarios se revisan antes de su publicación.

Este sitio está protegido por hCaptcha y se aplican la Política de privacidad de hCaptcha y los Términos del servicio.