Transformers documentation

Patrones de mensajes de chat

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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."}
        ]
    }
]
Update on GitHub