Prompt-Vorlagenvorlagen

Sprachmodelle verwenden Text als Eingabe, der in der Regel als "Prompt" bezeichnet wird. Während der Entwicklung sind Prompts oft nicht direkt fest codiert, da dies nicht förderlich für das Prompt-Management ist. Stattdessen werden Prompt-Vorlagen verwendet, um Prompts ähnlich wie Vorlagen für SMS- oder E-Mail-Inhalte zu verwalten.

Was ist eine Prompt-Vorlage?

Eine Prompt-Vorlage unterscheidet sich im Wesentlichen nicht von den üblicherweise verwendeten E-Mail- oder SMS-Vorlagen. Es handelt sich um eine Zeichenkettenvorlage, die eine Reihe von Vorlagenparametern enthalten kann. Die Werte der Vorlagenparameter können verwendet werden, um die entsprechenden Parameter in der Vorlage zu ersetzen.

Eine Prompt-Vorlage kann folgenden Inhalt enthalten:

  • Anweisungen, die an das große Sprachmodell (LLM) gesendet werden.
  • Eine Reihe von Frage-und-Antwort-Beispielen, um das KI-Modell an das erwartete Format für die Rücksendung von Anfragen zu erinnern.
  • Fragen, die an das Sprachmodell gesendet werden.

Erstellung einer Prompt-Vorlage

Sie können die PromptTemplate-Klasse verwenden, um ein einfaches Prompt zu erstellen. Prompt-Vorlagen können eine beliebige Anzahl von Vorlagenparametern einbetten und dann den Vorlageninhalt mithilfe von Parameterwerten formatieren.

from langchain.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(
    "Erzähl mir einen {adjektiv} Witz über {inhalt}."
)

prompt_template.format(adjektiv="lustigen", inhalt="Hühner")

Ergebnis der Vorlagenausgabe:

'Erzähl mir einen lustigen Witz über Hühner.'

Vorlagen für Chat-Nachrichten-Prompts

Chat-Modelle nehmen eine Liste von Chat-Nachrichten als Eingabe, und der Inhalt dieser Chat-Nachrichten kann ebenfalls mithilfe von Prompt-Vorlagen verwaltet werden. Diese Chat-Nachrichten unterscheiden sich von den Rohzeichenketten, da jeder Nachricht eine "Rolle" zugeordnet ist.

Beispielsweise definiert das Chat-Modell von OpenAI Chat Completion API drei Arten von Rollen für verschiedene Chat-Nachrichten: Assistent, Mensch oder Systemrollen:

  • Assistentennachrichten beziehen sich auf die Antworten der KI.
  • Menschliche Nachrichten beziehen sich auf Nachrichten, die vom Benutzer an die KI gesendet werden.
  • Systemnachrichten werden typischerweise verwendet, um die Identität der KI zu beschreiben.

Beispiel für die Erstellung einer Chat-Nachrichtenvorlage:

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
    [
        ("system", "Du bist ein hilfreicher KI-Bot. Dein Name ist {name}."),
        ("human", "Hallo, wie geht es dir?"),
        ("ai", "Mir geht es gut, danke!"),
        ("human", "{benutzereingabe}"),
    ]
)

nachrichten = chat_template.format_messages(name="Bob", benutzereingabe="Wie ist dein Name?")

Ein weiteres Beispiel für das Nachrichtenformat:

from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI

chat_template = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "Du bist ein hilfreicher Assistent, der den Text des Benutzers "
                "umformuliert, um fröhlicher zu klingen."
            )
        ),
        HumanMessagePromptTemplate.from_template("{text}"),
    ]
)

nachrichten = chat_template.format_messages(text="Ich mag es nicht, leckere Dinge zu essen")
print(nachrichten)

In der Regel verwenden wir nicht direkt die Funktion format_messages, um den Inhalt der Prompt-Vorlage zu formatieren, sondern lassen das Langchain-Framework dies automatisch behandeln.