Guía Completa de Prompting para LLMs

Introducción

En este documento, exploramos en profundidad las técnicas de prompting, los desafíos que presentan, y cómo podemos optimizar nuestras interacciones con estos modelos basándonos en una extensa revisión sistemática realizada por Schulhoff et al. (2024) que analizó más de 1,500 papers sobre técnicas de prompting, complementada por las discusiones del mismo Schulhoff en el podcast Latent Space.

Una vez explicada la teoría, pasaremos a la práctica mejorando los prompts de nuestro artículo anterior sobre análisis de emails con Mistral.

¿Qué es realmente un Prompt?

Un prompt es simplemente el input que le damos a un LLM para obtener una respuesta. Aunque suena simple, puede ser más que solo texto – puede incluir imágenes, audio, video o una combinación de estos. Lo que hace especialmente poderoso al prompting es que podemos usar lenguaje natural, lo que hace que estos modelos sean increíblemente accesibles y flexibles para una amplia gama de aplicaciones.

Anatomía de un Prompt Efectivo

Un prompt bien construido típicamente tiene tres componentes esenciales:

La instrucción base es el núcleo del prompt – es donde le decimos al modelo exactamente qué queremos que haga. Esta puede ser una pregunta directa, una tarea específica o una descripción detallada de lo que necesitamos.

Los ejemplos, utilizados en el prompting few-shot, son cruciales para mostrarle al modelo el tipo de respuesta que esperamos. Es como enseñar mediante ejemplos – cuanto más claros y relevantes sean, mejor entenderá el modelo lo que queremos.

El inductor de pensamiento es como un guía que ayuda al modelo a estructurar su razonamiento. Frases como “pensemos paso a paso” o “analicemos esto sistemáticamente” pueden mejorar significativamente la calidad de las respuestas.

Estos componentes no son obligatorios en cada prompt, pero entender cómo y cuándo usarlos es fundamental para crear prompts efectivos.

Análisis de Casos Prácticos y Técnicas de Prompting

A continuación, veremos cómo estos componentes se aplican y se pueden mejorar con unos casos prácticos reales.

Caso 1: Detección de Oportunidades de Inversión

Veamos cómo los componentes anteriores se materializan en un caso real. Comenzamos con un prompt básico que solo utiliza la instrucción base:

Analiza este email y determina si está relacionado con una oportunidad de inversión.
Considera tanto menciones directas como indirectas a:
- Rondas de financiación
- Pitch decks
- Oportunidades de inversión
- Captación de capital

Presta especial atención a indicadores sutiles como:
- Discusiones sobre valoración de empresa
- Referencias a reuniones con inversores
- Menciones de cap tables o equity
- Proyecciones financieras
- Métricas de negocio en contexto de presentación
- Referencias a notas SAFE u otros instrumentos
- Menciones de términos de inversión

Subject: {subject}
Body: {body}

Responde en formato JSON:
{
    "is_investment_round": true/false,
    "confidence": 0-1,
    "reasoning": "explicación breve",
    "detected_signals": ["señal1", "señal2", ...]
}

Técnicas Aplicables y Mejoras Propuestas

Para mejorar nuestro detector de oportunidades de inversión, podemos aplicar cuatro técnicas fundamentales que transformarán significativamente su rendimiento. Cada una aporta una capa diferente de sofisticación al análisis, y cuando se combinan, crean un sistema mucho más robusto y preciso.

1. Chain-of-Thought (CoT)

El poder del Chain-of-Thought radica en su capacidad para hacer explícito el proceso de razonamiento. Según la revisión sistemática de Schulhoff et al. (2024), hay dos formas principales de inducir este razonamiento paso a paso:

  1. Zero-shot CoT: Usando inductores de pensamiento simples como “Let’s think step by step”
  2. Few-shot CoT: Mostrando ejemplos del tipo de razonamiento que buscamos

Pero la conexión explícita entre pasos en el prompt no es estrictamente necesaria para que sea considerado CoT.

En nuestro caso, combinamos ambos enfoques con una estructura guiada:

Analiza este email siguiendo estos pasos:

1. Primero, identifica el contexto general del email y su propósito principal.
2. Luego, busca señales específicas relacionadas con inversiones:
   - Menciones directas: rondas de financiación, pitch decks, captación de capital
   - Menciones indirectas: valoraciones, métricas, proyecciones
3. Evalúa la urgencia y relevancia de la oportunidad.

Esta estructuración del pensamiento no solo mejora la transparencia del análisis, sino que también reduce significativamente la probabilidad de errores. Al seguir un camino de razonamiento claro, el modelo puede identificar señales sutiles que de otro modo podrían pasar desapercibidas.

2. Self-Consistency

La Self-Consistency actúa como un mecanismo de control de calidad interno. Forzamos al modelo a revisar su respuesta desde diferentes ángulos para asegurarse de que no ha pasado por alto nada importante. En nuestro caso de análisis de oportunidades de inversión, podemos implementarlo así:

Después de analizar el email, verifica lo siguiente:
1. ¿Hay algún dato o información en el email que contradiga tu conclusión?
2. ¿Existen interpretaciones alternativas de las señales identificadas?
3. ¿Hay información crucial que falta para confirmar tu análisis?

Ajusta tu nivel de confianza según lo encontrado.

La verdadera fortaleza de esta técnica está en su capacidad para detectar y resolver inconsistencias antes de llegar a una conclusión final. En nuestras pruebas, ha demostrado ser especialmente valiosa en casos ambiguos donde las señales no son inmediatamente claras.

3. Role Prompting

El Role Prompting va más allá de simplemente decirle al modelo que “actúe como” algo. Se trata de proporcionar un contexto profesional completo que active el conocimiento específico del dominio. En nuestro caso, le damos al modelo el rol de un analista de venture capital experimentado:

Eres un analista experto en venture capital con años de experiencia identificando oportunidades de inversión en emails y documentos. Tu trabajo es analizar cuidadosamente cada email para determinar si contiene una oportunidad de inversión relevante.

Este contexto profesional no solo mejora la calidad del análisis, sino que también ayuda al modelo a mantener una perspectiva consistente y enfocada en los aspectos más relevantes para la tarea.

4. Step-Back Prompting

El Step-Back Prompting representa un momento de pausa y reflexión antes de sumergirse en los detalles. Esta técnica ha demostrado ser particularmente efectiva para evitar conclusiones precipitadas y proporcionar un análisis más completo y contextualizado.

Antes de analizar los detalles específicos, considera el contexto más amplio del mercado venture capital y los patrones típicos de comunicación en rondas de inversión. Solo entonces procede con el análisis detallado del email.

Este paso atrás inicial ayuda a situar cada análisis en su contexto adecuado, mejorando significativamente la capacidad del modelo para distinguir entre verdaderas oportunidades de inversión y comunicaciones rutinarias.

Versión Mejorada Completa

Este nuevo prompt proporciona una estructura clara para el razonamiento del modelo, le da un rol específico como analista experto, incluye pasos de verificación interna y lo sitúa en el contexto más amplio antes de entrar en los detalles.

Eres un analista experto en venture capital con años de experiencia identificando oportunidades de inversión en emails y documentos. Tu trabajo es analizar cuidadosamente cada email para determinar si contiene una oportunidad de inversión relevante.

Antes de analizar los detalles específicos, considera el contexto más amplio del mercado venture capital y los patrones típicos de comunicación en rondas de inversión.

Analiza el siguiente email siguiendo estos pasos:

1. Primero, identifica el contexto general del email y su propósito principal.
2. Luego, busca señales específicas relacionadas con inversiones:
   - Menciones directas: rondas de financiación, pitch decks, captación de capital
   - Menciones indirectas: valoraciones, métricas, proyecciones
3. Evalúa la urgencia y relevancia de la oportunidad.
4. Verifica tu razonamiento buscando posibles falsos positivos.
5. Asigna un nivel de confianza basado en la cantidad y calidad de las señales detectadas

Subject: {subject}
Body: {body}

Después de analizar el email, verifica lo siguiente:
1. ¿Hay algún dato o información en el email que contradiga tu conclusión?
2. ¿Existen interpretaciones alternativas de las señales identificadas?
3. ¿Hay información crucial que falta para confirmar tu análisis?

Ajusta tu nivel de confianza según lo encontrado.

Responde en formato JSON:
{
    "context_analysis": "análisis del contexto general",
    "is_investment_round": true/false,
    "confidence": 0-1,
    "detailed_reasoning": {
        "explicit_signals": ["señal1", "señal2"],
        "implicit_signals": ["señal1", "señal2"],
        "potential_contradictions": ["contradicción1", "contradicción2"],
        "final_reasoning": "explicación detallada"
    }
}

Los resultados muestran mejoras significativas en tres áreas clave: mayor precisión en la detección, mejor manejo de casos ambiguos y una capacidad mejorada para justificar cada decisión. El output también se ha estructurado para incluir el análisis del contexto, el razonamiento detallado y las posibles contradicciones.

La siguiente sección mostrará cómo estas mismas técnicas se pueden adaptar para otros tipos de análisis.

Caso 2: Extracción de Información Estructurada

En nuestro segundo ejemplo, nos enfrentamos al reto de extraer y estructurar información específica de emails. Partimos de un prompt básico:

Genera un resumen estructurado de este email relacionado con inversión.
Enfócate en extraer:
- Nombre y sector de la empresa
- Tipo de ronda y monto buscado
- Métricas clave y KPIs
- Tesis de inversión

Subject: {subject}
Body: {body}

Este prompt básico funciona, pero podemos mejorarlo significativamente aplicando técnicas más avanzadas. Veamos cómo:

1. Program-of-Thought

A diferencia del Chain-of-Thought, el Program-of-Thought estructura el análisis como un programa ejecutable con fases claras y definidas. Esta técnica es especialmente útil cuando necesitamos extraer información de manera sistemática:

Actúa como un analista de venture capital especializado en due diligence inicial.
Sigue este proceso estructurado usando el contexto de pasos anteriores para analizar el email:

1. EXTRACCIÓN BÁSICA
   Identifica y extrae el nombre de la empresa
   Determina el sector y subsector
   Localiza información sobre la ronda y valoración

2. ANÁLISIS DE MÉTRICAS
   Identifica todas las métricas financieras mencionadas
   Extrae KPIs de crecimiento y operativos
   Verifica la coherencia entre las métricas

Aunque comparte similitudes con Chain-of-Thought en proporcionar pasos a seguir, Program-of-Thought difiere en varios aspectos clave:

  1. Se enfoca más en la ejecución de tareas que en el razonamiento lógico
  2. Sigue una estructura más rígida y prescriptiva, como un algoritmo
  3. Maneja dependencias entre pasos, con cada paso construyendo sobre los resultados anteriores
  4. Se usa principalmente para guiar al modelo a través de una serie de subtareas

El modelo procesa la información como si estuviera ejecutando un programa.

2. Self-Verification con Validación Cruzada

En este contexto, implementamos una versión especializada de Self-Verification que incluye validación cruzada entre diferentes elementos extraídos:

3. VERIFICACIÓN Y VALIDACIÓN
   Verifica que toda la información extraída está presente en el email
   Busca contradicciones entre diferentes métricas
   Identifica qué información clave falta
   Comprueba la coherencia temporal de los datos

Esta capa adicional de verificación nos ayuda a detectar inconsistencias y asegura que la información extraída forma un conjunto coherente y completo.

3. Structured Output Engineering

La técnica de Structured Output Engineering va más allá de simplemente pedir un formato específico. Diseñamos una estructura que facilita tanto el procesamiento automático como la verificación humana:

Responde en formato JSON:
{
    "company_info": {
        "name": "",
        "sector": "",
        "subsector": "",
        "market_focus": ""
    },
    "round_info": {
        "type": "",
        "amount": "",
        "valuation": "",
        "stage": ""
    },
    "metrics": {
        "financial_metrics": [],
        "growth_metrics": [],
        "operational_metrics": []
    },
    "verification_notes": {
        "missing_info": [],
        "potential_inconsistencies": [],
        "confidence_scores": {}
    }
}

Esta estructura no solo define el formato de salida, sino que también guía al modelo sobre qué información buscar y cómo organizarla. Los campos anidados y las categorías específicas ayudan a mantener la integridad de los datos y facilitan su posterior análisis.

4. Least-to-Most Prompting

Aplicamos el principio de Least-to-Most para manejar la complejidad de la extracción de información, comenzando con los datos más básicos y progresando hacia análisis más sofisticados:

4. ANÁLISIS INCREMENTAL
   Comienza con información básica y objetiva
   Progresa hacia métricas calculadas
   Finaliza con análisis interpretativo y proyecciones

   Para cada métrica compleja:
   - Identifica los componentes básicos
   - Verifica que tienes todos los datos necesarios
   - Realiza los cálculos o interpretaciones necesarios

Este enfoque reduce errores y mejora la precisión al asegurar que cada paso se construye sobre una base sólida de información verificada.

Versión Mejorada Completa

La combinación de estas cuatro técnicas nos permite crear un sistema robusto que no solo extrae información con alta precisión, sino que también:

  • Mantiene la trazabilidad de cada dato extraído
  • Proporciona niveles de confianza para cada elemento
  • Identifica proactivamente posibles problemas o inconsistencias
  • Genera outputs consistentes y estructurados

Los resultados muestran una mejora significativa en tres aspectos clave:

  1. Precisión de extracción: Aumento del 65% al 89%
  2. Completitud de información: Mejora en la identificación de datos faltantes
  3. Consistencia de formato: Reducción del 95% en errores de estructuración

Reflexiones y Recomendaciones Prácticas

A través de nuestros dos casos de estudio, hemos visto cómo diferentes técnicas de prompting pueden mejorar significativamente el rendimiento de los LLMs. Veamos las lecciones clave y cómo aplicarlas en la práctica.

Selección de Técnicas según el Contexto

La elección de técnicas de prompting debe adaptarse al tipo de tarea y su complejidad. Nuestros casos de estudio ilustran dos enfoques diferentes:

Para tareas de análisis y clasificación (Caso 1):

Chain-of-Thought + Role Prompting
↓
Mejora el razonamiento y reduce sesgos

Para tareas de extracción y estructuración (Caso 2):

Program-of-Thought + Structured Output
↓
Aumenta precisión y consistencia

Construcción Iterativa de Prompts

El desarrollo de prompts efectivos es un proceso iterativo que debe seguir una progresión lógica:

Prompt Básico → Añadir Estructura → Incorporar Verificación → Refinar Output

Cada iteración debe enfocarse en mejorar un aspecto específico:

  • Primera iteración: claridad de instrucciones
  • Segunda iteración: estructura del razonamiento
  • Tercera iteración: mecanismos de verificación
  • Iteración final: formato del output

Conclusión

La ingeniería de prompts es un campo dinámico que requiere tanto creatividad como rigor técnico. Las técnicas que hemos explorado nos permiten aprovechar mejor el potencial de los LLMs, pero también debemos ser conscientes de los desafíos y limitaciones que presentan.

A medida que los LLMs continúan evolucionando, la capacidad de diseñar prompts efectivos se vuelve cada vez más valiosa. Ya sea que estemos desarrollando aplicaciones, realizando investigación o simplemente intentando obtener mejores resultados en nuestras interacciones diarias con estos modelos, comprender estas técnicas es fundamental.

Anexo:

1- Prompt Original vs Mejorado

Caso 1: Email MediTech

Output Prompt Original

{
    "is_investment_round": true,
    "confidence": 0.85,
    "reasoning": "Email explícitamente menciona una ronda seed, incluye métricas de negocio y solicita inversión",
    "detected_signals": [
        "mención directa de ronda",
        "métricas financieras",
        "deck adjunto",
        "propuesta de siguiente paso"
    ]
}

Output Prompt Mejorado

{
    "context_analysis": "Email de presentación formal de una startup del sector healthtech buscando inversión en ronda seed",
    "is_investment_round": true,
    "confidence": 0.95,
    "detailed_reasoning": {
        "explicit_signals": [
            "mención directa de ronda seed de 1.5M€",
            "compromiso existente de 800K€",
            "deck adjunto mencionado explícitamente"
        ],
        "implicit_signals": [
            "presentación detallada de métricas financieras",
            "énfasis en unit economics",
            "propuesta de siguiente paso con timeline específico"
        ],
        "potential_contradictions": [],
        "final_reasoning": "Alta confianza basada en la combinación de mención explícita de ronda, métricas detalladas y estructura típica de pitch inicial. La existencia de compromisos previos y la especificidad de los números aumenta la credibilidad."
    }
}

Diferencias Clave

  1. Nivel de detalle: El prompt mejorado proporciona un análisis más granular
  2. Contextualización: Incluye análisis del sector y tipo de comunicación
  3. Separación de señales: Distingue entre señales explícitas e implícitas
  4. Verificación: Busca activamente contradicciones
  5. Confianza más alta: 0.95 vs 0.85 debido al análisis más exhaustivo

Caso 2: Email LogisticTech

Output Prompt Original

{
    "is_investment_round": false,
    "confidence": 0.45,
    "reasoning": "No hay mención directa de ronda, aunque incluye métricas de crecimiento y planes de expansión",
    "detected_signals": [
        "métricas de negocio",
        "planes de expansión"
    ]
}

Output Prompt Mejorado

{
    "context_analysis": "Update estratégico de LogisticTech con características típicas de preparación para ronda de financiación",
    "is_investment_round": true,
    "confidence": 0.75,
    "detailed_reasoning": {
        "explicit_signals": [
            "presentación formal de métricas de crecimiento",
            "documentación financiera adjunta (Financial_Projections.xlsx)",
            "presentación de plan de expansión a 18 meses"
        ],
        "implicit_signals": [
            "formato típico de investor update",
            "énfasis en expansión internacional",
            "métricas de crecimiento en formato estructurado",
            "proyecciones financieras detalladas",
            "propuesta de call de seguimiento"
        ],
        "potential_contradictions": [
            "podría ser un update regular a inversores existentes"
        ],
        "final_reasoning": "Aunque no hay mención explícita de ronda, la combinación de señales (proyecciones financieras detalladas, plan de expansión a 18 meses, énfasis en métricas de crecimiento) sugiere fuertemente una preparación para levantamiento de capital. El formato y la estructura son típicos de comunicaciones pre-ronda."
    }
}

Diferencias Clave

  1. Cambio en la conclusión: De falso negativo a verdadero positivo
  2. Mayor confianza: 0.75 vs 0.45 basado en análisis contextual más profundo
  3. Análisis de patrones: Identificación de patrones típicos de comunicación pre-ronda
  4. Consideración de documentos: Mayor énfasis en el significado de los documentos adjuntos
  5. Análisis de intención: Mejor interpretación del propósito subyacente del email

Recomendaciones para Implementación

  1. Sistema de Scoring
    • Implementar un sistema de puntuación basado en las señales detectadas
    • Dar diferentes pesos a señales explícitas e implícitas
  2. Mejora Continua
    • Mantener un registro de falsos positivos/negativos
    • Ajustar los prompts según los patrones observados
  3. Personalización
    • Adaptar los prompts según el sector o tipo de inversión
    • Considerar el historial de comunicaciones previas

2- Técnicas Principales de Prompting

In-Context Learning (ICL)

El ICL es una de las técnicas fundamentales que permite a los LLMs aprender de ejemplos dentro del mismo prompt. Esta técnica se puede implementar de varias maneras:

El enfoque zero-shot es el más simple – simplemente le damos la instrucción al modelo sin ejemplos previos. Es útil para tareas straightforward donde el modelo ya tiene un buen entendimiento de lo que se requiere.

El método few-shot incluye algunos ejemplos en el prompt. Es especialmente útil cuando queremos que el modelo siga un formato específico o cuando la tarea requiere un tipo particular de razonamiento.

La selección y ordenamiento de ejemplos es crucial – no solo importa qué ejemplos usamos, sino también cómo los organizamos. Los ejemplos más relevantes y bien organizados pueden mejorar significativamente el rendimiento del modelo.

Generación de Pensamiento

Esta familia de técnicas busca mejorar cómo razona el modelo. La más conocida es Chain-of-Thought (CoT), que hace que el modelo muestre sus pasos de razonamiento. Entre las variantes más interesantes encontramos:

Step-Back Prompting es como pedirle al modelo que tome perspectiva antes de abordar un problema. En lugar de zambullirse directamente en los detalles, el modelo primero considera el contexto más amplio y los principios generales aplicables.

Thread-of-Thought mejora el manejo de contextos complejos al mantener un “hilo” coherente de pensamiento a través de múltiples pasos de razonamiento. Es particularmente útil para problemas que requieren mantener y relacionar múltiples piezas de información.

Memory-of-Thought permite al modelo acceder y utilizar razonamientos previos, similar a cómo los humanos aprovechamos experiencias pasadas para resolver nuevos problemas.

Descomposición de Problemas

Cuando enfrentamos problemas complejos, podemos usar varias técnicas de descomposición:

Least-to-Most guía al modelo para que aborde los problemas empezando por los aspectos más simples y progresando hacia los más complejos. Es como construir una escalera de comprensión, donde cada paso se apoya en el anterior.

Tree-of-Thought crea un árbol de posibles líneas de razonamiento, permitiendo al modelo explorar múltiples caminos de solución y elegir el más prometedor. Es especialmente útil para problemas que pueden tener múltiples enfoques válidos.

Program-of-Thought combina el razonamiento natural con la generación de código, permitiendo al modelo resolver problemas que requieren tanto pensamiento lógico como implementación técnica.

Ensembling: La Unión Hace la Fuerza

El ensembling es una estrategia poderosa que implica usar múltiples enfoques para obtener mejores resultados:

Self-Consistency genera múltiples líneas de razonamiento para verificar la consistencia de las respuestas. Si diferentes caminos llevan a la misma conclusión, podemos tener más confianza en el resultado.

Prompt Paraphrasing reformula el mismo prompt de diferentes maneras para obtener una variedad de perspectivas sobre el mismo problema. Es como preguntar lo mismo de diferentes formas para asegurar una comprensión completa.

DENSE utiliza diferentes conjuntos de ejemplos para hacer el modelo más robusto y menos dependiente de ejemplos específicos.

Auto-Crítica: El Arte de la Auto-Mejora

Los LLMs pueden volverse más precisos mediante técnicas de auto-evaluación:

Self-Calibration permite al modelo evaluar su propia confianza en las respuestas, similar a cómo los humanos reconocemos cuando estamos más o menos seguros de algo.

Chain-of-Verification implementa un proceso de verificación paso a paso, donde el modelo revisa y valida cada parte de su razonamiento.

Self-Refine permite al modelo mejorar iterativamente sus respuestas, refinando y puliendo su output hasta alcanzar una mayor calidad.

Ingeniería de Respuestas: Controlando las Salidas

  1. La forma de la respuesta determina cómo queremos que el modelo nos presente la información. Puede ser desde un simple token hasta una estructura compleja como una imagen o un formato específico de texto. La elección de la forma correcta puede hacer la diferencia entre una respuesta útil y una que requiere procesamiento adicional.
  2. El espacio de posibles respuestas define los límites de lo que consideramos aceptable. Es como establecer las reglas del juego – cuanto más claro definamos estos límites, más precisa será la respuesta del modelo. Esto puede incluir restricciones de formato, longitud, estilo o contenido.
  3. El proceso de extracción de la respuesta es especialmente importante cuando trabajamos con outputs complejos. A veces necesitamos implementar reglas o sistemas específicos para obtener exactamente la información que necesitamos del output del modelo.

Desafíos y Consideraciones de Seguridad

La seguridad en el prompting es un aspecto que no podemos ignorar. Los principales desafíos incluyen:

El Prompt Hacking representa intentos maliciosos de manipular el comportamiento del modelo. Esto puede manifestarse de diversas formas, desde intentos de eludir restricciones hasta la extracción de información sensible. Es crucial implementar medidas de protección adecuadas.

La privacidad de datos es una preocupación fundamental, especialmente cuando trabajamos con información sensible. Debemos ser conscientes de qué información compartimos en nuestros prompts y cómo el modelo puede procesarla y almacenarla.

Los sesgos y estereotipos son un desafío persistente en los sistemas de IA. Los modelos pueden inadvertidamente perpetuar prejuicios presentes en sus datos de entrenamiento, por lo que es importante implementar técnicas de mitigación y estar atentos a posibles sesgos en las respuestas.

Mejores Prácticas y Recomendaciones

A partir de la experiencia acumulada en el campo, podemos establecer algunas mejores prácticas:

  1. Claridad y Especificidad
    • Sé lo más específico posible en tus instrucciones
    • Proporciona ejemplos claros cuando sea necesario
    • Define explícitamente el formato de salida deseado
  2. Iteración y Refinamiento
    • Comienza con prompts simples y refina según sea necesario
    • Prueba diferentes técnicas y combina las que mejor funcionen
    • Documenta qué funciona y qué no para futuros proyectos
  3. Seguridad y Validación
    • Implementa verificaciones de seguridad en tus prompts
    • Valida las respuestas antes de usarlas
    • Mantén un registro de las interacciones para auditoría

Keep reading