
Cómo agregar moderación de contenido a su chatbot o agente de IA

Agregar moderación de contenido a un chatbot o agente de IA no se limita a bloquear palabras inapropiadas. Un flujo de trabajo en producción necesita verificar las entradas del usuario, las salidas del modelo y las acciones que el agente tiene permitido ejecutar.
El modelo mental más seguro es:
input moderation
-> model or agent reasoning
-> tool-call validation
-> output moderation
-> allow / review / blockResumen rápido
- Modere las entradas del usuario antes de que lleguen a su chatbot o agente.
- Modere las salidas del modelo antes de que los usuarios las vean.
- Valide las llamadas a herramientas antes de que un agente ejecute acciones.
- No trate la moderación de contenido como una defensa completa contra prompt injection.
- Utilice revisión humana para casos de riesgo medio o de alto impacto.
- El campo
evolink_summary.risk_levelde EvoLink puede simplificar la lógica de permitir / revisar / bloquear.
La moderación de contenido no es lo mismo que la seguridad de agentes
La moderación de contenido ayuda a identificar texto o imágenes dañinas. Puede reducir el riesgo de prompts inseguros, salidas perjudiciales y contenido de usuarios que viola políticas.
La seguridad de agentes es más amplia. Incluye prompt injection, permisos de herramientas, acceso a datos, aprobaciones humanas, salidas estructuradas, evaluaciones, registro de eventos y diseño de flujos de trabajo.
La guía de seguridad de agentes de OpenAI recomienda combinar técnicas como barreras de protección, aprobaciones de herramientas, calificación de trazas, evaluaciones y diseño de flujos de trabajo estructurados. OWASP también trata prompt injection como un riesgo de seguridad de LLM independiente que puede provocar fuga de datos, acciones no deseadas o uso indebido de herramientas.
Fuentes:
La conclusión: la moderación es una barrera de protección. No debe ser la única.
Capa 1: moderación de entradas
La moderación de entradas verifica el mensaje del usuario antes de que llegue al modelo.
Utilícela para detectar:
- solicitudes claramente dañinas
- mensajes de usuario que violan políticas
- texto abusivo o de acoso
- cargas de imágenes inseguras
- prompts que solicitan contenido no permitido
La moderación de entradas es útil porque evita que las solicitudes evidentemente inseguras ingresen al flujo de trabajo del modelo.
def handle_user_message(user_input: str):
input_check = client.moderations.create(
model="evolink-moderation-1.0",
input=user_input
)
if input_check.evolink_summary.risk_level == "high":
return {
"status": "blocked",
"message": "I can't help with that request."
}
return run_chatbot(user_input)Limitación importante: la moderación de entradas no es una defensa completa contra prompt injection. Los atacantes pueden utilizar prompts indirectos, texto codificado, imágenes, documentos externos o salidas de herramientas para influir en los agentes en etapas posteriores del flujo de trabajo.
Capa 2: moderación de salidas
La moderación de salidas verifica la respuesta del modelo antes de que llegue al usuario.
Utilícela para detectar:
- contenido generado inseguro
- respuestas que violan políticas
- consejos perjudiciales en dominios sensibles
- respuestas que pasaron los filtros a pesar de que la entrada parecía segura
def safe_chat(user_input: str):
input_check = moderate(user_input)
if input_check.evolink_summary.risk_level == "high":
return "I can't help with that request."
answer = llm.generate(user_input)
output_check = moderate(answer)
if output_check.evolink_summary.risk_level == "high":
return "I generated a response that needs to be revised. Please try rephrasing."
return answerLa moderación de salidas es especialmente útil para chatbots públicos, copilotos de IA y flujos de trabajo de generación de contenido donde la respuesta del modelo es visible para el usuario.
Capa 3: validación de llamadas a herramientas
Para agentes de IA, las llamadas a herramientas suelen ser la capa de mayor riesgo.
Si un agente puede enviar correos electrónicos, consultar bases de datos, actualizar tickets, llamar a APIs o escribir archivos, la llamada a la herramienta debe validarse antes de su ejecución. Esto no es solo moderación. Es autorización y aplicación de políticas.
Valide:
- nombre de la herramienta
- alcance permitido del usuario o cuenta
- aprobación humana requerida
- valores de parámetros permitidos
- operaciones de lectura vs escritura
- destinatarios externos
- acciones destructivas
- riesgo de exfiltración de datos
def validate_tool_call(tool_name: str, args: dict, user_context: dict):
if tool_name == "send_email":
if not args["to"].endswith("@company.com"):
return False, "External email requires approval."
if tool_name == "database_query":
query = args.get("query", "")
forbidden = ["DROP ", "DELETE ", "TRUNCATE "]
if any(word in query.upper() for word in forbidden):
return False, "Destructive database operation blocked."
if tool_name == "refund_customer":
if args["amount"] > user_context["approval_limit"]:
return False, "Refund amount requires human approval."
return True, NoneLa guía de seguridad de agentes de OpenAI también recomienda mantener habilitadas las aprobaciones de herramientas para herramientas MCP, de modo que los usuarios finales puedan revisar y confirmar las operaciones.
Capa 4: enrutamiento permitir / revisar / bloquear
La moderación binaria seguro/inseguro suele ser demasiado rudimentaria. Un patrón de producción más útil es:
| Riesgo | Acción |
|---|---|
| Bajo | permitir |
| Medio | poner en cola para revisión, advertir o limitar la distribución |
| Alto | bloquear o requerir apelación |
evolink_summary.risk_level diseñado para este tipo de enrutamiento.def route_by_risk(content: str):
result = client.moderations.create(
model="evolink-moderation-1.0",
input=content
)
risk = result.evolink_summary.risk_level
if risk == "high":
log_block(result)
return {"action": "block"}
if risk == "medium":
queue_for_review(content, result)
return {"action": "review"}
return {"action": "allow"}Patrón completo de moderación para chatbots
A continuación se presenta una estructura práctica de extremo a extremo:
def handle_chatbot_turn(user_input: str, user_context: dict):
# 1. Moderate input
input_route = route_by_risk(user_input)
if input_route["action"] == "block":
return "I can't help with that request."
if input_route["action"] == "review":
log_review_event("input", user_input)
# 2. Generate model response and proposed tool calls
agent_result = agent.run(user_input, user_context)
# 3. Validate tool calls before execution
for call in agent_result.tool_calls:
ok, reason = validate_tool_call(call.name, call.args, user_context)
if not ok:
log_security_event(call, reason)
return "That action requires additional review."
# 4. Execute approved tools
tool_outputs = execute_tool_calls(agent_result.tool_calls)
# 5. Generate final response
final_answer = agent.format_response(tool_outputs)
# 6. Moderate output
output_route = route_by_risk(final_answer)
if output_route["action"] == "block":
return "I need to revise that response."
if output_route["action"] == "review":
queue_for_review(final_answer, output_route)
return final_answerLa implementación exacta variará, pero la estructura es estable: verificar la entrada, restringir las acciones, verificar la salida y registrar las decisiones.
Manejo de falsos positivos
Los falsos positivos son inevitables. El objetivo es reducir el daño sin bloquear a los usuarios legítimos con demasiada frecuencia.
Utilice una cola de revisión para:
- contenido de riesgo medio
- contexto ambiguo
- categorías sensibles según las políticas
- usuarios de alto valor o acciones de alto impacto
- apelaciones
Registre cada decisión de moderación con suficiente contexto para depurar después:
- hash del contenido
- id de usuario o id de cuenta
- nivel de riesgo
- categorías activadas
- acción tomada
- anulación del revisor
- marca de tiempo
Evite registrar contenido sensible en bruto a menos que cuente con una política clara de retención y privacidad.
Qué prometer internamente
No prometa que la moderación hace que un chatbot sea "100 % seguro."
Una promesa más realista es:
- las entradas dañinas se verifican antes de la ejecución del modelo
- las salidas del modelo se verifican antes de mostrarse al usuario
- las llamadas a herramientas del agente se validan antes de su ejecución
- los casos de alto riesgo o ambiguos pueden dirigirse a personas
- los registros y resultados de las revisiones se utilizan para mejorar los umbrales
Esa es una postura de producción realista.
Errores comunes
Error 1: moderar solo las entradas
Las verificaciones de entrada son útiles, pero el modelo aún puede generar salidas inseguras. Modere las salidas antes de mostrarlas a los usuarios.
Error 2: tratar los prompts como límites de seguridad
Los prompts de sistema guían el comportamiento, pero no deben ser la única capa de seguridad. Utilice permisos de herramientas, flujos de trabajo estructurados y aprobaciones.
Error 3: permitir que los agentes ejecuten herramientas sin validación
Valide siempre las llamadas a herramientas fuera del modelo. El modelo debe proponer acciones; su aplicación debe decidir si la acción está permitida.
Error 4: bloquear todos los casos inciertos
Los sistemas demasiado estrictos generan frustración en los usuarios. Envíe los casos inciertos a revisión en lugar de bloquearlos siempre.
Error 5: no mantener registros
Sin registros, no podrá ajustar umbrales, investigar incidentes ni comprender los falsos positivos.
Lista de verificación para la implementación
- Moderar las entradas del usuario antes de las llamadas al modelo.
- Moderar las salidas del modelo antes de mostrarlas al usuario.
- Validar las llamadas a herramientas del agente antes de su ejecución.
- Utilizar enrutamiento permitir / revisar / bloquear.
- Poner en cola el contenido de riesgo medio para revisión.
- Agregar reportes de usuario y apelaciones donde sea necesario.
- Registrar niveles de riesgo, categorías, acciones y anulaciones del revisor.
- Evitar almacenar contenido sensible en bruto a menos que sea requerido.
- Probar con ejemplos reales de su producto.
- Revisar los umbrales después de obtener datos de producción.
FAQ
¿Debo moderar las entradas o las salidas del chatbot?
Ambas. La moderación de entradas puede reducir las solicitudes inseguras antes de que lleguen al modelo. La moderación de salidas puede detectar contenido generado inseguro antes de que los usuarios lo vean.
¿La moderación de contenido detiene el prompt injection?
No. La moderación puede detectar cierto contenido inseguro o sospechoso, pero prompt injection requiere defensas más amplias como validación de herramientas, salidas estructuradas, principio de mínimo privilegio, aprobaciones humanas y aislamiento de flujos de trabajo.
¿Dónde debo colocar la moderación en un agente de IA?
Coloque la moderación antes del modelo para la entrada del usuario, antes de la visualización para la salida del modelo, y combínela con validación de llamadas a herramientas antes de que cualquier acción del agente se ejecute.
¿Cómo ayuda EvoLink con la moderación de chatbots?
evolink_summary.risk_level, lo que facilita enrutar el contenido del chatbot hacia flujos de trabajo de permitir, revisar o bloquear.¿Sigo necesitando revisión humana?
Para sistemas en producción, sí. La revisión humana es importante para apelaciones, casos de riesgo medio, cambios de políticas y decisiones de alto impacto.
Guías de moderación relacionadas
- OpenAI Moderation API Pricing: Is It Free? Limits and Alternatives
- Image Moderation API Guide: How to Filter Unsafe User-Uploaded Images
- omni-moderation-latest Explained: OpenAI Moderation API Guide
- Best Content Moderation APIs and Tools for Developers


