Aller au contenu

Mastra - Framework d'agent IA TypeScript

Mastra - Framework d’agent IA TypeScript

Mastra est un framework open-source TypeScript pour les agents IA et les workflows, construit par l’équipe derrière Gatsby. Alors que la plupart des frameworks d’agents sont d’abord en Python, Mastra cible l’écosystème JavaScript/TypeScript avec une sécurité de type complète : agents typés avec outils et mémoire, workflows durables exprimés sous forme de graphes avec branchement et suspend/resume, primitives RAG, évals intégrés, et un playground de développement local pour itérer sur les agents dans le navigateur.

Installation

MéthodeCommande
Créer un projetnpm create mastra@latest
Ajouter à un existantnpm install @mastra/core
Serveur de développementnpm run dev (playground à localhost:4111)
Fournisseur de modèlenpm install @ai-sdk/openai (utilise Vercel AI SDK)
Vérifierouvrir le playground

Définir un agent

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éthodeFait
.generate(input)Exécuter une fois et retourner le résultat
.stream(input)Diffuser les tokens/étapes
toolsOutils typés que l’agent peut appeler
memoryMémoire de conversation persistante

Outils

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

Les schémas Zod donnent une sécurité de type end-to-end — les appels d’outils de l’agent sont validés et typés des deux côtés.

Workflows (graphes durables)

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();
CaractéristiqueObjectif
.then()Étapes séquentielles
.branch()Chemins conditionnels
.parallel()Étapes concurrentes
.dowhile() / .foreach()Boucles sur les données
Suspend/resumePause pour l’entrée humaine, reprendre plus tard
Exécution durableSurvit aux redémarrages

Mémoire

TypeUtiliser
Historique de conversationTours récents en contexte
Rappel sémantiqueRecherche vectorielle sur les anciens messages
Mémoire de travailFaits persistants sur l’utilisateur
Adaptateurs de stockageLibSQL, Postgres, Upstash

Primitives RAG

PièceFournit
Fragmentation de documentsDivisez les docs avec des stratégies configurables
EmbeddingsVia les fournisseurs du SDK IA
Magasins vectorielspgvector, Pinecone, Qdrant, Chroma
Outil de récupérationCâblez la récupération dans un agent comme outil

Évals et observabilité

CapacitéNote
Évals intégrésPertinence des réponses, fidélité, toxicité, biais
Scoreurs personnalisésDéfinissez vos propres métriques
TracingTraces compatibles OpenTelemetry
PlaygroundInspectez les exécutions d’agents, outils, et mémoire localement

Déploiement

CibleNote
Serveur Nodemastra build produit un serveur déployable
Vercel / Cloudflare / NetlifyDeployeurs officiels
ServerlessWorkflows conçus pour les hôtes sans état

Mastra vs autres frameworks d’agents

AspectMastraLangGraphCrewAI
LangageTypeScriptPythonPython
WorkflowsGraphe durable + suspend/resumeGraphe avec étatÉquipes basées sur les rôles
Sécurité de typeFort (Zod end-to-end)Typage PythonTypage Python
Meilleur pourÉquipes TS/JS, apps webAgents avec état complexeJeu de rôle multi-agent

L’équivalent TypeScript de LangGraph ; comparer avec CrewAI et AutoGen pour Python.

Ressources