Modelli di Prompt

I modelli di prompt vengono utilizzati per mantenere e gestire i prompt utilizzati come input dai modelli linguistici. Sono simili ai modelli utilizzati per il contenuto di SMS o email durante lo sviluppo.

Cos'è un modello di prompt?

Un modello di prompt è essenzialmente simile ai modelli di email o SMS comunemente usati. È un modello di stringhe che può contenere un insieme di parametri del modello. I valori dei parametri del modello possono essere utilizzati per sostituire i parametri corrispondenti nel modello.

Un modello di prompt può includere i seguenti contenuti:

  • Istruzioni inviate al grande modello linguistico (LLM).
  • Un insieme di esempi di domande e risposte per ricordare all'IA il formato atteso per le richieste di ritorno.
  • Domande inviate al modello linguistico.

Creazione di un modello di prompt

È possibile utilizzare la classe PromptTemplate per creare un semplice prompt. I modelli di prompt possono incorporare un qualsiasi numero di parametri del modello e quindi formattare il contenuto del modello utilizzando i valori dei parametri.

from langchain.prompts import PromptTemplate

modello_prompt = PromptTemplate.from_template(
    "Dimmi una barzelletta {aggettivo} su {contenuto}."
)

modello_prompt.format(aggettivo="divertente", contenuto="galline")

Risultato dell'output del modello:

'Dimmi una barzelletta divertente su galline.'

Modelli di prompt per messaggi di chat

I modelli di chat prendono una lista di messaggi di chat come input e il contenuto di questi messaggi di chat può anche essere gestito utilizzando modelli di prompt. Questi messaggi di chat sono diversi dalle stringhe normali perché ciascun messaggio è associato a un "ruolo".

Ad esempio, nell'API di completamento della chat di OpenAI, il modello di chat di OpenAI definisce tre tipi di ruoli per diversi messaggi di chat: assistente, umano o ruoli di sistema:

  • I messaggi dell'assistente si riferiscono alle risposte dell'IA.
  • I messaggi umani si riferiscono ai messaggi inviati dall'utente all'IA.
  • I messaggi di sistema vengono tipicamente utilizzati per descrivere l'identità della IA.

Esempio di creazione di un modello di messaggio di chat:

from langchain_core.prompts import ChatPromptTemplate

modello_chat = ChatPromptTemplate.from_messages(
    [
        ("sistema", "Sei un utile bot AI. Il tuo nome è {nome}."),
        ("umano", "Ciao, come stai?"),
        ("IA", "Sto bene, grazie!"),
        ("umano", "{input_utente}"),
    ]
)

messaggi = modello_chat.format_messages(nome="Bob", input_utente="Qual è il tuo nome?")

Altro esempio di formato messaggio:

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

modello_chat = ChatPromptTemplate.from_messages(
    [
        SystemMessage(
            content=(
                "Sei un assistente utile che riscrive il testo dell'utente per "
                "renderlo più allegro."
            )
        ),
        HumanMessagePromptTemplate.from_template("{testo}"),
    ]
)

messaggi = modello_chat.format_messages(testo="Non mi piace mangiare cose gustose")
print(messaggi)

Di solito, non utilizziamo direttamente la funzione format_messages per formattare il contenuto del modello di prompt, ma lasciamo che il framework Langchain lo gestisca automaticamente.