Modèles de prompt

Les modèles de langage prennent du texte en entrée, généralement appelé "prompt". Pendant le développement, les prompts ne sont souvent pas directement codés en dur, car cela ne facilite pas la gestion des prompts. Au lieu de cela, on utilise des modèles de prompt pour maintenir les prompts, similaires aux modèles de contenu SMS ou email.

Qu'est-ce qu'un modèle de prompt?

Un modèle de prompt n'est essentiellement pas différent des modèles d'email ou de SMS couramment utilisés. Il s'agit d'un modèle de chaîne qui peut contenir un ensemble de paramètres de modèle. Les valeurs des paramètres de modèle peuvent être utilisées pour remplacer les paramètres correspondants dans le modèle.

Un modèle de prompt peut inclure le contenu suivant:

  • Instructions envoyées au grand modèle de langage (LLM).
  • Un ensemble d'exemples de questions-réponses pour rappeler à l'IA le format attendu pour les demandes de retour.
  • Questions envoyées au modèle de langage.

Création d'un modèle de prompt

Vous pouvez utiliser la classe PromptTemplate pour créer un prompt simple. Les modèles de prompt peuvent incorporer un nombre quelconque de paramètres de modèle, puis formater le contenu du modèle à l'aide des valeurs des paramètres.

from langchain.prompts import PromptTemplate

prompt_template = PromptTemplate.from_template(
    "Raconte-moi une blague {adjectif} à propos de {contenu}."
)

prompt_template.format(adjectif="marrante", contenu="des poules")

Résultat de sortie du modèle:

'Raconte-moi une blague marrante à propos de des poules.'

Modèles de prompt de messages de chat

Les modèles de chat prennent une liste de messages de chat en entrée, et le contenu de ces messages de chat peut également être géré à l'aide de modèles de prompt. Ces messages de chat sont différents des chaînes brutes car chaque message est associé à un "rôle".

Par exemple, dans l'API de complétion de chat d'OpenAI, le modèle de chat d'OpenAI définit trois types de rôles pour différents messages de chat: assistant, humain ou système:

  • Les messages d'assistant se réfèrent aux réponses de l'IA.
  • Les messages humains se réfèrent aux messages envoyés par l'utilisateur à l'IA.
  • Les messages système sont généralement utilisés pour décrire l'identité de l'IA.

Exemple de création d'un modèle de message de chat:

from langchain_core.prompts import ChatPromptTemplate

chat_template = ChatPromptTemplate.from_messages(
    [
        ("système", "Tu es un bot IA utile. Ton nom est {nom}."),
        ("humain", "Bonjour, comment ça va?"),
        ("ia", "Je vais bien, merci!"),
        ("humain", "{user_input}"),
    ]
)

messages = chat_template.format_messages(nom="Bob", user_input="Quel est ton nom?")

Autre exemple de format de message:

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

chat_template = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "Tu es un assistant utile qui réécrit le texte de l'utilisateur pour "
                "le rendre plus enjoué."
            )
        ),
        HumanMessagePromptTemplate.from_template("{text}"),
    ]
)

messages = chat_template.format_messages(text="Je n'aime pas manger des choses délicieuses")
print(messages)

Généralement, nous n'utilisons pas directement la fonction format_messages pour formater le contenu du modèle de prompt, mais laissons plutôt le framework Langchain le gérer automatiquement.