Creación de Plantillas de Prompts en LangChain

Clase 8 de 26Curso de Agentes AI

Resumen

¿Qué es un "prompt template" y cómo se usa?

Comenzar a trabajar con modelos de lenguaje puede parecer complicado, pero los prompt templates simplifican mucho este proceso. Un prompt template es una estructura que se utiliza para convertir la entrada del usuario en una instrucción clara, guiando así la salida deseada del modelo de lenguaje. Este enfoque es crucial para quienes buscan obtener el máximo rendimiento de herramientas como modelos de lenguaje grandes (large language model) o modelos de chat.

Los prompt templates utilizan un diccionario como entrada donde cada clave representa una variable que debe rellenarse. La salida generada por un template, conocida como prompt value, puede ser utilizada de varias maneras, ya sea como una cadena de texto o una lista de mensajes.

¿Cómo se crea un string prompt template?

Uno de los tipos más sencillos de prompt templates es el string prompt template. Aquí, se trabaja con una entrada simple y se le da formato como una cadena de texto.

  1. Definir el template: Se define utilizando el módulo PromptTemplate de langchain.core.
  2. Instrucción al modelo: Ejemplo, "dime un chiste".
  3. Variable de entrada: La clave dentro del diccionario, e.g., { topic }, donde se especifica el tema del chiste.

Este enfoque permite una forma flexible y clara de interactuar con modelos de lenguaje en varios idiomas.

from langchain.core.prompts import PromptTemplate

prompt_template = PromptTemplate(text="Dime un chiste sobre {topic}.")
result = prompt_template.invoke({"topic": "gatos"})

¿Cómo se convierten los templates en una conversación de chat?

Además del enfoque de string, los prompt templates también pueden estructurarse como listas de mensajes, creando así una dinámica conversacional.

  1. Crear una conversación básica: Utilizando el ChatPromptTemplate para darle un papel a cada parte, ya sea System o User.
  2. Definir roles explícitamente: Aunque desde el sistema o de manera escrita, se deben definir los roles involucrados.
  3. Enviar instrucciones: Ejemplo, "eres un asistente útil", "dime un chiste sobre los gatos".

Utilizar ChatPromptTemplate ofrece un marco para integrar múltiples interacciones, enriqueciendo el diálogo.

from langchain.core.prompts import ChatPromptTemplate

chat_prompt_template = ChatPromptTemplate(messages=[
    {"system": "Eres un asistente útil."},
    {"user": "Dime un chiste sobre {topic}."}
])
result = chat_prompt_template.invoke({"topic": "gatos"})

¿Qué es "Message Placeholder" y cómo se integra?

El Message Placeholder es esencial para quienes necesitan una mayor flexibilidad al integrar múltiples mensajes en un diálogo.

  1. Uso de placeholders: Permiten designar puntos específicos en el template donde una lista de mensajes puede ser agregada.
  2. Adaptar la conversación: Ideal para establecer diálogos complejos en los que se requiere variar los participantes o profundizar en detalles.

Esta técnica es particularmente útil cuando surgen datos adicionales o se necesita ubicar mensajes en secuencias ya establecidas.

from langchain.core.prompts import ChatPromptTemplate, HumanMessage, MessagePlaceholder

prompt_template = ChatPromptTemplate(messages=[
    {"system": "Eres un asistente útil."},
    MessagePlaceholder()
])

new_messages = [
    HumanMessage(content="Hola"),
    HumanMessage(content="Adiós")
]

result = prompt_template.invoke({"messages": new_messages})

El uso de prompt templates no solo mejora la claridad de las instrucciones, sino que también permite interacciones más involucradas y enriquecedoras con los modelos de lenguaje. Te animamos a experimentar con estas herramientas y compartir tus logros para seguir aprendiendo juntos.