En este tutorial, seguiremos instrucciones paso a paso para realizar una técnica de ingeniería rápida llamada role prompting. Utilizaremos un modelo IBM® Granite para asignar personalidades para resultados matizados del modelo.
Role prompting es una técnica de ingeniería rápida que instruye a un modelo de inteligencia artificial (IA) para que asuma un rol o personalidad específicos al generar una respuesta. Esta técnica se puede utilizar para guiar el tono, el estilo y el comportamiento del modelo, lo que puede conducir a resultados más atractivos.
La ingeniería rápida consiste en optimizar la entrada del modelo, para que responda con respuestas apropiadas y significativas. Zero-shot y few-shot prompting son dos técnicas populares que se emplean para conversar con modelos de lenguaje grandes (LLM). Los LLM tienen una capacidad natural para realizar tareas de procesamiento de lenguaje natural (PLN) debido a su capacidad para procesar e interpretar el lenguaje humano. Las capacidades de lenguaje de los modelos de IA son valiosas para tareas que van desde conversaciones de chatbot e interacciones entre múltiples agentes hasta escritura creativa abierta.
La IA generativa se vuelve más personal cuando se le indica a un LLM que actúe como una personalidad específica para satisfacer las necesidades específicas de un rol. Las respuestas de la IA pueden ser más precisas y relevantes cuando se le proporciona una instrucción por primera vez 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, una figura histórica, un vendedor u otros, limitados solo por lo que la imaginación puede pensar. Esta capacidad es lo que hace que role prompting, también conocido como persona prompting, sea una técnica tan poderosa. 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.
Role prompting se puede utilizar para dar a un chatbot una personalidad para interactuar mejor con los usuarios o a un agente de IA para interactuar mejor con otros agentes. Si está familiarizado con las plantillas de instrucciones, es posible que ya haya visto role prompting en acción. Por ejemplo, muchos marcos utilizan agentes de juego de roles para completar tareas y colaborar de manera efectiva. ChatDev utiliza una técnica de ingeniería de instrucciones y roles llamada mecanismo de autoatención. Este mecanismo define claramente el rol del agente que actúa como guía para sus resultados generados.
Para seguir este tutorial, necesita una cuenta de IBM® Cloud para crear un proyecto watsonx.ai .
Si bien puede elegir entre varias herramientas, este tutorial lo guiará a través de cómo configurar una cuenta de IBM para usar un Jupyter Notebook. Los Jupyter Notebooks se utilizan ampliamente dentro de la ciencia de datos para combinar código, texto, imágenes y visualizaciones de datos para formular un análisis bien formado.
Tome nota del ID del proyecto en project > Manage > General > Project ID.
Necesitará este ID para este tutorial.
3. Cree un Jupyter Notebook.
Este paso abre un entorno de notebook donde 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 cargarlo en su proyecto watsonx.ai como activo. Este Jupyter Notebook está disponible en GitHub.
En este paso, asocia su proyecto con el servicio watsonx.ai.
Cree una instancia de watsonx.ai Runtime (elija el plan Lite, que es una instancia gratuita).
Genere una clave de API en watsonx.ai.
Asocie el servicio de watsonx.ai Runtime al proyecto que creó en watsonx.ai.
Necesitaremos algunas bibliotecas y módulos para este tutorial. Asegúrese de importar lo siguiente y, si no están instalados, una instalación rápida de pip resolverá el problema.
Ejecute lo siguiente para ingresar y guardar su clave de API de watsonx.ai Runtime y su ID de proyecto:
A continuación, configuraremos Granite-3.1-8B-Instruct de IBM para realizar role prompting.
Para dar un ejemplo simple y ameno de role prompting, pidamos al modelo que asuma la personalidad de una figura famosa, William Shakespeare. Le pediremos al modelo, con su nuevo rol asignado, que reescriba algunas letras de canciones al estilo de los famosos sonetos de Shakespeare.
El siguiente bloque de código configura y define la instrucción a la que responderá el modelo. Siéntase libre de cambiar la canción a lo que quiera, pero tenga en cuenta que Granite no fue entrenado en contenido protegido por derechos de autor. Si elige una canción que no es parte del dominio público, por ejemplo, "Espresso" de Sabrina Carpenter, también tendrá que pegar la letra con la instrucción.
Para una instrucción que simplemente funcione, este ejemplo utilizará la clásica canción de cuna infantil "Estrellita, ¿dónde estás?" de Jane Taylor (1806). Ejecute el bloque de código para definir su instrucción de usuario junto con un texto de entrada 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 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 pudo producir una respuesta a la instrucción basada en roles para reescribir la canción como un soneto de Shakespeare. El modelo pudo cumplir con las reglas y el estilo esperados de su instrucción de roles. *Tenga en cuenta que, debido a la naturaleza creativa de la instrucción, su resultado puede verse diferente a este ejemplo.
En el siguiente ejemplo, comparamos un indicador del sistema sencillo con un indicador del sistema basado en roles. Digamos que un consultorio veterinario implementó recientemente un asistente virtual en su página web. Para brindar la mejor atención al cliente, este consultorio quiere que los dueños de sus mascotas se sientan escuchados y apoyados incluso en sus interacciones virtuales, un objetivo con el que se pueden relacionar muchas empresas. Un visitante podría hacer una pregunta como: "Mi gato ha estado estornudando mucho últimamente y se está lamiendo las patas, ¿qué debo hacer?" En este escenario, al modelo no se le ha asignado un rol en su instrucción. Solo estamos empleando el modelo listo para usar sin orientación de entrada.
El modelo responde en consecuencia con consejos e información; sin embargo, no hay un toque personal y no es muy diferente de lo que vería en la página de resultados de un motor de búsqueda. El resultado del modelo no está procesado y carece de creatividad. Esta solución puede ser aceptable, pero no diferencia al asistente virtual de este consultorio veterinario del resto. Intentemos la misma pregunta nuevamente, esta vez asignándole un rol como "veterinario compasivo, profesional y experimentado".
El lenguaje en la respuesta del modelo es más humanizado porque habla de una concientización emocional del contexto que la instrucción directa del sistema carecía. El modelo pudo lograr este tono y, al mismo tiempo, proporcionó una respuesta completa y relevante que demuestra que es una respuesta más matizada. Este tipo de interacción humana con la inteligencia artificial es una forma de cumplir con las expectativas subjetivas dentro de las organizaciones y aplicaciones.
Si es un desarrollador o una empresa que busca agregar más personalización e interacciones significativas en sus aplicaciones de IA generativa, considere comprender cómo role prompting puede tener un impacto. La mayoría de los modelos de lenguaje modernos son capaces de hacer role prompting. Es posible que algunos modelos básicos no capten los matices del rol ni mantengan la coherencia en sus respuestas, mientras que otros pueden ajustarse para responder de cierta manera. Los modelos fundacionales, como la serie Granite de IBM, se entrenan con grandes cantidades de datos específicos de la empresa que aumentan la capacidad de los modelos para asumir roles y producir respuestas personalizadas basadas en las necesidades del negocio.
La instrucción de roles incentiva al modelo a desempeñarse constantemente dadas las expectativas de su personalidad asignada. Realizamos un ejemplo simple asignando al LLM el rol de una figura histórica en nuestra instrucción para convertir las letras de las canciones en un soneto. A continuación, comparamos los resultados de un modelo asistido sin roles frente a un modelo asistido por roles para las respuestas de chatbot. Concluimos abordando que la respuesta proporcionada por role prompting es más matizada y de apoyo en su lenguaje, proporcionando una atención al cliente elevada.