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.