Categoría: Inteligencia Artificial

  • Cómo entrenar tu propio tokenizador BPE para español

    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:

    El proceso paso a paso

    1. Obtener el corpus

    Descargamos el dump completo de Wikipedia en español desde Wikimedia (~4.8 GB comprimido):

    curl -L -o eswiki-latest-pages-articles.xml.bz2 \
      "https://dumps.wikimedia.org/eswiki/latest/eswiki-latest-pages-articles.xml.bz2"
    

    Luego extraemos el texto de las páginas con un script Python que lee el XML comprimido directamente, procesando en fragmentos de 8 MB para no saturar la RAM.

    Resultado: ~18 GB de texto, ~270 millones de líneas, ~4.8 millones de páginas.

    2. Entrenar el BPE

    Con el corpus listo, entrenar el tokenizador es sorprendentemente simple gracias a la librería tokenizers de Hugging Face:

    from tokenizers import Tokenizer, models, trainers, pre_tokenizers
    
    tokenizer = Tokenizer(models.BPE(unk_token=""))
    tokenizer.pre_tokenizer = pre_tokenizers.ByteLevel(add_prefix_space=True)
    
    trainer = trainers.BpeTrainer(
        vocab_size=128000,
        special_tokens=["", "", "", "", ""],
        min_frequency=2,
    )
    
    # Alimentar línea por línea (18 GB, streaming)
    for line in open("wikipedia-es.txt", encoding="utf-8"):
        tokenizer.train_from_iterator([line.strip()], trainer)
    
    tokenizer.save("bpe-espanol-128k.json")
    

    El proceso tarda unos 21 minutos en CPU y consume ~3 GB de RAM. No necesita GPU.

    3. Los resultados

    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)**

    El tokenizador aprende «aprendizaje» como un solo token, «procesamiento» como uno solo, «desafortunadamente» como dos. Frases que antes necesitaban 11 tokens ahora caben en 4.

    El contraejemplo: «fine tuning» (inglés) necesita 3 tokens con nuestro BPE español frente a 2 con tiktoken. Esto confirma que el tokenizador aprende del idioma del corpus — no es mejor ni peor, es específico del idioma.

    El tokenizador está disponible

    Puedes descargarlo y usarlo desde nuestro repositorio en GitHub:

    https://github.com/Carlos-droid/bpe-espanol

    from tokenizers import Tokenizer
    
    tokenizer = Tokenizer.from_file("bpe-espanol-128k.json")
    
    texto = "Hola, ¿cómo estás? Bienvenido al mundo de los LLMs."
    encoded = tokenizer.encode(texto)
    print(f"Tokens: {encoded.tokens}")    # Solo 6 tokens
    print(f"IDs:    {encoded.ids}")
    

    Qué hemos aprendido

    1. BPE aprende del corpus, no de reglas. No necesita saber qué es un diptongo.

    2. La escala importa. Con 6.5 MB los resultados fueron mediocres; con 18 GB son excelentes.

    3. Cada idioma necesita su tokenizador. Usar el de GPT-2 para español duplica los tokens.

    4. Entrenar un tokenizador es barato. 21 minutos en cualquier CPU, sin GPU.

    Este tokenizador es el primer paso para construir nuestro propio modelo de lenguaje en español. En los próximos artículos lo usaremos para alimentar un transformer que entrenaremos desde cero en nuestra GTX 1070.

    📚 Fuentes y recursos

    – Repositorio del proyecto: https://github.com/Carlos-droid/bpe-espanol

    – Artículo principal de la serie: Tokenización y Embeddings

    – Hugging Face Tokenizers: https://github.com/huggingface/tokenizers

    – Wikipedia dump: https://dumps.wikimedia.org/eswiki/

    – Serie original de Giles Thomas (CC BY 4.0): https://www.gilesthomas.com/2024/12/llm-from-scratch-1

  • Tokenización y Embeddings: el primer paso para construir un LLM desde cero

    Tokenización y Embeddings: el primer paso para construir un LLM desde cero

    Introducción

    Antes de que un modelo de lenguaje pueda entender una palabra, tiene que convertirla en números. Ese proceso tiene dos pasos fundamentales: la tokenización (convertir texto en IDs numéricos) y los embeddings (convertir esos IDs en vectores densos que el modelo pueda procesar).

    En este artículo vamos a implementar ambos desde cero, ejecutar el código en nuestra GTX 1070, y ver resultados reales. Todo el código funciona en hardware asequible — no necesitas una GPU de última generación para entender cómo funcionan los LLMs por dentro.

    Este artículo abre la serie Construye tu LLM desde Cero en Español, que sigue paso a paso la serie Writing an LLM from scratch de Giles Thomas (licencia CC BY 4.0). Cada artículo replica los mismos experimentos del original, pero ejecutados con nuestro hardware (GTX 1070, 32 GB RAM) y explicados en español. No es una traducción: es el mismo viaje, con resultados reales y código que puedes ejecutar tú mismo.

    ¿Qué es la tokenización?

    Los LLMs no procesan texto directamente. Procesan números. La tokenización es el puente entre ambos mundos: convierte una secuencia de caracteres en una secuencia de enteros (token IDs).

    El sistema más usado hoy es Byte Pair Encoding (BPE). Funciona así:

    1. Empieza con tokens para cada letra, número y signo de puntuación

    2. Examina un corpus enorme de texto y encuentra pares de tokens que aparecen juntos con frecuencia

    3. Crea nuevos tokens para esos pares

    4. Repite hasta alcanzar el tamaño de vocabulario deseado

    OpenAI usa BPE en todos sus modelos. La librería tiktoken nos da acceso al mismo tokenizador que usa GPT-2 —50.257 tokens— y que usaremos como referencia para comparar.

    Vamos a probarlo con texto en español en nuestra máquina:

    import tiktoken
    tokenizer = tiktoken.get_encoding("gpt2")
    
    texto = "Hola, ¿cómo estás? Bienvenido al mundo de los LLMs."
    tokens = tokenizer.encode(texto)
    print(f"Tokens decodificados: {[tokenizer.decode([t]) for t in tokens]}")
    

    Resultado real:

    'H', 'ola', ',', ' �', '�', 'c', 'ó', 'mo', ' est', 'ás', '?', ...
    

    Observa algo interesante: el tokenizador de GPT-2 no está optimizado para español. La palabra «Hola» se parte en «H» + «ola», los caracteres acentuados se rompen en bytes (la ‘ó’ se parte en ‘ó’), y «cómo» necesita tres tokens. No es culpa del algoritmo BPE — es culpa de los datos de entrenamiento: GPT-2 se entrenó con texto casi exclusivamente en inglés.

    La pregunta del millón: ¿podemos mejorar la tokenización en español?

    Tuve la tentación de aplicar reglas de silabificación del español (consonantes, diptongos, hiatos…) para mejorar cómo se rompen las palabras. Pero resulta que BPE no funciona con reglas lingüísticas. Funciona con estadísticas. BPE no sabe qué es un diptongo ni le importa: lo único que hace es encontrar qué subcadenas aparecen juntas con más frecuencia y crear tokens para ellas.

    Para demostrarlo, hice un experimento en tres fases:

    Fase 1: Corpus literario clásico (fracaso didáctico)

    Descargué 11 obras completas de Galdós, Unamuno, Baroja, Juan Ramón Jiménez, Echegaray y Clarín desde Project Gutenberg (~6.5 MB) y entrené un BPE. El resultado fue decepcionante: el corpus era demasiado pequeño (6.5 MB frente a los terabytes que necesita un tokenizador de verdad) y los libros tenían restos de cabeceras en inglés que contaminaron el vocabulario. Lección aprendida: la calidad y cantidad del corpus importan más que el algoritmo.

    Fase 2: Wikipedia en español (donde la magia ocurre)

    Descargué el dump completo de la Wikipedia en español desde Wikimedia (~4.8 GB comprimido) y extraje el texto a un archivo de 18 GB con 4.876.114 páginas. Usando ~500 MB de ese corpus, entrené un BPE con vocabulario de 50.000 tokens — el mismo orden de magnitud que GPT-2.

    Fase 3: La comparativa definitiva

  • 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? 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