Ir al contenido

Mastra - Marco de Agente IA TypeScript Hoja de Trucos

Mastra - Marco de Agente IA TypeScript Hoja de Trucos

Mastra es un marco TypeScript de código abierto para agentes y flujos de trabajo de IA, construido por el equipo detrás de Gatsby. Donde la mayoría de marcos de agentes son Python-first, Mastra se enfoca en el ecosistema JavaScript/TypeScript con seguridad de tipos completa: agentes tipados con herramientas y memoria, flujos de trabajo duraderos expresados como grafos con ramificación y suspensión/reanudación, primitivos RAG, evals integrados y un playground de desarrollo local para iterar sobre agentes en el navegador.

Instalación

MétodoComando
Crear proyectonpm create mastra@latest
Agregar a existentenpm install @mastra/core
Servidor devnpm run dev (playground en localhost:4111)
Proveedor de modelonpm install @ai-sdk/openai (usa Vercel AI SDK)
Verificarabre el playground

Definiendo un Agente

import { Agent } from "@mastra/core/agent";
import { openai } from "@ai-sdk/openai";

export const supportAgent = new Agent({
  name: "support",
  instructions: "You are a concise support agent. Cite docs when possible.",
  model: openai("gpt-4o"),
  tools: { searchDocs },
});

const result = await supportAgent.generate("How do I rotate my API key?");
console.log(result.text);
MétodoHace
.generate(input)Ejecutar una vez y retornar el resultado
.stream(input)Transmitir tokens/pasos
toolsHerramientas tipadas que el agente puede llamar
memoryMemoria conversacional persistente

Herramientas

import { createTool } from "@mastra/core/tools";
import { z } from "zod";

export const searchDocs = createTool({
  id: "search-docs",
  description: "Search the product documentation",
  inputSchema: z.object({ query: z.string() }),
  outputSchema: z.object({ results: z.array(z.string()) }),
  execute: async ({ context }) => {
    return { results: await search(context.query) };
  },
});

Los esquemas Zod dan seguridad de tipos de extremo a extremo — las llamadas de herramienta del agente se validan y tipan en ambos lados.

Flujos de Trabajo (Grafos Duraderos)

import { createWorkflow, createStep } from "@mastra/core/workflows";

const fetchData = createStep({ id: "fetch", execute: async () => ({ ... }) });
const analyze   = createStep({ id: "analyze", execute: async ({ inputData }) => ({ ... }) });

export const pipeline = createWorkflow({ id: "pipeline" })
  .then(fetchData)
  .then(analyze)
  .commit();
CaracterísticaPropósito
.then()Pasos secuenciales
.branch()Rutas condicionales
.parallel()Pasos concurrentes
.dowhile() / .foreach()Bucles sobre datos
Suspensión/reanudaciónPausar por entrada humana, reanudar después
Ejecución duraderaSobrevive reinicios

Memoria

TipoUso
Historial de conversaciónTurnos recientes en contexto
Recuperación semánticaBúsqueda vectorial sobre mensajes anteriores
Memoria de trabajoHechos persistentes sobre el usuario
Adaptadores de almacenamientoLibSQL, Postgres, Upstash

Primitivos RAG

PiezaProporciona
Chunking de documentosDividir docs con estrategias configurables
EmbeddingsA través de los proveedores de AI SDK
Almacenes de vectorespgvector, Pinecone, Qdrant, Chroma
Herramienta de recuperaciónConectar recuperación en un agente como herramienta

Evals y Observabilidad

CapacidadNota
Evals integradosRelevancia de respuesta, fidelidad, toxicidad, sesgo
Puntuadores personalizadosDefine tus propias métricas
RastreoTrazas compatibles con OpenTelemetry
PlaygroundInspeccionar ejecuciones de agente, herramientas y memoria localmente

Despliegue

ObjetivoNota
Servidor Nodemastra build produce un servidor desplegable
Vercel / Cloudflare / NetlifyDesplegadores oficiales
Sin estadoFlujos de trabajo diseñados para hosts sin estado

Mastra vs Otros Marcos de Agente

AspectoMastraLangGraphCrewAI
LenguajeTypeScriptPythonPython
Flujos de trabajoGrafo duradero + suspensión/reanudaciónGrafo con estadoEquipos basados en roles
Seguridad de tiposFuerte (Zod de extremo a extremo)Tipado PythonTipado Python
Mejor paraEquipos TS/JS, apps webAgentes con estado complejosJuego de rol multi-agente

La contrapartida de TypeScript a LangGraph; compara con CrewAI y AutoGen para Python.

Recursos