En este tutorial, seguiremos instrucciones paso a paso para llevar a cabo una técnica de prompt engineering denominada role prompting. Utilizaremos un modelo IBM® Granite para asignar perfiles a los resultados matizados del modelo.
El role prompting es una técnica de prompt engineering que instruye a un modelo de inteligencia artificial (IA) para que asuma un rol o un perfil específico al generar una respuesta. Esta técnica se puede utilizar para orientar el tono, el estilo y el comportamiento del modelo, lo que puede dar lugar a resultados más interesantes.
El prompt engineering consiste en optimizar la entrada del modelo para que ofrezca respuestas apropiadas y significativas. El zero-shot y el few-shot prompting son dos técnicas populares que se utilizan para conversar con modelos de lenguaje de gran tamaño (LLM). Los LLM tienen una habilidad natural para realizar tareas de procesamiento del lenguaje natural (PLN) debido a su capacidad para procesar e interpretar el lenguaje humano. Las capacidades lingüísticas de los modelos de IA son valiosas para tareas que van desde conversaciones con chatbots e interacciones multiagente hasta la escritura creativa abierta.
La IA generativa se vuelve más personal cuando se instruye a un LLM para que actúe como un perfil específico para cumplir con las necesidades específicas de un rol. Las respuestas de la IA pueden ser más precisas y relevantes cuando se le da una instrucción con un rol asignado. Los modelos de IA aprovechan enormes conjuntos de datos, por lo que un rol asignado puede ser cualquier cosa, desde un profesor hasta un personaje histórico, pasando por un vendedor u otros, con el único límite de lo que se pueda imaginar. Esta capacidad es lo que hace que el role prompting, también conocido como persona prompting, sea una técnica tan potente. La adaptabilidad de un modelo de IA lo convierte en un maestro del disfraz, capaz de generar respuestas adaptadas a las necesidades específicas de un usuario o sistema.
El role prompting se puede utilizar para que un chatbot adopte un perfil determinado que le permita interactuar mejor con los usuarios, o para que un agente de IA interactúe mejor con otros agentes. Si está familiarizado con las plantillas de instrucciones, es posible que ya haya visto el role prompting en acción. Por ejemplo, muchos marcos agénticos utilizan agentes que desempeñan roles para completar tareas y colaborar de manera eficaz. ChatDev utiliza una técnica de prompting basado en roles denominada mecanismo de autoatención. Este mecanismo define claramente el rol del agente que actúa como guía para los resultados que genera.
Para seguir este tutorial, necesita una cuenta de IBM® Cloud para crear un proyecto watsonx.ai .
Aunque puede elegir entre varias herramientas, este tutorial le muestra cómo configurar una cuenta de IBM para utilizar un Jupyter Notebook. Los Jupyter Notebooks se utilizan ampliamente en la ciencia de datos para combinar código, texto, imágenes y visualizaciones de datos para formular un análisis bien estructurado.
Tome nota del ID del proyecto en Proyecto > Gestionar > General > ID del proyecto.
Necesitará este ID para este tutorial.
3. Cree un Jupyter Notebook.
Este paso abre un entorno de notebook en el que puede copiar el código de este tutorial para realizar una clasificación zero-shot por su cuenta. También puede descargar este notebook en su sistema local y subirlo a su proyecto watsonx.ai como activo. Este Jupyter Notebook está disponible en GitHub.
En este paso, asociará su proyecto con el servicio watsonx.ai.
Cree una instancia de watsonx.ai Runtime (elija el plan Lite, que ofrece una instancia gratuita).
Genere una clave API en watsonx.ai.
Asocie el watsonx.ai Runtime al proyecto que ha creado en watsonx.ai.
Necesitaremos algunas bibliotecas y módulos para este tutorial. Asegúrese de importar los siguientes y, si no están instalados, una instalación rápida de pip resolverá el problema.
Ejecute lo siguiente para introducir y guardar la clave API de watsonx.ai Runtime y el ID del proyecto:
A continuación, configuraremos Granite-3.1-8B-Instruct de IBM para realizar el role prompting.
Para dar un ejemplo sencillo y divertido de lo que es el role prompting, pidamos al modelo que adopte la personalidad de un personaje famoso, William Shakespeare. Le pediremos al modelo, con su nuevo rol asignado, que reescriba la letra de una canción al estilo de los famosos sonetos de Shakespeare.
El bloque de código siguiente configura y define la instrucción a la que responderá el modelo. Puede cambiar la canción por la que desee, pero tenga en cuenta que Granite no se ha entrenado con contenido protegido por derechos de autor. Si elige una canción que no sea de dominio público, por ejemplo, "Espresso" de Sabrina Carpenter, tendrá que pegar la letra junto con la instrucción.
Para que la instrucción funcione, en este ejemplo se utilizará la clásica canción de cuna "Twinkle, Twinkle, Little Star" de Jane Taylor (1806). Ejecute el bloque de código para definir la instrucción del usuario junto con algún texto de ejemplo.
Una vez definida la instrucción, podemos ejecutar el siguiente bloque de código para permitir que el modelo genere un resultado. Esperemos que esté a la altura de nuestros estándares shakesperianos.
Aquí está el resultado del modelo con un formato legible:
"Twinkle, twinkle, little star, how I wonder what you are;
Up above the world so high, like a diamond in the sky.
In night's velvet cloak, you shine so bright,
Guiding sailors through the darkest night.
Your radiant beams, a celestial art,
Illuminate the canvas of the heart.
In silent whispers, secrets you share,
Of galaxies far and constellations rare.
Yet, mortal eyes can never grasp your form,
Beyond our realm, in realms beyond the storm.
O, star! O, star! Your light does pierce my soul,
A cosmic dance, a timeless role.
In dreams, I chase you, in slumber's hold,
Your mystery, like an enchanted scroll.
But wakefulness claims me, daylight steals your guise,
Leaving behind but a memory of your surprise.
Thus, twinkling star, in slumber's peaceful reign,
I bid you farewell, till morning brings again."
El modelo ha sido capaz de generar una respuesta a la instrucción basada en roles para reescribir la canción como un soneto de Shakespeare. El modelo ha sido capaz de cumplir con las reglas y el estilo esperados de la instrucción basada en el rol. *Tenga en cuenta que, debido a la naturaleza creativa de la instrucción, su resultado puede ser diferente al de este ejemplo.
En el siguiente ejemplo, comparamos una instrucción del sistema directa con una instrucción del sistema basada en roles. Supongamos que una clínica veterinaria ha implementado recientemente un asistente virtual en su página web. Para ofrecer la mejor atención al cliente, esta clínica quiere que los dueños de mascotas se sientan escuchados y apoyados incluso en sus interacciones virtuales, un objetivo con el que se identifican muchas empresas. Un visitante podría hacer una pregunta como: "Mi gato ha estado estornudando mucho últimamente y se lame las patas, ¿qué debo hacer?". En este escenario, al modelo no se le ha asignado un rol en su instrucción. Simplemente estamos utilizando el modelo tal cual, sin ninguna entrada previa.
El modelo responde con consejos e información, pero carece de un toque personal y no difiere mucho de lo que se puede encontrar en la página de resultados de un motor de búsqueda. La respuesta del modelo es rudimentaria y carece de creatividad. Esta solución podría ser aceptable, pero no distingue al asistente virtual de esta clínica veterinaria del resto. Probemos con la misma pregunta otra vez, esta vez asignándole el rol de "veterinario compasivo, profesional y con experiencia".
El lenguaje utilizado en la respuesta del modelo resulta más humano, ya que transmite una conciencia emocional del contexto que no se apreciaba en la instrucción directa del sistema. El modelo ha sido capaz de lograr este tono a la vez que proporcionaba una respuesta completa y relevante, lo que demuestra que se trata de una respuesta más matizada. Este tipo de interacción humana con la inteligencia artificial es una forma de satisfacer las expectativas subjetivas dentro de las organizaciones y las aplicaciones.
Si usted es un desarrollador o una empresa que busca añadir una mayor personalización e interacciones significativas a sus aplicaciones de IA generativa, considere comprender cómo el role prompting puede marcar la diferencia. La mayoría de los modelos de lenguaje modernos son capaces de realizar role prompting. Es posible que algunos modelos básicos no capten los matices del rol o mantengan la coherencia en sus respuestas, mientras que otros pueden estar ajustados para responder de una determinada manera. Los modelos fundacionales, como la serie Granite de IBM, se entrenan con grandes cantidades de datos específicos de la empresa, lo que aumenta la capacidad de los modelos para asumir roles y producir respuestas personalizadas basadas en las necesidades empresariales.
El role prompting anima al modelo a actuar constantemente según las expectativas del perfil que se le ha asignado. Hemos llevado a cabo un ejemplo sencillo asignando al LLM el rol de un personaje histórico en nuestra instrucción para convertir la letra de una canción en un soneto. A continuación, hemos comparado el resultado de un modelo sin role prompting con el de un modelo con role prompting para las respuestas del chatbot. Hemos llegado a la conclusión de que la respuesta proporcionada por el role prompting es más matizada y comprensiva en su lenguaje, lo que mejora la atención al cliente.