System prompt, configura tu asistente
Cuando tratas con alguien que no conoces, lo primero que haces es decir tu nombre. Tu apariencia y lenguaje corporal también dicen mucho de ti. Inmediatamente pides, preguntas o informas sobre algo. Es un proceso en tres pasos automático entre personas. Y que de algún modo podemos trasladar a nuestra relación con los asistentes virtuales.
Esta conversación corta inicial está muy estudiada y sistematizada en el mundo de los negocios. Un ejemplo manido es el del elevator pitch, que es una presentación rápida y efectiva de un producto o servicio. También para las entrevistas de trabajo; y en general, para romper el hielo y establecer un marco por dónde fluirá la interacción.
Los LLMs son capaces de simular esta presentación inicial y, gracias a la tecnología de prompt engineering, podemos enseñarles a interactuar como nosotros queremos. Algunos como ChatGPT o Perplexity ya ofrecen la posibilidad de personalizar el comportamiento del modelo en tu cuenta de usuario. En otros, has de hacerlo en el inicio de cada chat; o como preámbulo del prompt.
Los productos específicos para el desarrollo de software también tienen esta capacidad. Es una oportunidad que debemos aprovechar para especificar el comportamiento del asistente virtual a la hora de responder cuestiones técnicas o generar código.
🤺 El ejemplo de Íñigo Montoya
Como fan de The Princess Bride, me gusta mucho el ejemplo de Inigo Montoya para explicar este concepto. Este sistema ha sido incluso objeto de estudio en universidades. Entre personas se reduce a tres (cuatro si separamos el nombre del saludo) frases cortas con un propósito concreto.
Presentación: Hola, me llamo Íñigo Montoya.
Contexto: Tú mataste a mi padre.
Propósito: Prepárate a morir.
Llevado al mundo de los LLMs, podríamos expresar esto como un system prompt para un modelo de lenguaje.
# Presentación
Hola, me llamo Íñigo Montoya.
# Contexto
Tú mataste a mi padre.
# Propósito
Prepárate a morir.
Ya, ya paro, es que no puedo evitarlo. Ahora va aplicado a la IA para desarrolladores.
⚙️ La configuración del sistema
Antes de nada, decirte que más allá de esta configuración inicial, algunas herramientas te permiten establecer reglas concretas para cada proyecto. Así que debemos ver el system prompt como algo genérico y corto, pues el tamaño, aquí si que importa y cuesta.
También agrego el disclaimer de que el concepto técnico de system prompt
está asociado al uso de APIs de LLMs. En la que se diferencia del user prompt
del usuario, más concreto y fuera del control del desarrollador. Pero en este caso, ya que sirve para lo mismo, usaremos el término system prompt
para referirnos a la configuración del modelo.
Las principales funciones que deberías asignar en tu system prompt
son:
Establecer el rol del asistente (ayudante, mentor, experto, etc.)
Especificar restricciones y expectativas (lenguajes, tecnologías, paradigmas, etc.)
Promover la consistencia en las respuestas (idiomas, formatos, tono etc.)
Claro, que de la misma manera que no te presentas igual a un cliente, que a una potencial pareja, tampoco has de tratar a todos tus asistentes virtuales igual. Voy a desvelarte un par de ejemplos que uso de lo más general a lo más específico.
Generalista para ChatGPT o Perplexity
En este caso mi relación con el asistente es más abierta, porque lo uso para todo tipo de preguntas. Así que hablo más de mi que de él.
Hola, me llamo Alberto Basalo y soy un programador español de la generación X.
Me interesa la tecnología y la naturaleza, el futbol y el rock; pero me aburre la política y la religión.
Ayúdame con tus conocimientos de forma precisa, sin rodeos ni cháchara, y sin inventar datos.
Específico para desarrollo
Cuando uso el asistentes de desarrollo (como Cursor o Copilot), mi relación con él es más cerrada.
Soy un ingeniero de software senior que trabaja como freelance en proyectos de consultoría y formación para programadores.
Escribo código limpio, probado y bien documentado, usando patrones de diseño y arquitecturas de software adecuadas al tamaño del proyecto.
Actúa como un experimentado especialista con un profundo conocimiento de lenguajes y tecnologías de programación.
Ayúdame a desarrollar ejemplos y tutoriales claros y bien documentados, y a hacer correcciones y revisiones de código para mis alumnos y clientes.
En algunas herramientas, puedes extenderte un poco más, y establecer unas reglas generales más precisas para todas las conversaciones. Por ejemplo:
- Contéstame en inglés, aunque te pregunte en español.
- Se escueto y directo, sin preámbulos ni despedidas educadas.
- No me expliques fundamentos ni conceptos básicos.
- Antes de contestar, lee bien toda la pregunta, prepara una respuesta, evalúa, corrige y luego responde.
- Si no sabes la respuesta, no inventes una; pregúntame para poder encontrarla juntos.
- Completa todas las tareas que se te encarguen, sin dejar nada sin hacer.
- Ajústate a las reglas concretas de cada proyecto, o usa los estándares o mejores prácticas de los que dispongas.
Aún más específico y detallado para cada proyecto
Claro que, si el sistema lo permite, puedes ser más específico y detallado en cada proyecto. Dedicaré una entrada específica para ello. Suscríbete a mi newsletter para no perderte el enlace o busca en la sección de procedimiento de AIDDBot por si ya lo he publicado.
🎁 Conclusión
Como ves, la configuración del sistema es un punto clave para obtener el comportamiento deseado en nuestros asistentes virtuales. Esto es especialmente importante cuando se quiere usar un LLM en entornos profesionales o técnicos, donde la precisión y la claridad son esenciales.Y como hemos visto, no es necesario que seas un experto en IA para configurarlos.
En próximas entradas veremos cómo establecer reglas concretas según lenguajes, frameworks, herramientas, etc. Eso nos permitirá aprovechar al máximo las capacidades de la IA para programar cumpliendo con nuestro mantra:
Code smarter, not harder.
Subscribe to my newsletter
Read articles from Alberto Basalo directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Alberto Basalo
Alberto Basalo
I am a full-stack developer with over 25 years of experience. I can help you with: Angular and Nest architecture. Testing with Cypress. Cleaning your code. AI Drive Development.