AI Agent

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

An intelligent AI agent analyzing content for moderation with structured output.

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

En este tutorial, exploraremos cómo crear un agente de IA inteligente que pueda moderar contenido y generar informes estructurados. Usaremos las nuevas funciones de OpenAI para salida estructurada y llamada a funciones para construir este sistema avanzado. Nuestro objetivo es desarrollar una IA que pueda analizar el 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, que han cambiado la forma en que trabajamos con modelos de IA. Antes de esta actualización, los desarrolladores enfrentaban muchos desafíos al usar contenido generado por IA. Las respuestas eran generalmente solo texto plano o formatos JSON simples. Esto causaba problemas tanto para los desarrolladores como para las 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 entender 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.

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 una lista ordenada de ingredientes y pasos, en lugar de solo un bloque de texto. Esa es la clase 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 estos de manera estructurada que es fácil de trabajar. 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 añadido algo llamado "llamada a funciones" a sus modelos de IA. Esto es como darle a nuestro agente de IA la capacidad de presionar botones y tirar palancas en función de 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 altamente personalizados. Es como tener un asistente súper inteligente que no solo puede entender información compleja, sino que también puede hacer algo útil con ella. Este tipo de IA puede ser realmente útil para las 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 como trabaja de manera rápida y consistente, puede liberar a los moderadores humanos para que se enfoquen en tareas más complejas.

Comencemos a codificar

Primero, crea un nuevo directorio para nuestro proyecto:

mkdir structuredOutput

Luego, configuremos un entorno virtual. Esto nos ayudará a manejar 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

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

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

OPENAI_API_KEY=
SUPABASE_URL=
SUPABASE_KEY=

No te preocupes si no tienes estas claves todavía. En la siguiente sección, te guiaremos para crear una cuenta en Supabase, configurar una tabla y obtener las credenciales necesarias. También explicaremos cómo obtener tu clave API de OpenAI si no tienes una ya.

Configurando Claves API

Ahora que tenemos nuestra estructura de 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 Panel de OpenAI.
  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 Firebase de código abierto que proporciona un conjunto de herramientas para construir aplicaciones escalables y seguras. Ofrece una base de datos PostgreSQL, autenticación, APIs instantáneas y suscripciones en tiempo real, todo en un solo paquete.

Estamos usando Supabase en este proyecto por varias razones:

  • Fácil configuración: Supabase proporciona una interfaz fácil de usar para crear y administrar 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 colaborativa de documentos.
  • Autenticación integrada: Aunque no la estamos usando 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, haciéndolo adecuado tanto para proyectos pequeños como para implementaciones a gran escala.

Configurando Supabase

Ahora, configuremos tu proyecto Supabase:

  1. Visita Registro en Supabase para crear una cuenta en Supabase si aún no tienes una.
  2. Una vez que hayas iniciado sesión, haz clic en "Nuevo Proyecto" y sigue las indicaciones para crear un nuevo proyecto.
  3. Después de que tu proyecto sea creado, serás llevado al panel del proyecto.
  4. En la barra lateral izquierda, haz clic en la Página de Inicio de tu Proyecto y desplázate hacia abajo para encontrar la sección api.
  5. Aquí, encontrarás tu URL de proyecto y clave API. Copia estas y agrégalas a tu archivo .env para las variables SUPABASE_URL y SUPABASE_KEY respectivamente.

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

OPENAI_API_KEY=
SUPABASE_URL=
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 Supabase

Ahora que tenemos nuestro proyecto Supabase configurado, creemos 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 del 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. Nombrar tu tabla MODERATION_TABLE.
  4. Desmarca 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 apropiadas).

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 "Sobre los tipos de datos" e "Importar datos a través de una hoja de cálculo". Debajo de eso, encontrarás campos para "Nombre", "Tipo", "Valor por Defecto" y "Principal".

Aquí está el esquema que utilizaremos:

  • id (texto) - Establecer como Principal
  • content_id (texto)
  • status (texto)
  • content (texto)
  • reported_to (texto)
  • is_offensive (bool)
  • confidence_score (float4)
  • flagged_terms (texto)
  • created_at (timestamp) - Establecer Valor por Defecto a ahora()
  • moderation_result (texto)

Añade cada una de estas columnas a tu tabla usando la interfaz de Supabase. Asegúrate de establecer el tipo de datos 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, incluidas 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 Codificación Real

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

Importaciones y Configuración Inicial

Esta sección configura nuestro entorno importando las bibliotecas necesarias e inicializando componentes clave. Usamos Pydantic para la validación de datos, OpenAI para interacciones de IA y Supabase para operaciones de bases de datos. Colorama se utiliza para la salida de consola coloreada, 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. Vamos a desglosarlo:

  • 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 más específicas en la base de datos.
  • Finalmente, ejecutamos la consulta y devolvemos el resultado.

Esta función abstrae las complejidades de las operaciones de bases de datos, facilitando la realización de varias acciones sobre 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 principales de moderación.

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

  • Modelos de 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. Aquí está cómo funciona:
    • Toma un content_id y el contenido a moderar.
    • Verifica el contenido contra una lista de términos ofensivos predefinidos.
    • Calcula si el contenido es ofensivo y asigna un puntaje de confianza.
    • El resultado se formatea en un diccionario que coincide con nuestro modelo ModerationOutput.
    • El resultado se inserta luego en nuestra base de datos Supabase usando la función supabase_operation que definimos anteriormente.
    • Finalmente, devuelve el resultado de moderación.
  • Esta función forma el núcleo de nuestro sistema de moderación. Es una versión simplificada que podría expandirse con técnicas de moderación más sofisticadas, como modelos de aprendizaje automático o conjuntos de reglas más complejos.
  • El uso de modelos de Pydantic asegura que nuestros datos estén estructurados de manera consistente a lo largo de la aplicación, facilitando el trabajo con ellos y la validación.

Funciones de Bloqueo e Informe

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 la razón. Es una función crucial para mantener los estándares de contenido en una plataforma.

La función issue_warning se utiliza para contenido que está en el límite de ser inapropiado. También toma un content_id y registra una advertencia en la base de datos. Esta función es útil para rastrear a los 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. Toma tanto el content_id como el contenido en sí. 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.

Cada una de estas funciones devuelve un diccionario que contiene información sobre la acción tomada. Todas utilizan nuestra función supabase_operation para insertar registros en la base de datos, asegurando que todas las acciones de moderación estén registradas y sean rastreables.

Estas funciones trabajan juntas para crear un sistema de moderación integral, permitiendo flexibilidad y matices en la moderación de contenido.

Inicialización y Definición del Esquema

Ahora necesitamos inicializar el cliente y definir nuestros 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.

Definiciones de Esquemas de Función

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 por completo.
  • El esquema issue_warning_function describe cómo emitir una advertencia para contenido que está en el límite.
  • El esquema report_to_human_function se utiliza cuando la IA determina que es necesaria la intervención humana.

Compilamos todos estos esquemas de funciones en una sola lista, representando el conjunto completo de herramientas disponibles 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 conversación con la IA:

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

Ciclo Principal de Conversación

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

1. Inicialización

El ciclo comienza con una fase de inicialización. Imprimimos un mensaje de bienvenida para señalar que el sistema de moderación está listo, dando al usuario una clara indicación de que puede comenzar a interactuar.

2. Manejo de Entrada del Usuario

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

3. Análisis del Contenido

Con la entrada del usuario capturada, enviamos 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.

4. Procesamiento de Respuestas

Después de recibir la respuesta de la API, la procesamos. Verificamos si la IA decidió llamar a una función. Si es así, extraemos el nombre de la función y los argumentos, preparándonos para ejecutar la acción de moderación apropiada.

5. Ejecución de Funciones

Dependiendo de la función llamada, se toman diferentes acciones, como bloquear contenido o emitir advertencias. Cada acción se ejecuta y su resultado se imprime para que el usuario lo vea.

6. Compleción del Ciclo y Manejo de Errores

Esta sección gestiona excepciones y proporciona una actualización final del estado. Confirmamos que el registro de moderación ha sido guardado en la base de datos, asegurando que los usuarios sean informados tanto de errores como de la finalización exitosa del proceso de moderación.

Ejecutando el Agente

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

  1. Abre tu terminal o símbolo del sistema.
  2. Navega al directorio que contiene app.py.
  3. Ejecuta el siguiente comando: python app.py.

Esto iniciará el agente, y verás el mensaje de inicialización. Luego puedes comenzar a interactuar con el sistema escribiendo tus mensajes.

Flujo de Trabajo del Agente

En una aplicación de la vida real, este agente sería parte de un sistema más grande y asíncrono:

  • Cada mensaje en un chat o plataforma de redes sociales sería enviado a este agente para moderación.
  • El agente procesaría cada mensaje de manera asíncrona, permitiendo la moderación en tiempo real y de alto volumen.

Según la decisión del agente, los mensajes podrían permitirse pasar de inmediato, bloquearse para que no se publiquen, señalarse para revisión humana o desencadenar advertencias en cuentas de usuarios. Los resultados de moderación se registrarían en la base de datos para auditoría y mejora del sistema a lo largo del tiempo.

Conclusión

En este tutorial, hemos construido un sofisticado sistema de moderación de contenido impulsado por IA utilizando las capacidades de salida estructurada y llamada a funciones de OpenAI. Los puntos clave incluyen:

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

Este proyecto sirve como base para construir sistemas de IA más complejos y muestra el potencial de combinar salidas estructuradas con llamadas a funciones en aplicaciones prácticas. A medida que la tecnología de IA continúa evolucionando, estos sistemas desempeñarán un papel crucial en mantener ambientes en línea seguros y productivos.

Puede que te interese

AI-driven customer service solutions with TruLens and OpenAI Turbo
A tutorial on using Google’s Generative AI Studio 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.