Formato ShareGPT Format Guide
Formato de conversación multi-turno para entrenamiento de modelos de chat
ConversationSpecification
El formato ShareGPT es una estructura de dataset de conversación JSON/JSONL que captura diálogos multi-turno entre usuarios y asistentes de IA. Nombrado por el sitio web ShareGPT que permitía a los usuarios compartir conversaciones de ChatGPT, el formato representa cada conversación como un objeto que contiene una lista de mensajes, donde cada mensaje tiene un campo "from" (indicando el hablante) y un campo "value" (conteniendo el contenido del mensaje). Esta estructura basada en turnos captura naturalmente el flujo de conversaciones reales, haciéndolo ideal para entrenar modelos de chat que necesitan manejar contexto multi-turno.
El formato estándar ShareGPT usa los identificadores de hablante "human" y "gpt" para mensajes de usuario y asistente respectivamente, con un rol opcional "system" para system prompts. Algunas variantes usan "user" y "assistant" en su lugar. Cada conversación es un diálogo autónomo que comienza con un mensaje humano y típicamente alterna entre turnos humanos y del asistente. El formato soporta conversaciones de longitud arbitraria, desde simple Q&A de un solo turno hasta diálogos extendidos multi-turno con docenas de intercambios.
El formato ShareGPT ha sido ampliamente adoptado por la comunidad open-source de LLM, particularmente a través de datasets como ShareGPT-Vicuna, OpenAssistant Conversations y datos de entrenamiento de WizardLM. Frameworks de entrenamiento incluyendo Axolotl, LLaMA-Factory, FastChat y la biblioteca TRL de Hugging Face soportan ShareGPT como formato de entrada de primera clase. La popularidad del formato proviene de su alineación natural con cómo los usuarios interactúan con modelos de chat — captura no solo respuestas individuales sino las dinámicas conversacionales que los modelos de chat necesitan aprender.
When to Use Formato ShareGPT
Usa el formato ShareGPT cuando tus datos de entrenamiento consistan en conversaciones multi-turno y quieras entrenar un modelo de chat que maneje contexto a través de múltiples intercambios. Es la opción natural para datos de entrenamiento provenientes de interacciones conversacionales reales, transcripciones de soporte al cliente, sesiones de tutoría, o cualquier diálogo donde la respuesta del asistente dependa del historial de conversación precedente. Si tu modelo necesita hacer referencia a partes anteriores de la conversación al generar respuestas, el formato ShareGPT captura este contexto explícitamente.
Elige ShareGPT sobre el formato Alpaca cuando tus ejemplos de entrenamiento involucren múltiples turnos de conversación. Un solo ejemplo de ShareGPT puede contener un hilo de conversación completo, mientras que Alpaca está limitado a pares de instrucción-respuesta de un solo turno. ShareGPT también soporta system prompts dentro de la estructura de conversación, permitiéndote entrenar modelos con diferentes personalidades o directrices de comportamiento incrustadas en los datos de entrenamiento.
El formato ShareGPT es menos adecuado cuando tus datos de entrenamiento son puramente de seguimiento de instrucciones de un solo turno (usa el formato Alpaca por simplicidad), cuando necesitas formato de plantilla de chat estandarizado (usa ChatML que tiene una estructura más rígida), o cuando tu framework de entrenamiento requiere específicamente un formato de conversación diferente. Ten en cuenta que la conversión entre ShareGPT y otros formatos de conversación es directa con la mayoría de los frameworks de entrenamiento.
Schema / Structure
// ShareGPT format schema
interface ShareGPTMessage {
from: "system" | "human" | "gpt"; // Speaker role
value: string; // Message content
}
interface ShareGPTConversation {
conversations: ShareGPTMessage[]; // Ordered list of turns
id?: string; // Optional conversation ID
source?: string; // Optional data source
}
// Alternative variant used by some frameworks
interface ShareGPTVariant {
messages: {
role: "system" | "user" | "assistant";
content: string;
}[];
}Example Data
[
{
"id": "conv_001",
"conversations": [
{"from": "system", "value": "You are a helpful Python programming tutor. Explain concepts clearly with examples."},
{"from": "human", "value": "What's the difference between a list and a tuple in Python?"},
{"from": "gpt", "value": "Lists and tuples are both sequence types in Python, but they have key differences:\n\n**Lists** are mutable — you can add, remove, or change elements after creation:\n```python\nfruits = ['apple', 'banana']\nfruits.append('cherry') # Works fine\nfruits[0] = 'avocado' # Also works\n```\n\n**Tuples** are immutable — once created, they cannot be modified:\n```python\ncoords = (10, 20)\ncoords[0] = 15 # TypeError!\n```\n\nUse lists when your data needs to change, and tuples when it should stay constant."},
{"from": "human", "value": "When would I actually use a tuple over a list?"},
{"from": "gpt", "value": "Great question! Here are the main scenarios for tuples:\n\n1. **Dictionary keys**: Tuples can be dictionary keys, lists cannot\n```python\nlocations = {(40.7, -74.0): 'NYC', (51.5, -0.1): 'London'}\n```\n\n2. **Function return values**: Returning multiple values\n```python\ndef get_dimensions():\n return (1920, 1080) # width, height\n```\n\n3. **Data integrity**: When you want to guarantee data won't be accidentally modified\n\n4. **Performance**: Tuples are slightly faster and use less memory than lists\n\nA good rule of thumb: if the data represents a fixed collection of related items (like x,y coordinates), use a tuple. If it's a collection that may grow or change, use a list."}
]
}
]Ertas Support
Ertas Data Suite soporta completamente el formato ShareGPT para la preparación de datos de entrenamiento conversacionales. Puedes importar datasets JSON/JSONL en formato ShareGPT, aplicar redacción de PII en todos los turnos de conversación manteniendo la coherencia del diálogo, validar la estructura de conversación (asegurando alternancia correcta de turnos y campos requeridos), y exportar datasets procesados para fine-tuning. La plataforma preserva el hilo de conversación durante todas las transformaciones, asegurando que las relaciones de contexto multi-turno permanezcan intactas.
Ertas Studio acepta datasets en formato ShareGPT para fine-tuning de modelos de chat, aplicando automáticamente la plantilla de chat apropiada para la arquitectura de tu modelo objetivo durante la tokenización.
Ship AI that runs on your users' devices.
Early bird pricing starts at $14.50/mo — locked in for life. Plans for builders and agencies.