Crear datasets
Reúne las conversaciones con las que vas a entrenar: impórtalas desde un archivo, tráelas de Supabase o Hugging Face, o guarda como dataset las que ya revisaste.
Qué es un dataset
Un dataset es una colección de conversaciones de ejemplo: lo que pregunta un usuario y lo que tu asistente debería responder. Con esas conversaciones entrenas tu modelo.
Las conversaciones viven en tu proyecto y un dataset las agrupa: la misma conversación puede estar en varios datasets. Si importas sin darle nombre al set, las conversaciones se quedan solo en el proyecto y las ves en Conversaciones › Ver todas.
¿Cuántas conversaciones necesitas?
Como punto de partida, reúne al menos 100; con 500 o más los resultados suelen mejorar. Los criterios completos están en Importar conversaciones.
Dónde está cada cosa
En el menú lateral, el grupo Datasets tiene cuatro entradas:
| Entrada del menú | Ruta | Para qué sirve |
|---|---|---|
| Datos | /datos | Tus datasets agrupados por origen, con filtros de origen y formato. Al abrir uno ves sus conversaciones. |
| Importar datos | /datos/importar | El asistente de importación: sube un archivo o pega el contenido, en tres pasos. |
| Ver todos (clásico) | /datasets | La tabla de datasets, con pestañas para Hugging Face, Supabase y carga desde tu equipo. |
| Exportar | /exportar | Analiza un dataset y descárgalo en JSONL. |
Abre Importar datos
La forma recomendada de crear un dataset es el asistente de importación. En el menú lateral entra a Datasets › Importar datos.
Si todavía no tienes un proyecto, el asistente te pide crear uno primero: las conversaciones siempre se guardan dentro de un proyecto.
Sube o pega tus conversaciones
Arrastra un archivo o haz clic para buscarlo en tu equipo. También puedes pegar el contenido directamente: JSON, JSONL, CSV o un chat exportado de WhatsApp.
El formato se detecta leyendo el contenido, no la extensión: un JSON de varias líneas guardado como .jsonl (o al revés) se lee bien igual. La vista previa te muestra cómo quedaron las conversaciones antes de seguir.
Configura la importación
Todas las opciones son opcionales:
| Opción | Qué hace |
|---|---|
| Quitar datos personales antes de guardar | Viene marcada. Cambia correos, teléfonos, tarjetas, IPs, IDs de WeChat, CURP, RFC, SSN, cédulas chinas y direcciones con calle y número por marcadores como [EMAIL]. No detecta nombres. |
| Idioma de las conversaciones | Español, Inglés u Otro. Arranca en el idioma de tu interfaz y decide el idioma de los marcadores anteriores. |
| Interpretación del texto | Solo para texto plano: Export de WhatsApp, Prefijos de rol (Usuario: / Asistente:) o Líneas alternadas (user/assistant). |
| Título del set | Nombre del dataset que se crea. Si lo dejas vacío, las conversaciones se guardan solo en el proyecto, sin dataset. |
| Identificar herramientas | Detecta con IA qué herramientas (tool calls) necesitan tus conversaciones. Es la única opción con costo y lo ves en MXN antes de confirmar. |
| Formato de exportación | ChatML, Alpaca, ShareGPT o Qwen. Se aplica al exportar o entrenar; las conversaciones siempre se guardan en ChatML. |
| Dividir en sub-datasets | Guarda cada 1,000 conversaciones como un dataset aparte. |
| Marcar como semillas de calidad | Las marca como base para generar más conversaciones con IA. |
| Limitar cuántas procesar | Importa solo las primeras N. Sirve para probar con pocas antes de procesar todo el archivo. |
Revisa y confirma
El último paso muestra un resumen (título del set, idioma, formato de exportación, conversaciones a importar y costo del flujo) y una muestra. Importar no cuesta. Al confirmar, AstrApp:
- Convierte cada conversación a ChatML y descarta las que no tienen mensajes.
- Quita los duplicados del archivo y no crea copias de conversaciones que ya existen en el proyecto. Si reimportas el mismo archivo con otro nombre, el dataset nuevo reutiliza las que ya tenías.
- Importa hasta el tope de conversaciones de tu plan (ver abajo).
- Crea el dataset con la etiqueta Importación, para que sepas de dónde salió.
Máximo 4 MB por importación
El asistente acepta archivos o texto pegado de hasta 4 MB: el servidor corta las peticiones más grandes antes de leerlas. Si tu archivo pesa más, divídelo e impórtalo por partes.
Formatos que acepta
| Formato | Cómo se reconoce | Notas |
|---|---|---|
| JSONL | Cada línea es un objeto JSON completo. | El recomendado: una conversación por línea. |
| JSON | Empieza con { o [ y no es un objeto por línea. | Un arreglo de conversaciones. |
| CSV y TSV | Por la extensión .csv o .tsv. | Una fila por mensaje o una por conversación (abajo). |
| TXT y WhatsApp | Un chat de WhatsApp se detecta por su contenido, con cualquier extensión. | Para otro texto plano eliges cómo interpretarlo. |
| El CSV y el TXT de WeChatMsg y el TXT de WechatExporter, por su contenido. | Archivos .csv o .txt. Eliges quién responde por tu negocio; se revisa antes que WhatsApp. | |
| XML | Empieza con <?xml, <conversation, <chat o <message. | También por la extensión .xml. |
| Parquet | Por la extensión .parquet. | Se procesa en el servidor; con Parquet no se puede identificar herramientas al importar. |
Dentro de JSON y JSONL, AstrApp reconoce ChatML (messages), ShareGPT (conversations con from/value), Alpaca (instruction, input, output), input/output y prompt/completion, y convierte todo a ChatML. El detalle de cada formato está en Formatos de importación.
Chats de WeChat
WeChat no exporta el historial en texto: sube el CSV o el TXT que genera WeChatMsg, o el TXT de WechatExporter. El formato se reconoce por el contenido, no por la extensión.
Se importan solo los mensajes de texto: fotos, audios, stickers, adjuntos y avisos del sistema se omiten, igual que los chats de grupo del CSV, y el asistente te dice cuántos. Tú eliges quién responde por tu negocio y sus mensajes se guardan como assistant; los nombres de los participantes no se guardan. Lo mismo aplica a un chat exportado de WhatsApp. Los tres formatos y el detalle están en WeChat.
Quitar datos personales antes de guardar
El interruptor viene marcado en el asistente de importación y en la importación rápida de Conversaciones. Se aplica antes de guardar y antes de quitar duplicados, así que la vista previa te dice cuántos datos encontró.
No detecta nombres de personas ni direcciones escritas de otra forma, así que revisa la muestra antes de confirmar. Importa estas conversaciones solo si tienes derecho a usarlas para entrenar modelos.
Importar un CSV
AstrApp lee el CSV con un parser que sigue el estándar RFC 4180 (campos entre comillas con comas o saltos de línea adentro) y reconoce dos maneras de organizar las conversaciones.
Modo A: una fila por mensaje
Necesita una columna de rol y una de contenido. Las filas se agrupan en conversaciones por la columna de id y se ordenan por la de orden, si existe.
conversation_id,msg_index,role,content
c1,0,system,Eres un asistente de ventas amable.
c1,1,user,¿Cuál es el precio?
c1,2,assistant,Desde $9.99 al mes.
c2,0,user,¿Tienen soporte?
c2,1,assistant,"Sí, 24/7 por chat y correo."Modo B: una fila por conversación
Cada fila es un par pregunta y respuesta, con system opcional. Es el formato típico de un export de preguntas frecuentes.
system,user,assistant
Eres un asistente de ventas amable.,¿Cuál es el precio?,Desde $9.99 al mes.
Eres un asistente de ventas amable.,¿Tienen soporte?,"Sí, 24/7 por chat y correo."Sin columna de id, el archivo puede quedar como una sola conversación
En el modo A, si tu CSV no trae columna de id de conversación, cada fila con rol system abre una conversación nueva. Si tampoco hay filas system, todo el archivo termina siendo una única conversación. La app te lo avisa, pero es mejor agregar la columna de id desde el origen.
El comportamiento es el mismo en el asistente Importar datos, en Crear dataset de la vista clásica y en POST /api/v1/datasets cuando le mandas filas planas. Los nombres de columna que se reconocen (en español o en inglés), el separador y cómo se normalizan los roles están en Importar CSV.
Formato ChatML
Es el formato en el que AstrApp guarda todas las conversaciones: un arreglo de mensajes, cada uno con su rol (system, user, assistant o tool) y su contenido.
{"messages": [{"role": "system", "content": "Eres un asistente de ventas amable."}, {"role": "user", "content": "¿Cuál es el precio?"}, {"role": "assistant", "content": "Desde $9.99 al mes."}]}
{"messages": [{"role": "system", "content": "Eres un asistente de ventas amable."}, {"role": "user", "content": "¿Tienen soporte?"}, {"role": "assistant", "content": "Sí, 24/7 por chat y correo."}]}Otras formas de crear un dataset
Crear dataset en la vista clásica
En Datasets › Ver todos (clásico) haz clic en Crear dataset (la pestaña Cargar desde mi equipo abre el mismo diálogo). Tienes dos opciones:
- Subir archivo: CSV, JSONL, JSON o TXT. El diálogo lee el archivo en tu navegador y lo sube en lotes de 300 elementos; por eso anuncia un límite de 200 MB. En TXT cada línea se guarda como un registro de texto, así que para un chat de WhatsApp usa el asistente Importar datos.
- Entrada manual: nombre, descripción y el contenido en JSON. Si lo que pegas no es JSON válido, cada línea se guarda como texto suelto, que no sirve para entrenar.
Para un CSV, no uses la zona de arrastre de la vista clásica
La zona Arrastra un archivo o haz clic para subir, arriba de las pestañas, lee el CSV línea por línea y rompe los campos con comas o saltos de línea adentro. Importa tus CSV con el asistente Importar datos o con Crear dataset.
Desde Supabase
En la vista clásica abre la pestaña Supabase y haz clic en Conectar Supabase:
- Escribe la cadena de conexión con el formato
https://[ref].supabase.co|[service_role_key]. - Elige la tabla de la lista o escribe su nombre.
- Ponle nombre al dataset y, si quieres, un system prompt.
AstrApp reconoce tres estructuras: un campo messages con el arreglo ChatML, mensajes agrupados por conversation_id o mensajes sueltos con role y content.
La service_role key abre toda tu base
Úsala solo con un proyecto de Supabase tuyo y rótala si la compartiste.
Desde Hugging Face
La pestaña Hugging Face de la vista clásica busca e importa datasets públicos, detecta su formato y los convierte a ChatML, hasta 5,000 ejemplos por importación. Requiere el plan Professional. Los pasos y los datasets más usados están en Hugging Face Hub.
Desde tus conversaciones
En Conversaciones › Ver todas selecciona las que quieras (por ejemplo, las marcadas como válidas) y haz clic en A dataset. Los pasos están en Guardar como dataset.
Google Drive
La pestaña Google Drive todavía no funciona: su botón dice Próximamente. Mientras tanto, descarga el archivo y súbelo desde tu equipo.
Límites por plan
| Plan | Conversaciones por importación | Datasets |
|---|---|---|
| Gratuito | 100 | 2 |
| Starter | 500 | 5 |
| Growth | 1,500 | 10 |
| Professional | Sin límite | Sin límite |
Si un archivo trae más conversaciones de las que permite tu plan, el asistente te avisa e importa las primeras hasta el tope. El límite de datasets se revisa al crear uno desde Datasets › Ver todos (clásico). Los planes completos están en Planes y precios.
Gestionar tus datasets
La tabla de Datasets › Ver todos (clásico) muestra nombre, formato, filas, fuente, estado y fecha de cada dataset.
Acciones de cada dataset
Abre el menú de la fila (⋯) para ver estas acciones:
| Acción | Qué hace |
|---|---|
| Vista previa | Formato, número de conversaciones, tamaño, fuente y una muestra de ejemplos. |
| Editar conversaciones | Abre el dataset en Conversaciones para editar, validar y limpiar cada ejemplo. El botón Editar de la fila hace lo mismo. |
| Renombrar | Cambia el nombre en la misma fila. También puedes usar el lápiz junto al nombre. |
| Exportar JSON / Exportar CSV | Descarga los ejemplos del dataset en ese formato. |
| Calificar | Muestra de 1 a 5 estrellas para marcar tus mejores datasets. |
| Eliminar | Borra el dataset después de pedirte confirmación. |
Buscar y filtrar
La búsqueda revisa el nombre, la descripción y las etiquetas. Además puedes filtrar por formato (JSON, JSONL, CSV, Parquet o ChatML) y por fuente (Subido, Hugging Face, Manual, Sintetizado o Kommo CRM).
Combinar datasets
Con dos datasets o más, el botón Combinar junta los que elijas en uno nuevo, dentro del proyecto del primero que eliges.
- Deduplicar por fingerprint viene activada: compara cada conversación completa, sin distinguir mayúsculas ni espacios y sin contar el system prompt. Dos conversaciones que solo comparten el saludo no cuentan como duplicadas.
- El orden en que los eliges decide cuál gana: de cada duplicado se queda la copia del dataset elegido primero.
- Solo combina datasets de proyectos de tu organización activa. Si algo falla a medias, no queda un dataset combinado incompleto.
Limpiar y validar los ejemplos
Al abrir el dataset en Conversaciones (vista Dataset) buscas, filtras, validas, etiquetas y editas cada ejemplo. Para reemplazar texto en todo el dataset (por ejemplo, anonimizar datos personales) o reparar herramientas mal formadas, usa las Mini tasks: cambian los ejemplos del dataset sin tocar el proyecto. Evaluar con IA y los micro-agentes trabajan sobre las conversaciones del proyecto.
Marcar como inválida no saca una conversación del dataset
El estado de validación no filtra el entrenamiento. Para entrenar solo con las buenas, filtra por Válida en Conversaciones y guarda esa selección como un dataset nuevo.
Exportar
- Desde la vista clásica: Exportar JSON o Exportar CSV en el menú de cada dataset.
- Desde Datasets › Exportar: Analizar calcula la distribución de roles, los tokens estimados, las llamadas a herramientas y el formato, y te recomienda qué tipo de entrenamiento conviene. El botón de descarga baja el dataset en JSONL, una conversación por línea. El botón Subir a Hugging Face aparece, pero todavía no está disponible.
- Desde Conversaciones: selecciona conversaciones y usa la paleta de comandos (
⌘KoCtrl+K) › Exportar seleccionadas (JSONL).
¿Necesitas más datos?
La síntesis genera conversaciones nuevas con IA a partir de tus semillas o de una URL. Está en todos los planes; los superiores generan más conversaciones por trabajo.