Introdução ao Prompt do LangChain

Aprenda a utilizar Prompts em Modelos de Linguagem com o LangChain

Ricardo Reis
3 min readMay 22, 2023

--

Prompts

Em inteligência artificial, um prompt é a entrada dada ao modelo de linguagem para que ele possa gerar uma resposta. Por exemplo, se você está interagindo com um chatbot, tudo o que você digita para o bot é considerado um prompt. Os prompts podem ser simples strings (texto) ou uma lista de mensagens, dependendo do tipo de modelo de linguagem que você está usando.

Um prompt é o valor passado para o Modelo de Linguagem.

Esse valor pode ser uma string (para LLMs) ou uma lista de mensagens (para modelos de bate-papo).

Os tipos de dados desses prompts são bastante simples, mas sua construção é tudo menos isso. Os adereços de valor do LangChain aqui incluem:

  • Uma interface padrão para prompts de string e prompts de mensagem
  • Uma interface padrão (para começar) para modelos de prompt de string e modelos de prompt de mensagem
  • Example Selectors (Seletores de exemplo): métodos para inserir exemplos no prompt para o modelo de linguagem seguir
  • Output Parsers (Analisadores de Saída): métodos para inserir instruções no prompt como o formato no qual o modelo de linguagem deve gerar informações, bem como métodos para analisar essa saída de string em um formato.

A documentação oficial do LangChain tem exemplos detalhados para os tipos específicos de prompts de string, tipos específicos de prompts de chat, seletores de exemplo e analisadores de saída.

PromptTemplates

PromptTemplates são responsáveis ​​por construir um valor de prompt. Esses PromptTemplates podem fazer coisas como formatação, seleção de exemplo e muito mais. Em um nível alto, são basicamente objetos que expõem um método format_prompt para construir um prompt. Sob o capô, QUALQUER COISA pode acontecer.

Em outras palavras, o PromptTemplate é uma classe da biblioteca langchain que permite criar prompts de maneira eficiente e estruturada. Esses templates podem fazer coisas como formatar o prompt, selecionar exemplos e muito mais. Basicamente, esses templates são objetos que possuem um método chamado format_prompt, que é usado para construir o prompt. A ideia é que você possa inserir variáveis em seu template e então formatar o prompt com valores específicos mais tarde.

Por exemplo, no código a seguir, um PromptTemplate é criado a partir do texto "tell me a joke about {subject}". O "{subject}" é um espaço reservado que pode ser substituído por qualquer string. Depois, o método format_prompt é chamado com o argumento subject="soccer", substituindo "{subject}" por "soccer".

from langchain.prompts import PromptTemplate, ChatPromptTemplate
string_prompt = PromptTemplate.from_template("tell me a joke about {subject}")
chat_prompt = ChatPromptTemplate.from_template("tell me a joke about {subject}")
string_prompt_value = string_prompt.format_prompt(subject="soccer")
chat_prompt_value = chat_prompt.format_prompt(subject="soccer")

to_string

Este é o método que você chama para converter o valor do prompt em uma string, que é o que o modelo de linguagem espera quando você o está usando em um contexto de modelo de linguagem de longo alcance (LLM). Ou seja, to_string é chamado ao passar para um LLM (que espera texto bruto).

string_prompt_value.to_string()
'tell me a joke about soccer'
chat_prompt_value.to_string()
'Human: tell me a joke about soccer'

to_messages

Este é o método que você chama para converter o valor do prompt em uma lista de mensagens, que é o que o modelo de linguagem espera quando você o está usando em um contexto de modelo de conversação (ChatModel). Ou seja, to_messages é chamado ao passar para ChatModel (que espera uma lista de mensagens).

string_prompt_value.to_messages()
[HumanMessage(content='tell me a joke about soccer', additional_kwargs={}, example=False)]
chat_prompt_value.to_messages()
[HumanMessage(content='tell me a joke about soccer', additional_kwargs={}, example=False)]

LangChain — Índice

Clique no link abaixo para acessar a página que serve como um índice abrangente, reunindo todos os links para os nossos tutoriais sobre LangChain.

--

--

No responses yet