Rollen-Prompting mit IBM watsonx und Granite

Vanna Winland

AI Advocate & Technology Writer

Anna Gutowska

AI Engineer, Developer Advocate

IBM

Was ist Rollen-Prompting?

In diesem Tutorial führen wir Sie Schritt für Schritt durch eine Prompt-Engineering-Technik namens Rollen-Prompting. Wir verwenden ein IBM Granite-Modell, um Personas für differenzierte Modellausgaben zuzuweisen.

Rollenprompting ist eine Prompt Engineering-Technik, die ein KI-Modell anweist, beim Generieren einer Antwort eine bestimmte Rolle oder Persona einzunehmen. Mit dieser Technik lassen sich Tonfall, Stil und Verhalten des Modells steuern, was zu ansprechenderen Ausgaben führen kann.

Beim Prompt Engineering geht es darum, die Eingabe des Modells zu optimieren, damit es mit angemessenen, aussagekräftigen Antworten antwortet. Zero-Shot- und Few-Shot-Prompting sind zwei beliebte Techniken für die Konversation mit großen Sprachmodellen (LLMs). LLMs haben eine natürliche Fähigkeit, Aufgaben zur Verarbeitung natürlicher Sprache (NLP) auszuführen, da sie menschliche Sprache verarbeiten und interpretieren können. Die sprachlichen Fähigkeiten von KI-Modellen sind wertvoll für Aufgaben, die von Chatbot-Konversationen und Multiagenten-Interaktionen bis hin zu offenem kreativem Schreiben reichen. 

Generative KI (Gen AI) wird persönlicher, wenn ein LLM angewiesen wird, als eine bestimmte Person zu agieren, um die spezifischen Bedürfnisse einer Rolle zu erfüllen. Wenn der KI eine bestimmte Rolle zugewiesen wird, können ihre Antworten genauer und relevanter ausfallen. KI-Modelle nutzen riesige Datensätze, sodass die zugewiesene Rolle alles sein kann: eine Lehrkraft, eine historische Persönlichkeit, ein Verkäufer oder Ähnliches. Die einzige Grenze ist die eigene Vorstellungskraft. Dieser Aspekt macht das Rollen-Prompting, oder Persona-Prompting, zu einer so effektiven Technik. Dank seiner Anpassungsfähigkeit ist ein KI-Modell ein Meister der Tarnung. Er kann Antworten generieren, die auf die spezifischen Bedürfnisse eines Benutzers oder Systems zugeschnitten sind.

Wie das Rollenprompting verwendet wird

Mithilfe von Rollen-Prompting kann einem Chatbot oder KI-Agenten eine Persona gegeben werden, um eine bessere Interaktion mit Benutzern bzw. anderen Bearbeitern zu ermöglichen. Wenn Sie mit Prompts vertraut sind, haben Sie vielleicht bereits Rollen-Prompting in Aktion erlebt. Zum Beispiel verwenden viele Frameworks rollenspielbasierte Agenten, um Aufgaben zu erledigen und effektiv zusammenzuarbeiten. ChatDev verwendet eine Prompting-Technik, die als Selbstaufmerksamkeitsmechanismus bezeichnet wird. Dieser Mechanismus definiert klar die Rolle des Agenten, was als Richtlinie für die generierten Ausgaben dient.

Voraussetzungen

Um diesem Tutorial folgen zu können, benötigen Sie ein IBM® Cloud-Konto, um ein watsonx.ai- Projekt erstellen zu können.

Schritte

Schritt 1. Einrichten Ihrer Umgebung 

Sie können zwar aus mehreren Tools wählen, aber dieses Tutorial führt Sie durch die Einrichtung eines IBM® Kontos für die Verwendung eines Jupyter Notebook. Jupyter Notebooks werden häufig in der Data Science eingesetzt, um Code, Text, Bilder und Datenvisualisierungen zu kombinieren und eine fundierte Analyse zu formulieren.

  1. Melden Sie sich mit Ihrem IBM Cloud-Konto bei watsonx.ai Runtime an.
  2. Erstellen Sie ein watsonx.ai-Projekt.

                 Die Projekt-ID finden Sie unter Projekt > Verwalten > Allgemein > Projekt-ID.
                 Sie benötigen diese ID für dieses Tutorial.

 3.  Erstellen Sie ein Jupyter Notebook.

Mit diesem Schritt wird eine Notebook-Umgebung geöffnet, in die Sie den Code aus diesem Tutorial kopieren können, um selbst eine Zero-Shot-Klassifizierung durchzuführen. Alternativ können Sie dieses Notebook auf Ihr lokales System herunterladen und als Asset in Ihr watsonx.ai-Projekt hochladen. Dieses Jupyter Notebook ist auf GitHub verfügbar .

Schritt 2. Richten Sie eine watsonx.ai Laufzeit-Instanz und einen API-Schlüssel ein

In diesem Schritt verknüpfen Sie Ihr Projekt mit dem watsonx.ai-Service.

  1. Erstellen Sie eine watsonx.ai Runtime-Instanz (wählen Sie den Lite-Plan als kostenlose Instanz).

  2. Generieren Sie einen API-Schlüssel in watsonx.ai.

  3. Verknüpfen Sie watsonx.ai Runtime mit dem Projekt, das Sie in watsonx.ai erstellt haben.

Schritt 3. Installieren und Importieren von relevanten Bibliotheken und Einrichten der Zugangsdaten

Für dieses Tutorial benötigen wir einige Bibliotheken und Module. Stellen Sie sicher, dass Sie die folgenden Dateien importieren. Wenn sie nicht installiert sind, wird das Problem durch eine schnelle Pip-Installation behoben.

%pip install -q -U langchain_ibm 
%pip install –q ibm_watsonx_ai 
 
import getpass 
 
from langchain_ibm import WatsonxLLM 
from ibm_watsonx_ai.metanames import GenTextParamsMetaNames as GenParams 

Schritt 4. Einrichten der watsonx Zugangsdaten

Führen Sie den folgenden Befehl aus, um Ihren watsonx.ai Runtime-API-Schlüssel und Ihre Projekt-ID einzugeben und zu speichern:

credentials = { 
    "url": "https://us-south.ml.cloud.ibm.com", 
    "apikey": getpass.getpass("Please enter your watsonx.ai Runtime API key (hit enter): "), 
    "project_id": getpass.getpass("Please enter your project ID (hit enter): "), 
}

Schritt 5. Richten Sie das Modell für das Rollenprompting ein

Als Nächstes richten wir Granite-3.1-8B-Instruct von IBM ein, um Rollenprompting durchzuführen.

model = WatsonxLLM( 
model_id =  "ibm/granite-3-8b-instruct", 
url = credentials.get("url"), 
apikey = credentials.get("apikey"), 
project_id =  credentials.get("project_id"), 
params={ 
        GenParams.MAX_NEW_TOKENS: 500, 
        GenParams.MIN_NEW_TOKENS: 1, 
        GenParams.REPETITION_PENALTY: 1.1, 
        GenParams.TEMPERATURE: 0.7, # Adjust for variable responses 
        GenParams.TOP_K: 100, 
        GenParams.TOP_P: 0, 
    }, 
)

Schritt 6. Songtexte in Sonette verwandeln

Um ein einfaches und unterhaltsames Beispiel für Rollenprompting zu geben, bitten wir das Model, die Rolle einer berühmten Figur, William Shakespeare, anzunehmen. Wir werden das Modell mit seiner neu zugewiesenen Rolle bitten, einige Liedtexte im Stil von Shakespeares berühmten Sonetten umzuschreiben.

Der folgende Codeblock richtet den Prompt ein, auf den das Modell reagieren soll, und definiert ihn. Sie können den Titel nach Belieben ändern, aber beachten Sie, dass Granite nicht mit urheberrechtlich geschützten Inhalten trainiert wurde. Wenn Sie einen Titel auswählen, der nicht Teil der öffentlichen Domain ist, beispielsweise „Espresso“ von Sabrina Carpenter, müssen Sie auch den Text mit dem Prompt einfügen.   
 
Damit der Prompt reibungslos funktioniert, wird in diesem Beispiel das klassische Wiegenlied für Kinder „Twinkle, Twinkle, Little Star“ von Jane Taylor aus dem Jahr 1806 verwendet. Führen Sie den Codeblock aus, um sowohl Ihren Prompt als auch einen Beispieltext für die Eingabe zu definieren.

def generate_text(prompt): 
    response = None  # Ensure the variable is defined before the try block 
    try: 
        response = model.generate([prompt]) 
        return str(response) 
    except Exception as e: 
        print(f"Error: {e}") 
        if response: 
            print(f"Response: {response}") 
            return None 
    # Define the prompt here 
defined_prompt = "You are William Shakespeare, rewrite ‘Twinkle, Twinkle, Little Star’ by Jane Taylor as a sonnet."

Schritt 7. Generieren einer Antwort

Sobald der Prompt definiert ist, können wir den nächsten Codeblock ausführen, damit das Modell eine Ausgabe generieren kann. Hoffen wir, dass es unseren literarischen Standards entspricht.

# Generate and print the text based on the defined prompt 
generated_text = generate_text(defined_prompt) 
print("Generated text:", generated_text)


Hier ist die Ausgabe des Modells mit lesbarer Formatierung:

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
.“

Das Modell konnte auf den Prompt antworten und das Lied in ein Sonett im Stil von Shakespeare umschreiben. s hielt sich dabei an die Regeln und den Stil, die der Prompt voraussetzte. *Beachten Sie, dass aufgrund des kreativen Charakters des Prompts Ihre Ausgabe anders aussehen könnte als dieses Beispiel.

Schritt 8. Verwenden von Rollen-Prompting für einfühlsamere Chatbot-Antworten

In diesem nächsten Beispiel vergleichen wir einen einfachen Prompt mit einem rollenbasierten Prompt. Nehmen wir an, eine Veterinärpraxis hat kürzlich einen virtuellen Assistenten auf ihrer Webseite implementiert. Um den besten Kundensupport zu bieten, möchte die Praxis sicherstellen, dass sich die Tierbesitzer auch bei ihren virtuellen Interaktionen gehört und unterstützt fühlen – ein nachvollziehbares Ziel für viele Unternehmen. Ein Besucher könnte eine Frage stellen wie: „Meine Hauskatze hat in letzter Zeit viel geniest und leckt sich die Pfoten. Was soll ich tun?“ In diesem Szenario wurde dem Modell keine Rolle in seinem Prompt zugewiesen. Wir verwenden das Modell einfach ohne Eingabehilfen.

def generate_text(prompt): 
    response = None  # Ensure the variable is defined before the try block 
    try: 
        response = model.generate([prompt]) 
        return str(response) 
    except Exception as e: 
        print(f"Error: {e}") 
        if response: 
            print(f"Response: {response}") 
            return None 
    # Define the prompt here 
defined_prompt = " My pet cat has been sneezing a lot lately and is licking her paws what should I do?" 
 
# Generate and print the text based on the defined prompt 
generated_text = generate_text(defined_prompt) 
print("Generated text:", generated_text)


Entsprechend antwortet das Modell mit Ratschlägen und Informationen. Es gibt jedoch keine persönliche Note und die Antworten unterscheiden sich kaum von den Ergebnissen einer Suchmaschine. Die Ausgabe des Modells ist ungefiltert und es mangelt ihr an Kreativität. Diese Lösung mag akzeptabel sein, aber sie hebt den virtuellen Assistenten dieser Veterinärpraxis nicht von den anderen ab. Versuchen wir es mit derselben Frage noch einmal, diesmal mit der Zuweisung der Rolle eines „mitfühlenden, professionellen und erfahrenen Tierarztes“.

def generate_text(prompt): 
    response = None  # Ensure the variable is defined before the try block 
    try: 
        response = model.generate([prompt]) 
        return str(response) 
    except Exception as e: 
        print(f"Error: {e}") 
        if response: 
            print(f"Response: {response}") 
            return None 
    # Define the prompt here 
defined_prompt = "You are a compassionate, professional, and experienced veteraniarian. My pet cat has been sneezing a lot lately and is licking her paws what should I do?" 
 
# Generate and print the text based on the defined prompt 
generated_text = generate_text(defined_prompt) 
print("Generated text:", generated_text)


Die Sprache in der Antwort des Modells ist menschlicher, da sie ein emotionales Bewusstsein für den Kontext aufweist, das bei dem einfachen Systemprompt fehlte. Das Modell war in der Lage, diesen Ton zu erreichen und gleichzeitig eine vollständige und relevante Antwort zu liefern, was beweist, dass es sich um eine nuanciertere Antwort handelt. Diese Art der menschlichen Interaktion mit künstlicher Intelligenz ist eine Möglichkeit, subjektive Erwartungen innerhalb von Unternehmen und Anwendungen zu erfüllen.

Warum ist Rollen-Prompting so wichtig?

Wenn Sie ein Entwickler oder Unternehmen sind und Ihre generativen KI-Anwendungen um mehr Personalisierung und sinnvolle Interaktionen erweitern möchten, sollten Sie sich darüber im Klaren sein, wie das Rollenprompting einen Unterschied machen kann. Die meisten modernen Sprachmodelle sind zum Rollenprompting in der Lage. Einige Basismodelle erfassen möglicherweise nicht die Nuancen der Rolle oder halten ihre Antworten nicht konsistent, während andere möglicherweise nicht darauf abgestimmt sind, auf eine bestimmte Weise zu reagieren. Foundation Models wie die Granite-Serie von IBM werden anhand großer Mengen unternehmensspezifischer Daten trainiert. Dadurch können die Modelle besser Rollen übernehmen, um maßgeschneiderte Antworten auf der Grundlage von Geschäftsanforderungen zu erzeugen.

Zusammenfassung

Rollenprompting ermutigt das Modell, entsprechend den Erwartungen an die ihm zugewiesene Rolle konstant zu agieren. Wir haben ein einfaches Beispiel aufgeführt, indem wir dem LLM die Rolle einer historischen Persönlichkeit in unserem Prompt zugewiesen haben, um einen Songtext in ein Sonett zu verwandeln. Als Nächstes haben wir die Ausgabe eines Modells ohne Rollenprompting mit der eines Modells mit Prompt für Chatbot-Antworten verglichen. Wir haben festgestellt, dass die Antwort durch das Rollenprompting in ihrer Sprache nuancierter und unterstützender ist, was eine bessere Kundenbetreuung bietet.

Weiterführende Lösungen
IBM watsonx.ai

Trainieren, validieren, optimieren und implementieren Sie generative KI, Foundation Models und maschinelle Lernfunktionen mit IBM watsonx.ai, einem Studio der nächsten Generation für AI Builder in Unternehmen. Erstellen Sie KI-Anwendungen mit einem Bruchteil der Zeit und Daten.

watsonx.ai erkunden
Lösungen im Bereich künstlicher Intelligenz

Setzen Sie KI in Ihrem Unternehmen ein
– mit branchenführendem Fachwissen im Bereich KI und dem umfassenden Lösungsportfolio von IBM an Ihrer Seite.

Erkunden Sie KI-Lösungen
Beratung und Services zu künstlicher Intelligenz (KI)

Die KI-Services von IBM Consulting unterstützen Sie dabei, die Art und Weise, wie Unternehmen mit KI arbeiten, neu zu denken.

KI-Services entdecken
Machen Sie den nächsten Schritt

Mithilfe von KI liefert IBM Concert wichtige Erkenntnisse über Ihre Abläufe und gibt anwendungsspezifische Empfehlungen zur Verbesserung. Entdecken Sie, wie Concert Ihr Unternehmen voranbringen kann.

Entdecken Sie Concert Erkunden Sie Lösungen zur Geschäftsprozessautomatisierung