Transformers documentation
Patrones de mensajes de chat
Patrones de mensajes de chat
Los modelos de chat esperan conversaciones como una lista de diccionarios. Cada diccionario utiliza las claves role y content. La clave content contiene el mensaje del usuario que se pasa al modelo. Los modelos de lenguaje de gran escala aceptan texto y herramientas, y los modelos multimodales combinan texto con imágenes, videos y audio.
Transformers utiliza un formato unificado en el que cada tipo de modalidad se especifica explícitamente, lo que facilita combinar y mezclar entradas en un solo mensaje.
Esta guía cubre los patrones de formato de mensajes para cada modalidad, las herramientas, la inferencia por lotes y las conversaciones de varios turnos.
Texto
El texto es el tipo de contenido más básico. Es la base de todos los demás patrones. Pasa tu mensaje a "content" como una cadena.
message = [
{
"role": "user",
"content": "Explain the French Bread Law."
}
]También puede usar el formato explícito "type": "text" para mantener su código consistente cuando agregue imágenes, videos o audio más adelante.
message = [
{
"role": "user",
"content": [{"type": "text", "text": "Explain the French Bread Law."}]
}
]Herramientas
Herramientas son funciones que un modelo de chat puede llamar, como obtener datos meteorológicos en tiempo real, en lugar de generarlos por sí mismo.
El rol assistant gestiona la solicitud de la herramienta. Establezca "type": "function" en la clave "tool_calls" y proporcione su herramienta en la clave "function". Añada la solicitud de la herramienta del asistente a su mensaje.
weather = {"name": "get_current_temperature", "arguments": {"location": "Paris, France", "unit": "celsius"}}
message.append(
{
"role": "assistant",
"tool_calls": [{"type": "function", "function": weather}]
}
)El rol tool gestiona el resultado. Añádalo en "content". Este valor siempre debe ser una cadena de texto.
message.append({"role": "tool", "content": "22"})Multimodal
Los modelos multimodales extienden este formato para manejar imágenes, videos y audio. Cada entrada especifica su "type" y proporciona los medios con "url" o "path".
Imagen
Establezca "type": "image" y use "url" para enlaces o "path" para archivos locales.
message = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
{"type": "text", "text": "What pastry is shown in the image?"}
]
}
]Video
Establezca "type": "video" y use "url" para enlaces o "path" para archivos locales.
message = [
{
"role": "user",
"content": [
{"type": "video", "url": "https://static01.nyt.com/images/2019/10/01/dining/01Sourdough-GIF-1/01Sourdough-GIF-1-superJumbo.gif"},
{"type": "text", "text": "What is shown in this video?"}
]
}
]Audio
Establezca "type": "audio" y use "url" para enlaces o "path" para archivos locales.
message = [
{
"role": "user",
"content": [
{"type": "audio", "url": "https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac"},
{"type": "text", "text": "Transcribe the speech."}
]
}
]Varios mezclados
La lista content acepta cualquier combinación de tipos. El modelo procesa todas las entradas juntas, lo que permite realizar comparaciones o razonamiento entre modalidades.
message = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
{"type": "video", "url": "https://static01.nyt.com/images/2019/10/01/dining/01Sourdough-GIF-1/01Sourdough-GIF-1-superJumbo.gif"},
{"type": "text", "text": "What does the image and video share in common?"},
],
},
{
"role": "user",
"content": [
{"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
{"type": "image", "url": "https://assets.bonappetit.com/photos/57e191f49f19b4610e6b7693/master/w_1600%2Cc_limit/undefined"},
{"type": "text", "text": "What type of pastries are these?"},
],
}
]Por lotes
La inferencia por lotes procesa múltiples conversaciones en una sola pasada hacia adelante para mejorar el rendimiento y la eficiencia. Envuelva cada conversación en su propia lista y, a continuación, páselas juntas como una lista de listas.
messages = [
[
{"role": "user",
"content": [
{"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
{"type": "text", "text": "What type of pastry is this?"}
]
},
],
[
{"role": "user",
"content": [
{"type": "image", "url": "https://assets.bonappetit.com/photos/57e191f49f19b4610e6b7693/master/w_1600%2Cc_limit/undefined"},
{"type": "text", "text": "What type of pastry is this?"}
]
},
],
]Multi-turn
Las conversaciones abarcan múltiples intercambios, alternando entre los roles "user" y "assistant". Cada turno añade un nuevo mensaje a la lista, lo que permite al modelo acceder al historial completo de la conversación. Este contexto ayuda al modelo a generar respuestas más adecuadas.
message = [
{
"role": "user",
"content": [
{"type": "image", "url": "https://assets.bonappetit.com/photos/57ad4ebc53e63daf11a4ddc7/master/w_1280,c_limit/kouign-amann.jpg"},
{"type": "text", "text": "What pastry is shown in the image?"}
]
},
{
"role": "assistant",
"content": [{"type": "text", "text": "This is kouign amann, a laminated dough pastry (i.e., dough folded with layers of butter) that also incorporates sugar between layers so that during baking the sugar caramelizes."}]
},
{
"role": "user",
"content": [
{"type": "image", "url": "https://static01.nyt.com/images/2023/07/21/multimedia/21baguettesrex-hbkc/21baguettesrex-hbkc-videoSixteenByNineJumbo1600.jpg"},
{"type": "text", "text": "Compare it to this image now."}
]
}
]