Prompt engineering
Introducción
La calidad de las respuestas de un LLM depende directamente de la calidad del prompt. Un prompt vago, incompleto o ambiguo puede generar respuestas especulativas, inconsistentes o poco útiles. En cambio, un prompt bien estructurado permite obtener resultados más precisos, verificables y alineados con el objetivo de la tarea.
Componentes clave de un prompt efectivo
No existe un único orden válido para todos los modelos, pero una estructura común y efectiva es:
Esta estructura permite definir quién debe "ser" el modelo, qué debe hacer, bajo qué límites debe trabajar, qué formato debe imitar y sobre qué información debe basarse.
Rol (role)
El rol define la perspectiva desde la cual debe responder el modelo. Asignar un rol ayuda a activar patrones de conocimiento específicos y a ajustar el tono, nivel de detalle y profundidad de la respuesta.
Eres un especialista en pentesting que está llevando a cabo una fase de reconocimiento.
Eres un analista de ciberseguridad que revisa los resultados de una herramienta durante un "security assessment".Instrucción (instruction)
La instrucción define la tarea concreta que el modelo debe realizar. Debe ser clara, directa y sin ambigüedad.
Restricciones (constraints)
Las restricciones delimitan el alcance de la respuesta, el formato esperado y las reglas que el modelo debe seguir. Son especialmente importantes para reducir alucinaciones y evitar que el modelo invente información.
Ejemplos (examples)
Los ejemplos muestran al modelo cómo debe responder. Son especialmente útiles cuando la tarea requiere un formato específico, una estructura estricta o una forma particular de razonar.
Un ejemplo puede incluir una entrada y una salida esperada. Esto permite que el modelo imite el patrón presentado.
Datos (data)
Los datos son el artefacto que el modelo debe analizar. Pueden ser salidas de herramientas, respuestas HTTP, logs u otro tipo de información técnica. Es recomendable que incluyan metadatos asociados, como nombre del artefacto, objetivo y contenido, y que estén claramente delimitados mediante YAML, XML o encabezados de texto para evitar ambigüedad, especialmente cuando se entregan múltiples artefactos.
In Context Learning (ICL)
Es una técnica en la que el modelo aprende cómo responder a una tarea usando ejemplos incluidos dentro del mismo prompt. Es decir, no se entrena nuevamente al modelo, sino que se le muestran patrones de entrada y salida para que los imite en la respuesta. ICL es útil cuando queremos guiar el comportamiento del modelo, mejorar la precisión y reducir errores de formato.
Zero-shot prompting
Consiste en pedirle al modelo que realice una tarea sin darle ejemplos previos. El prompt solo incluye el rol, la instrucción, las restricciones y los datos que debe analizar. Es útil para tareas simples o flexibles, como resumir texto, generar ideas o crear listas. Sin embargo, puede producir respuestas menos consistentes, especialmente si se requiere un formato de salida estricto.
One-shot / few-shot prompting
One-shot prompting significa darle al modelo un solo ejemplo de cómo debe responder antes de pedirle que resuelva la tarea real. Few-shot prompting es similar, pero incluye varios ejemplos. Estas técnicas ayudan al modelo a entender mejor el formato esperado, el estilo de respuesta y cómo manejar casos especiales. Son especialmente útiles cuando se necesita una salida consistente, estructurada o fácil de validar, como JSON, tablas Markdown o reportes con secciones específicas.
Ejemplo de prompt efectivo
Refinamiento iterativo de respuestas
El refinamiento iterativo consiste en mejorar progresivamente una respuesta generada por AI mediante revisiones y solicitudes de ajuste específicas. En lugar de aceptar la primera salida del modelo como definitiva, se analiza si contiene errores, suposiciones, afirmaciones sin evidencia, problemas de formato o desviaciones del alcance. Luego, se le pide al modelo que corrija esos puntos para obtener una respuesta más clara, precisa, verificable y alineada con el objetivo de la tarea.
El ciclo básico es:
Ejecutar un prompt inicial.
Revisar la respuesta.
Identificar qué falta o qué está mal.
Pedir una versión refinada.
Repetir si es necesario.
Ejemplos de refinamiento:
Última actualización