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 Studio acepta datasets en formato ShareGPT como JSONL en su forma conversations: una lista de mensajes from y value con turnos human y gpt. La pérdida de entrenamiento se calcula solo sobre los turnos gpt, de modo que el modelo aprende a responder. Los datasets ShareGPT de Hugging Face se pueden importar por URL.
Studio aplica la plantilla de chat del modelo base durante el entrenamiento, así que los campos value deben llevar texto plano sin tokens de plantilla. Data Craft, el editor de datasets de Studio, te permite crear y pulir ejemplos de varios turnos como turnos USER y ASSISTANT, con versionado y estado de aprobación.
Ship AI that runs on your users' devices.
Free plan with 30 credits/mo, no card required. Paid plans from $10/mo USD.