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:
- Visita tu panel de OpenAI en https://platform.openai.com/settings/organization/general
- Busca la sección de Claves API y crea una nueva clave secreta
- 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:
- Visita https://supabase.com/dashboard/sign-up para crear una cuenta de Supabase si no tienes una.
- Una vez que hayas iniciado sesión, haz clic en "Nuevo Proyecto" y sigue las instrucciones para crear un nuevo proyecto.
- Después de que tu proyecto haya sido creado, se te llevará al panel del proyecto.
- 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
- En el panel de tu proyecto Supabase, busca la barra lateral y haz clic en la pestaña "Editor de Tablas".
- Haz clic en el botón "Crear una nueva tabla".
- Nombra tu tabla
MODERATION_TABLE
. - 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 queModerationOutput
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:
- Abre tu terminal o línea de comandos.
- Navega al directorio que contiene app.py.
- 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.
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.