You don't have access to this class

Keep learning! Join and start boosting your career

Aprovecha el precio especial y haz tu profesi贸n a prueba de IA

Antes: $249

Currency
$209
Suscr铆bete

Termina en:

0 D铆as
11 Hrs
52 Min
46 Seg

Prompt templates en LangChain

8/26
Resources

What is a "prompt template" and how is it used?

Getting started with language models may seem complicated, but prompt templates greatly simplify this process. A prompt template is a structure that is used to convert user input into a clear instruction, thus guiding the desired output of the language model. This approach is crucial for those seeking to get the most out of tools such aslarge language models or chat models.

Prompt templates use a dictionary as input where each key represents a variable to be filled in. The output generated by a template, known as a prompt value, can be used in various ways, either as a text string or a list of messages.

How is a string prompt template created?

One of the simplest types of prompt templates is the string prompt template. Here, you work with a simple input and format it as a text string.

  1. Define the template: You define it using the PromptTemplate module of langchain.core.
  2. Instruction to the template: Example, "tell me a joke".
  3. Input variable: The key within the dictionary, e.g., { topic }, where the topic of the joke is specified.

This approach allows a flexible and clear way to interact with language models in multiple languages.

from langchain.core.prompts import PromptTemplate
prompt_template = PromptTemplate(text="Tell me a joke about {topic}.")result = prompt_template.invoke({"topic": "cats"})

How do you turn templates into a chat conversation?

In addition to the string approach, prompt templates can also be structured as lists of messages, thus creating a conversational dynamic.

  1. Create a basic conversation: Using the ChatPromptTemplate to give a role to each party, either System or User.
  2. Explicitly define roles: Although from the system or in written form, the roles involved must be defined.
  3. Send instructions: Example, "you are a helpful assistant", "tell me a joke about cats".

Using ChatPromptTemplate provides a framework to integrate multiple interactions, enriching the dialog.

from langchain.core.prompts import ChatPromptTemplate
chat_prompt_template = ChatPromptTemplate(messages=[ {"system": "You're a helpful assistant."}, {"user": "Tell me a joke about {topic}."}])result = chat_prompt_template.invoke({"topic": "cats"})

What is "Message Placeholder" and how is it integrated?

The Message Placeholder is essential for those who need more flexibility when integrating multiple messages into a dialog.

  1. Use of placeholders: They allow you to designate specific points in the template where a list of messages can be added.
  2. Tailoring the conversation: Ideal for setting up complex dialogs where it is necessary to vary the participants or go into more detail.

This technique is particularly useful when additional data arises or messages need to be placed in already established sequences.

from langchain.core.prompts import ChatPromptTemplate, HumanMessage, MessagePlaceholder
prompt_template = ChatPromptTemplate(messages=[ {"system": "You are a helpful assistant."}, MessagePlaceholder()])
new_messages = [ HumanMessage(content="Hello"), HumanMessage(content="Goodbye")]
result = prompt_template.invoke({"messages":  new_messages})

The use of prompt templates not only improves the clarity of instructions, but also allows for more involved and enriching interactions with language models. We encourage you to experiment with these tools and share your achievements to continue learning together.

Contributions 9

Questions 1

Sort by:

Want to see more contributions, questions and answers from the community?

Un **prompt template** es una estructura que toma variables de entrada y las convierte en una instrucci贸n clara para un modelo de lenguaje. Estas variables se pasan en un diccionario donde cada clave representa un valor que ser谩 utilizado para completar el template. Hay diferentes tipos de templates: ### Conceptos 煤tiles: 1. **String Prompt Template**: Es el tipo m谩s sencillo, donde se toma una entrada y se convierte en una cadena de texto. Se usa para crear prompts b谩sicos. * **Ejemplo**: Un template podr铆a ser "Dime un chiste sobre {topic}". Luego, se pasa un diccionario con `{"topic": "gatos"}`, y la salida ser铆a "Dime un chiste sobre gatos". 2. **Chat Prompt Template**: Se utiliza para crear una conversaci贸n con diferentes roles, como el sistema, el usuario, o un asistente. Permite generar listas de mensajes estructuradas. * **Ejemplo**: El sistema podr铆a ser "Eres un asistente 煤til", y el usuario podr铆a decir "Dime un chiste sobre perros". El template organizar铆a esta conversaci贸n. 3. **Message Placeholder**: Un lugar reservado en el template donde se puede insertar una lista de mensajes. Esto permite a帽adir m煤ltiples mensajes en un punto espec铆fico del template, ideal para di谩logos flexibles. * **Ejemplo**: En un template de chat, podr铆as tener un placeholder donde se inserten varios mensajes del usuario como "Hola" y "驴C贸mo est谩s?". 4. **Invoke**: M茅todo que permite pasar el diccionario de entrada al template y generar la salida final. Esto reemplaza las variables del template con los valores proporcionados. * **Ejemplo**: Usando el template "Dime un chiste sobre {topic}", al invocar con `{"topic": "perros"}`, la salida ser铆a "Dime un chiste sobre perros". ### Ejemplos: 1. **String Prompt Template** `template = "Dime un chiste sobre {topic}"` `input_data = {"topic": "gatos"`} `resultado = template.format(**input_data) # Salida: "Dime un chiste sobre gatos"` 2. **Chat Prompt Template**: `system_message = "Eres un asistente 煤til"` `user_message = "Dime un chiste sobre gatos"` `# El modelo identifica roles como system y user.` 3. **Message Placeholder**:`mensajes = [` ` {"role": "user", "content": "Hola"`}, ` {"role": "user", "content": "驴C贸mo est谩s?"`} `]`
![](https://static.platzi.com/media/user_upload/image-93c7747a-d1fa-45c8-b19c-9be65a32130c.jpg)
![](https://static.platzi.com/media/user_upload/image-1d51f7c5-5385-4500-afc6-d88fe0a99791.jpg)
`from langchain_openai import ChatOpenAI` `model = ChatOpenAI(model="gpt-4o-mini")` `from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholderfrom langchain_core.messages import HumanMessage` `prompt_template= ChatPromptTemplate.from_messages([聽 聽 ('system', 'Eres un experto en bienes raices en USA'),聽 聽 MessagesPlaceholder('msgs')])` `messages = [聽 聽 HumanMessage(content='En qu茅 me recomiendas inverir?'),聽 聽 HumanMessage(content='qu茅 opinas de los bonos del estado americano?')]` `# Loop through each message and get a responsefor message in messages:聽 聽 # Create a prompt with the current message聽 聽 prompt = prompt_template.invoke({'msgs': [message]})聽 聽 聽 聽 # Get the chat messages from the prompt聽 聽 chat_messages = prompt.to_messages()聽 聽 聽 聽 # Invoke the model and print the response聽 聽 response = model.invoke(chat_messages)聽 聽 print(f"**Pregunta:** {message.content}")聽 聽 print(f"**Respuesta:** {response.content}\n")` ![](https://static.platzi.com/media/user_upload/image-a52a3a95-f480-477d-8101-6aa08b12dbd4.jpg)![]()
Para limpiar la respuesta y hacer que el output sea m谩s claro, puedes personalizar c贸mo se genera el resultado. Aqu铆 tienes una versi贸n mejorada del c贸digo con el objetivo de obtener un output m谩s legible: \# Filtrar los mensajes para obtener solo el contenidocleaned\_response = \[message.content for message in response.messages]
Los placeholders en los prompt templates son 煤tiles porque permiten construir di谩logos m谩s flexibles y din谩micos. En lugar de hacer preguntas directas, los placeholders facilitan la adaptaci贸n de la conversaci贸n seg煤n el contexto del usuario. Esto mejora la calidad de las respuestas al permitir que el modelo entienda mejor la intenci贸n detr谩s de la consulta y pueda generar respuestas m谩s relevantes y espec铆ficas. Adem谩s, permite reutilizar el mismo template con diferentes entradas sin necesidad de crear uno nuevo cada vez.
Los chat templates son una forma espec铆fica de prompt templates que se utilizan para estructurar di谩logos en aplicaciones de chatbot. A diferencia de los prompt templates, que pueden ser simples textos o instrucciones, los chat templates permiten definir roles (como sistema y usuario) y manejar m煤ltiples mensajes en un formato m谩s interactivo y conversacional. Esto proporciona una mejor experiencia en interacciones din谩micas, como en un chat, mientras que los prompt templates son m谩s generales y se pueden utilizar en diversas aplicaciones de procesamiento de lenguaje.
Con esto le entend铆 m谩s yo : ### **Resumen sobre Prompt Templates** Los **Prompt Templates** son "guiones" que gu铆an al modelo de IA sobre c贸mo responder a las preguntas del usuario. La cantidad y el tipo de Prompt Templates que necesitas dependen del **objetivo del agente**: 1. **Si el agente tiene un prop贸sito simple** (como responder preguntas sobre un documento), necesitas **pocos Prompt Templates**, porque su tarea es espec铆fica. 2. **Si el agente tiene m煤ltiples funciones** (responder, traducir, resumir, analizar), necesitar谩s **m谩s Prompt Templates**para cubrir cada tipo de interacci贸n.
Un prompt template es una estructura que utiliza un diccionario como entrada, donde cada clave representa una variable que se debe rellenar. Se emplea para convertir la entrada del usuario en instrucciones claras para el modelo de lenguaje, guiando as铆 su salida. Por ejemplo, en LangChain se pueden crear prompt templates simples como cadenas de texto o en formato de mensajes, permitiendo que el modelo genere respuestas m谩s efectivas y contextualizadas basadas en la informaci贸n proporcionada.