Cómo entrenar tu propio tokenizador BPE para español
En el artículo anterior vimos que el tokenizador de GPT-2 (tiktoken) no está optimizado para español. «Aprendizaje automático» ocupaba 9 tokens y «procesamiento del lenguaje natural» 11. La solución no es aplicar reglas lingüísticas — BPE no entiende de diptongos — sino entrenar nuestro propio tokenizador con datos en español.
Y funciona. Hemos entrenado un BPE con los 18 GB completos de la Wikipedia en español y el resultado es una reducción del 59% en el número de tokens respecto al tokenizador de GPT-2.
Por qué entrenar tu propio tokenizador
Cada modelo de lenguaje exitoso tiene su propio tokenizador, entrenado con el corpus específico de ese modelo:
| Modelo | Tokenizador | Vocabulario | Entrenado con |
|---|---|---|---|
| GPT-2 | BPE (tiktoken) | 50.257 | Texto inglés |
| GPT-4 | BPE (tiktoken) | ~100.000 | Multilingüe |
| LLaMA 3 | BPE (SentencePiece) | 128.000 | Multilingüe |
| **Nuestro BPE Español** | **BPE (HF tokenizers)** | **128.000** | **Wikipedia española (18 GB)** |
| Frase | tiktoken (inglés) | BPE español 128K | Mejora |
|---|---|---|---|
| «aprendizaje automático» | 9 tokens | **2 tokens** | **−78%** |
| «procesamiento del lenguaje natural» | 11 tokens | **4 tokens** | **−64%** |
| «construyamos» | 5 tokens | **2 tokens** | **−60%** |
| «desafortunadamente» | 6 tokens | **2 tokens** | **−67%** |
| «espectrofotometría» | 8 tokens | **3 tokens** | **−62%** |
| «inteligencia artificial» | 4 tokens | **2 tokens** | **−50%** |
| «Hola, ¿cómo estás?» | 11 tokens | **6 tokens** | **−45%** |
| «tokenización» | 4 tokens | **3 tokens** | **−25%** |
| **Promedio** | **7.3 tokens** | **3.0 tokens** | **−59%** |
| Frase | tiktoken (inglés) | BPE Wikipedia ES | Mejora |
|---|---|---|---|
| «aprendizaje» | 5 tokens | 1 token | −80% |
| «procesamiento del lenguaje natural» | 11 tokens | 4 tokens | −64% |
| «inteligencia artificial» | 4 tokens | 2 tokens | −50% |
| «atención» | 3 tokens | 1 token | −67% |
| «construyamos» | 5 tokens | 3 tokens | −40% |
| «tokenización» | 4 tokens | 3 tokens | −25% |
| «Hola, ¿cómo estás?» | 11 tokens | 9 tokens | −18% |
| «fine tuning» | 2 tokens | 5 tokens | +150% (el inglés es mejor para inglés) |
El BPE entrenado con Wikipedia aprende la palabra «aprendizaje» como un solo token, «procesamiento» como uno solo, «atención» como uno solo. Con 500 MB de texto español, el BPE descubre naturalmente que las palabras largas del español merecen su propio token.
El contraejemplo perfecto: «fine tuning» sale mejor con tiktoken (2 tokens) que con el BPE español (5 tokens). ¿Por qué? Porque «fine» y «tuning» son palabras inglesas muy frecuentes en el corpus inglés de GPT-2, pero apenas aparecen en la Wikipedia española. Esto confirma que BPE aprende del idioma de su corpus, no de reglas universales.
La lección: si quisieras construir un LLM para español, entrenarías tu propio tokenizador BPE con cientos de GB de texto en español. El algoritmo descubre por sí solo que sufijos como «ción», «miento», «amiento», «mente», «ando» son unidades frecuentes que merecen su propio token. No necesita reglas — necesita datos.
Embeddings: de números a significado
Una vez que tenemos token IDs, necesitamos convertirlos en vectores que el modelo pueda procesar. Aquí entran los embeddings.
Un embedding es simplemente un vector de números reales que representa el significado de un token en un espacio de alta dimensionalidad. La capa de embedding no es más que una tabla lookup: para cada token ID, devuelve su vector correspondiente.
En GPT-2 small, cada token se convierte en un vector de 768 dimensiones. En GPT-3, son 12.288 dimensiones.
import torch
embedding_layer = torch.nn.Embedding(tokenizer.n_vocab, 768)
texto = "Hola mundo, construyamos un LLM desde cero"
tokens_tensor = torch.tensor(tokenizer.encode(texto))
embeddings = embedding_layer(tokens_tensor)
print(embeddings.shape) # (17 tokens, 768 dimensiones)
Resultado real:
Embeddings forma: torch.Size([17, 768])
Token 'H': [0.13, -0.40, 0.47, -0.45, ...] (28.23 de norma)
Cada uno de los 17 tokens de nuestra frase se convierte en un vector de 768 números aleatorios que, durante el entrenamiento, se irán refinando para capturar relaciones semánticas.
Codificación posicional: el orden importa
Los transformers (a diferencia de las RNNs) no tienen un sentido inherente del orden de las palabras. Necesitamos añadir explícitamente información sobre la posición de cada token. La implementación más simple suma la posición a una dimensión del embedding:
def positional_encoding(seq_len, d_model):
pos = torch.arange(seq_len).unsqueeze(1)
pe = torch.zeros(seq_len, d_model)
pe[:, 0] = pos.squeeze()
return pe
input_final = embeddings + positional_encoding(17, 768)
Resultado: el vector resultante tiene media ~0 y desviación estándar ~1 — exactamente lo que el transformer espera recibir.
Rendimiento en GTX 1070
Probemos qué tal se comporta nuestra GPU con una carga de trabajo realista de embeddings:
| Operación | Resultado |
|---|---|
| Batch | 1024 secuencias de 512 tokens |
| 50 iteraciones | 1.41 segundos |
| Tokens/segundo | 18.5 millones |
| VRAM usado | 1.688 MB (de 8.000) |
Conclusión: para la capa de embeddings, la GTX 1070 es más que suficiente. 18.5 millones de tokens por segundo y apenas 1.7 GB de VRAM. Esto significa que podemos trabajar con lotes grandes sin saturar la GPU — buena señal para cuando entrenemos nuestro propio modelo en artículos posteriores.
Resumen
| Concepto | Qué es | Dónde se usa |
|---|---|---|
| Tokenización | Texto → IDs numéricos | Entrada de cualquier LLM |
| BPE | Algoritmo de tokenización sub-palabra | GPT, LLaMA, Mistral |
| Embeddings | IDs → Vectores densos | Capa inicial del transformer |
| Codificación posicional | Añade información de orden | Se suma a los embeddings |
Punto clave: el tokenizador de GPT-2 no maneja bien el español — pero el problema son los datos de entrenamiento, no el algoritmo. Hemos demostrado que entrenando un BPE con 500 MB de Wikipedia en español, las palabras españolas se tokenizan mucho mejor (hasta un 80% menos de tokens).
En el próximo artículo implementaremos self-attention desde cero y veremos cómo el transformer empieza a «entender» las relaciones entre palabras ejecutando código real en nuestra GTX 1070.
📚 Fuentes y recursos
– Giles Thomas, Writing an LLM from scratch, parts 1–4 (CC BY 4.0) — https://www.gilesthomas.com/2024/12/llm-from-scratch-1
– Sebastian Raschka, Build a Large Language Model (from Scratch), Manning Publications
– OpenAI, tiktoken — https://github.com/openai/tiktoken
– Wikipedia en español, dump de Wikimedia — https://dumps.wikimedia.org/eswiki/
– Hugging Face, tokenizers — https://github.com/huggingface/tokenizers
– Código fuente de este artículo: /home/ia/projects/llm-from-scratch-lab/es01_tokenization_embeddings.py
– Tokenizador BPE español entrenado: /home/ia/projects/llm-from-scratch-lab/tokenizer_wiki_espanol.json
Glosario de Inteligencia Artificial
Glosario de Inteligencia Artificial
Definiciones de los términos utilizados en los artículos de la sección de IA de Vientos de Poniente.
LLM (Large Language Model)
Modelo de lenguaje de gran escala. Red neuronal entrenada con enormes cantidades de texto que puede generar, resumir y transformar lenguaje humano. Ejemplos: GPT-4, Claude, Gemini, Llama. Es el «cerebro» de los agentes de IA.
AI Agent
Sistema autónomo que utiliza un LLM para razonar, planificar y ejecutar acciones utilizando herramientas, con capacidad de memoria y aprendizaje.
Skills (Habilidades)
Capacidades específicas que un agente de IA puede ejecutar, normalmente implementadas como funciones o llamadas a API. Ejemplos: buscar en web, calcular, leer archivos.
Workflow (Flujo de trabajo)
Secuencia de pasos orquestados que un agente o sistema multi-agente sigue para completar una tarea. Puede incluir bifurcaciones, bucles y ejecución paralela.
Rules (Reglas)
Condiciones y restricciones programáticas que determinan el comportamiento de un agente: límites de seguridad, políticas de acceso, formatos de salida obligatorios.
API (Application Programming Interface)
Interfaz de programación que permite a un agente de IA comunicarse con servicios externos: bases de datos, modelos de IA, herramientas de terceros.
MCP (Model Context Protocol)
Protocolo abierto que permite a los agentes de IA conectarse de forma estandarizada a herramientas y fuentes de datos externas. Desarrollado por Anthropic. Más información en modelcontextprotocol.io.
LangGraph
Framework de orquestación de agentes basado en grafos de estado. Permite construir sistemas multi-agente con ciclos, bifurcaciones y memoria compartida. Desarrollado por LangChain. Documentación oficial.
CrewAI
Framework para orquestar agentes de IA colaborativos. Permite definir roles, tareas y equipos de agentes que trabajan juntos en secuencia. crewai.com.
OpenAI Agents SDK
Kit de desarrollo de OpenAI para construir agentes de IA. Incluye herramientas para function calling, gestión de contexto y encadenamiento de tareas. Documentación.
Fine-Tuning
Proceso de entrenamiento adicional de un modelo pre-entrenado con datos específicos para mejorar su rendimiento en una tarea concreta.
RAG (Retrieval-Augmented Generation)
Técnica que combina búsqueda en una base de conocimiento con generación de texto, permitiendo al modelo responder con información actualizada sin necesidad de reentrenamiento.
Tokenización
Proceso de convertir texto en una secuencia de números enteros (token IDs) que un modelo de lenguaje puede procesar. El método más común es Byte Pair Encoding (BPE), que aprende qué sub-palabras son las más frecuentes en un corpus y las asigna a IDs únicos. La calidad de la tokenización depende del corpus de entrenamiento: un tokenizador entrenado con texto en inglés rompe mal las palabras en español.
Token
Unidad básica de procesamiento en un modelo de lenguaje. Un token puede ser una palabra completa («house»), una sub-palabra («aprender» → «ap» + «render»), o incluso un solo carácter. Los modelos actuales usan vocabularios de 16.000 a 200.000 tokens. GPT-2 tiene 50.257 tokens; LLaMA 3 tiene 128.000. Los tokens con espacio al inicio (representados como «Ġ») son distintos de los tokens sin espacio.
Embeddings
Vectores densos de números reales que representan el significado de un token en un espacio de alta dimensionalidad. En GPT-2 small, cada token se mapea a un vector de 768 dimensiones; en GPT-3, a 12.288 dimensiones. Los embeddings se aprenden durante el entrenamiento del modelo: empiezan aleatorios y se van refinando para capturar relaciones semánticas. La capa de embedding es simplemente una tabla lookup —para cada token ID, devuelve su vector correspondiente— y es la primera capa de cualquier transformer.

¿Qué es un AI Agent? Arquitectura, patrones multi-agente y frameworks de orquestación
¿Qué es un AI Agent?
Un AI Agent es un programa informático autónomo que, en lugar de limitarse a generar texto de forma puntual, diseña su propio flujo de trabajo, utiliza herramientas externas y ajusta su comportamiento según los resultados que va obteniendo. Donde un LLM convencional responde una pregunta y termina, un agente mantiene un bucle continuo de observación, razonamiento y acción hasta completar la tarea que se le ha encomendado.
La forma más sencilla de entenderlo es el patrón baseline: un agente simple compuesto por un LLM que puede llamar a múltiples herramientas (tools). El modelo recibe una petición, razona qué herramientas necesita, las invoca secuencialmente, procesa los resultados y decide si ha terminado o debe seguir. Este bucle, que en los transcript de los cursos de sistemas multi-agente se describe como el punto de partida fundamental, es la base sobre la que se construyen arquitecturas mucho más complejas. Una vez que se comprenden bien estos patrones básicos, como señalan los expertos en la materia, resulta difícil no verlos repetidos en cualquier sistema multi-agente que se analice.
Un agente se compone de cinco elementos esenciales:
- Un LLM que actúa como núcleo razonador y toma las decisiones
- Un conjunto de skills o herramientas que le permiten interactuar con el entorno
- Un workflow que define cómo procesa las entradas y orquesta las acciones
- Memoria, tanto a corto plazo (contexto de la conversación) como a largo plazo (información persistente entre sesiones)
- Mecanismos de seguridad que limitan su alcance y evitan comportamientos no deseados
El patrón baseline: el agente que llama a herramientas
La arquitectura más elemental de un AI Agent, y la que mejor sirve como introducción, es la que encontramos documentada en los materiales formativos sobre sistemas multi-agente con una puntuación de relevancia del 0.98: un sistema baseline donde un LLM interactúa con múltiples herramientas. El flujo es engañosamente simple: el usuario formula una petición, el LLM la analiza, determina qué herramientas necesita —una API de búsqueda, un ejecutor de código, un lector de documentos—, las invoca, examina los resultados y, si la tarea no está completa, repite el ciclo.
Lo interesante de este patrón es que, pese a su simplicidad, resuelve una cantidad sorprendente de problemas del mundo real. Un asistente de atención al cliente que busca en una base de conocimiento, consulta el historial del usuario y genera una respuesta personalizada sigue exactamente este esquema. Lo mismo ocurre con un agente de código que lee un archivo, ejecuta un test, encuentra un error y lo corrige. La clave está en la calidad de las descripciones de las herramientas: el LLM selecciona la herramienta adecuada basándose en su descripción textual, de modo que una descripción ambigua o incompleta lleva inevitablemente a fallos.
Sobre este patrón baseline se construyen todas las variantes más avanzadas: agentes con memoria persistente, agentes que pueden planificar a largo plazo, agentes que se especializan en dominios concretos y, por supuesto, los sistemas multi-agente que exploramos a continuación.
Sistemas multi-agente: cuando un solo agente no basta
Los transcript de los cursos especializados en sistemas multi-agente —con una relevancia del 0.99— insisten en una idea fundamental: una vez que interiorizas los patrones básicos de los agentes, empiezas a verlos por todas partes. La progresión natural desde el agente baseline es el sistema multi-agente, donde múltiples agentes especializados colaboran, delegan tareas y se pasan información entre sí para resolver problemas que un solo agente no podría abordar eficazmente.
La construcción de un sistema multi-agente se apoya en una técnica denominada react prompting, que permite convertir un LLM vanilla —un modelo de lenguaje sin capacidades agentivas— en un agente completo capaz de razonar, planificar y ejecutar tareas. Este enfoque, documentado en los transcript sobre cómo construir sistemas multi-agente con watsonx.ai (relevancia 0.97), demuestra que no hace falta un modelo especializado: con el prompting adecuado, cualquier LLM moderno puede comportarse como un agente.
Los sistemas multi-agente presentan ventajas evidentes: especialización (cada agente se centra en lo que mejor sabe hacer), escalabilidad (se pueden añadir nuevos agentes sin reescribir los existentes) y flexibilidad (los agentes pueden reconfigurarse dinámicamente según la tarea). Sin embargo, también introducen desafíos significativos: la coordinación entre agentes exige mecanismos robustos de comunicación, el coste total se multiplica por el número de agentes, y cuando todos los agentes comparten el mismo LLM subyacente, heredan también sus debilidades y sesgos.
LangGraph y la orquestación multi-agente
Entre los frameworks de orquestación, LangGraph ocupa un lugar destacado. Los transcript que analizan este framework (relevancia 0.99) lo describen como una capa de orquestación que, conectada al Mosaic AI Agent Framework, permite manejar flujos multi-agente complejos. LangGraph modela los agentes como grafos de estados: cada nodo del grafo representa una acción o decisión, y las aristas definen las transiciones posibles. Esta aproximación resulta especialmente potente cuando los flujos de trabajo incluyen bifurcaciones, bucles de realimentación y ejecución paralela.
La ventaja de LangGraph sobre otros enfoques es su granularidad: el desarrollador tiene control total sobre el ciclo de vida del agente, pudiendo intervenir en cualquier punto del grafo para inyectar lógica adicional, verificar resultados o redirigir el flujo. Esto lo convierte en la opción preferida para sistemas de producción donde la fiabilidad y la trazabilidad son críticas. No es casualidad que plataformas empresariales como Databricks hayan integrado LangGraph en su Mosaic AI Agent Framework para orquestar agentes a escala.
Comparativa de frameworks para construir agentes
El ecosistema de frameworks para construir AI Agents ha madurado enormemente. Estos son los más relevantes, incluyendo referencias directas a los transcript analizados:
LangGraph
Como hemos visto, LangGraph define agentes como grafos de estados. Está especialmente indicado para flujos complejos con bifurcaciones y paralelismo. Se integra con LangSmith para trazabilidad y con Mosaic AI Agent Framework para despliegue empresarial. Su principal desventaja es la cantidad de código boilerplate necesaria para casos sencillos.
CrewAI
CrewAI está diseñado específicamente para sistemas multi-agente. Permite definir «crews» donde cada agente tiene un rol, unas herramientas y unos objetivos. Los agentes colaboran, se delegan tareas y se pasan información de forma natural. Su API es intuitiva, ideal para prototipado rápido de equipos de agentes especializados.
OpenAI Agents SDK
El SDK oficial de OpenAI ofrece guardrails integrados, manejo de handoffs entre agentes y trazabilidad por defecto. Su simplicidad lo hace ideal para empezar, pero genera dependencia del ecosistema OpenAI: migrar a otros proveedores requiere reescribir buena parte del código.
AutoGen (Microsoft Research)
AutoGen se centra en la conversación multi-agente. Los agentes se comunican mediante mensajes y pueden adoptar topologías complejas. Soporta múltiples modelos, incluyendo locales, lo que lo convierte en la opción preferida para investigación. Su flexibilidad tiene como contrapartida una curva de aprendizaje más pronunciada.
MCP: el protocolo que unifica la comunicación entre agentes
Uno de los problemas históricos de los AI Agents ha sido la falta de estandarización en la comunicación entre agentes y herramientas. Cada framework implementaba su propio protocolo, lo que dificultaba la interoperabilidad. El Model Context Protocol (MCP) surge precisamente para resolver esto: define una interfaz común que cualquier agente puede usar para descubrir, invocar y recibir resultados de herramientas, independientemente del framework subyacente.
MCP no solo simplifica el desarrollo de agentes, sino que abre la puerta a ecosistemas de herramientas compartidas. Un desarrollador puede publicar una herramienta compatible con MCP y cualquier agente —construido con LangGraph, CrewAI, OpenAI SDK o AutoGen— podrá utilizarla sin modificaciones. Esta estandarización es, para muchos expertos, el paso más importante hacia la adopción masiva de los AI Agents en entornos empresariales.
Desafíos actuales y buenas prácticas
Construir AI Agents robustos no es trivial. Los principales desafíos incluyen:
Seguridad: Un agente autónomo que ejecuta código y accede a APIs es un vector de ataque. La inyección de prompts puede hacer que ejecute acciones maliciosas sin saberlo. Mecanismos como sandboxing, validación de acciones y supervisión humana (human-in-the-loop) son imprescindibles.
Costes: Cada llamada al LLM tiene un coste. Un agente que requiere decenas de iteraciones puede consumir recursos significativos. Las estrategias de optimización incluyen caching, uso de modelos más pequeños para subtareas simples y límites estrictos de iteraciones.
Alucinaciones: Los LLM alucinan, y en un agente autónomo una alucinación no es un error menor: puede desencadenar acciones equivocadas. La validación contra fuentes externas, el grounding con RAG y los verificadores automáticos son las mitigaciones más efectivas.
Los transcript de los cursos de referencia insisten en un punto clave: el prompt del sistema (system prompt) es quizá el componente más infravalorado de un agente. Un buen system prompt define con claridad la personalidad, los límites y el estilo del agente, y marca la diferencia entre un agente útil y uno que divaga sin rumbo. Dedicar tiempo a su diseño y refinamiento es una de las inversiones más rentables en el desarrollo de cualquier sistema agéntico.
Conclusión: hacia un ecosistema de agentes interoperables
Los AI Agents han pasado de ser una curiosidad académica a convertirse en una de las tecnologías más transformadoras del panorama actual de la inteligencia artificial. Desde el patrón baseline —un LLM que llama a herramientas— hasta los sistemas multi-agente orquestados con LangGraph o CrewAI, pasando por la estandarización que aporta MCP, el campo avanza a una velocidad vertiginosa.
Los transcript analizados coinciden en una visión: el futuro no está en agentes monolíticos que lo hacen todo, sino en ecosistemas de agentes especializados que colaboran, negocian y compiten. La clave del éxito —como ocurre tantas veces en ingeniería— está en dominar primero los fundamentos. Entender el patrón baseline, saber cuándo un solo agente es suficiente y cuándo hace falta un sistema multi-agente, y elegir el framework de orquestación adecuado para cada caso: ese es el camino para construir AI Agents que realmente funcionen.
El glosario de IA de Vientos de Poniente ofrece definiciones detalladas de todos los conceptos mencionados en este artículo, desde LLM y skills hasta workflow, LangGraph, CrewAI y MCP.
Fuentes y referencias
- Multi Agent Systems Explained — Curso sobre patrones de sistemas multi-agente. Incluye el patrón baseline (LLM + tools) y la progresión hacia arquitecturas multi-agente. Ver vídeo en YouTube
- LangGraph Multi-Agent Orchestration Framework — Transcript sobre la capa de orquestación con LangGraph conectado a Mosaic AI Agent Framework, manejo multi-agente. Ver vídeo en YouTube
- Harnesses in AI: A Deep Dive — Tejas Kumar (IBM) sobre la construcción de sistemas multi-agente con watsonx.ai y react prompting. Ver vídeo en YouTube
- LangGraph Documentation — Documentación oficial
- CrewAI Framework — Documentación oficial
- OpenAI Agents SDK — Guía oficial
- AutoGen (Microsoft Research) — Documentación
- Model Context Protocol (MCP) — Especificación oficial
- Glosario completo de IA — Vientos de Poniente