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éthode | Commande |
|---|
| Créer un projet | npm create mastra@latest |
| Ajouter à un existant | npm install @mastra/core |
| Serveur de développement | npm run dev (playground à localhost:4111) |
| Fournisseur de modèle | npm install @ai-sdk/openai (utilise Vercel AI SDK) |
| Vérifier | ouvrir 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éthode | Fait |
|---|
.generate(input) | Exécuter une fois et retourner le résultat |
.stream(input) | Diffuser les tokens/étapes |
tools | Outils typés que l’agent peut appeler |
memory | Mé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éristique | Objectif |
|---|
.then() | Étapes séquentielles |
.branch() | Chemins conditionnels |
.parallel() | Étapes concurrentes |
.dowhile() / .foreach() | Boucles sur les données |
| Suspend/resume | Pause pour l’entrée humaine, reprendre plus tard |
| Exécution durable | Survit aux redémarrages |
Mémoire
| Type | Utiliser |
|---|
| Historique de conversation | Tours récents en contexte |
| Rappel sémantique | Recherche vectorielle sur les anciens messages |
| Mémoire de travail | Faits persistants sur l’utilisateur |
| Adaptateurs de stockage | LibSQL, Postgres, Upstash |
Primitives RAG
| Pièce | Fournit |
|---|
| Fragmentation de documents | Divisez les docs avec des stratégies configurables |
| Embeddings | Via les fournisseurs du SDK IA |
| Magasins vectoriels | pgvector, Pinecone, Qdrant, Chroma |
| Outil de récupération | Câblez la récupération dans un agent comme outil |
Évals et observabilité
| Capacité | Note |
|---|
| Évals intégrés | Pertinence des réponses, fidélité, toxicité, biais |
| Scoreurs personnalisés | Définissez vos propres métriques |
| Tracing | Traces compatibles OpenTelemetry |
| Playground | Inspectez les exécutions d’agents, outils, et mémoire localement |
Déploiement
| Cible | Note |
|---|
| Serveur Node | mastra build produit un serveur déployable |
| Vercel / Cloudflare / Netlify | Deployeurs officiels |
| Serverless | Workflows conçus pour les hôtes sans état |
Mastra vs autres frameworks d’agents
| Aspect | Mastra | LangGraph | CrewAI |
|---|
| Langage | TypeScript | Python | Python |
| Workflows | Graphe durable + suspend/resume | Graphe avec état | Équipes basées sur les rôles |
| Sécurité de type | Fort (Zod end-to-end) | Typage Python | Typage Python |
| Meilleur pour | Équipes TS/JS, apps web | Agents avec état complexe | Jeu de rôle multi-agent |
L’équivalent TypeScript de LangGraph ; comparer avec CrewAI et AutoGen pour Python.
Ressources