Modelos de Prompt
Os modelos de linguagem recebem texto como entrada, que geralmente é chamado de "prompt". Durante o desenvolvimento, os prompts geralmente não são codificados diretamente, pois isso não é propício para o gerenciamento de prompts. Em vez disso, são usados modelos de prompt para manter os prompts, semelhantes aos modelos de conteúdo de SMS ou e-mail.
O que é um modelo de prompt?
Um modelo de prompt essencialmente não é diferente dos modelos de e-mail ou SMS comumente usados. É um modelo de string que pode conter um conjunto de parâmetros de modelo. Os valores dos parâmetros do modelo podem ser usados para substituir os parâmetros correspondentes no modelo.
Um modelo de prompt pode incluir o seguinte conteúdo:
- Instruções enviadas ao grande modelo de linguagem (LLM).
- Um conjunto de exemplos de pergunta e resposta para lembrar a IA do formato esperado para retornar solicitações.
- Perguntas enviadas ao modelo de linguagem.
Criando um modelo de prompt
Você pode usar a classe PromptTemplate
para criar um prompt simples. Os modelos de prompt podem incorporar qualquer número de parâmetros de modelo e, em seguida, formatar o conteúdo do modelo usando os valores dos parâmetros.
from langchain.prompts import PromptTemplate
prompt_template = PromptTemplate.from_template(
"Me conte uma piada {adjetivo} sobre {conteúdo}."
)
prompt_template.format(adjetivo="engraçada", conteúdo="galinhas")
Resultado de saída do modelo:
'Me conte uma piada engraçada sobre galinhas.'
Modelos de prompt de mensagens de chat
Os modelos de chat recebem uma lista de mensagens de chat como entrada, e o conteúdo dessas mensagens de chat também pode ser gerenciado usando modelos de prompt. Essas mensagens de chat são diferentes das strings brutas porque cada mensagem está associada a um "papel".
Por exemplo, na API de Completamento de Chat da OpenAI, o modelo de chat da OpenAI define três tipos de papéis para diferentes mensagens de chat: assistente, humano ou papéis do sistema:
- As mensagens do assistente referem-se às respostas da IA.
- As mensagens humanas referem-se às mensagens enviadas pelo usuário à IA.
- As mensagens do sistema são normalmente usadas para descrever a identidade da IA.
Exemplo de criação de um modelo de mensagem de chat:
from langchain_core.prompts import ChatPromptTemplate
chat_template = ChatPromptTemplate.from_messages(
[
("sistema", "Você é um bot de IA útil. Seu nome é {nome}."),
("humano", "Olá, como você está?"),
("ia", "Estou bem, obrigado!"),
("humano", "{input_do_usuário}"),
]
)
mensagens = chat_template.format_messages(nome="Bob", input_do_usuário="Qual é o seu nome?")
Outro exemplo de formato de mensagem:
from langchain.prompts import HumanMessagePromptTemplate
from langchain_core.messages import SystemMessage
from langchain_openai import ChatOpenAI
chat_template = ChatPromptTemplate.from_messages(
[
SystemMessage(
content=(
"Você é um assistente útil que reescreve o texto do usuário "
"para parecer mais animado."
)
),
HumanMessagePromptTemplate.from_template("{texto}"),
]
)
mensagens = chat_template.format_messages(text="Eu não gosto de comer coisas gostosas")
print(mensagens)
Normalmente, não usamos diretamente a função format_messages
para formatar o conteúdo do modelo de prompt, mas deixamos o framework Langchain lidar automaticamente com isso.