Pular para o conteúdo

Mastra - Estrutura de Agente IA TypeScript

Mastra - Estrutura de Agente IA TypeScript

Mastra é uma estrutura open-source TypeScript para agentes e workflows de IA, construída pela equipe por trás do Gatsby. Onde a maioria das estruturas de agente são Python-first, Mastra visa o ecossistema JavaScript/TypeScript com segurança de tipo completa: agentes tipados com ferramentas e memória, workflows duráveis expressos como gráficos com ramificação e suspend/resume, primitivos RAG, evals integrados, e um playground de dev local para iterar em agentes no navegador.

Instalação

MétodoComando
Criar um projetonpm create mastra@latest
Adicionar ao existentenpm install @mastra/core
Dev servernpm run dev (playground em localhost:4111)
Provedor de modelonpm install @ai-sdk/openai (usa Vercel AI SDK)
Verificarabra o playground

Definindo um 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étodoFaz
.generate(input)Executar uma vez e retornar o resultado
.stream(input)Stream de tokens/passos
toolsFerramentas tipadas que o agente pode chamar
memoryMemória de conversa persistente

Ferramentas

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) };
  },
});

Esquemas Zod dão segurança de tipo end-to-end — as chamadas de ferramenta do agente são validadas e tipadas em ambos os lados.

Workflows (Gráficos Duráveis)

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()Passos sequenciais
.branch()Caminhos condicionais
.parallel()Passos concorrentes
.dowhile() / .foreach()Loops sobre dados
Suspend/resumePausar para entrada humana, retomar depois
Execução durávelSobrevive a reinicializações

Memória

TipoUso
Histórico de conversaTurnos recentes em contexto
Recall semânticoBusca de vetor sobre mensagens passadas
Memória de trabalhoFatos persistentes sobre o usuário
Adaptadores de storageLibSQL, Postgres, Upstash

Primitivos RAG

PeçaFornece
Chunking de documentoDivide docs com estratégias configuráveis
EmbeddingsVia provedores de AI SDK
Vector storespgvector, Pinecone, Qdrant, Chroma
Ferramenta de recuperaçãoWire recuperação em um agente como ferramenta

Evals e Observabilidade

CapacidadeNota
Evals integradosRelevância de resposta, fidelidade, toxicidade, viés
Scorers customizadosDefina suas próprias métricas
TracingTraces compatíveis com OpenTelemetry
PlaygroundInspecionar runs de agente, ferramentas, e memória localmente

Deployment

AlvoNota
Node servermastra build produz um servidor deployável
Vercel / Cloudflare / NetlifyDeployers oficiais
ServerlessWorkflows projetados para hosts stateless

Mastra vs Outros Frameworks de Agente

AspectoMastraLangGraphCrewAI
LinguagemTypeScriptPythonPython
WorkflowsGráfico durável + suspend/resumeGráfico statefulEquipes baseadas em papel
Segurança de tipoForte (Zod end-to-end)Tipagem PythonTipagem Python
Melhor paraTimes TS/JS, apps webAgentes stateful complexosRoleplay multi-agente

O contraparte TypeScript para LangGraph; compare com CrewAI e AutoGen para Python.

Recursos