createCodeMode()
Ajouté dans : @mastra/core@1.38.0
La fonction createCodeMode() renvoie un Tool et des instructions générées qui permettent à un Agent d'exécuter des calculs faisant appel à plusieurs Tools sous la forme d'une seule fonction TypeScript. Le code généré s'exécute dans le Sandbox d'un Workspace, et chaque appel external_* exécute le véritable Tool sur l'hôte avec validation, contexte de requête et Tracing.
Pour une présentation conceptuelle, consultez le mode Code.
Exemple d'utilisationLien direct vers Exemple d'utilisation
Créez un Tool de mode Code, ajoutez les instructions générées à l'Agent et enregistrez le Tool renvoyé avec le même identifiant.
import { Agent } from '@mastra/core/agent'
import { createCodeMode, createTool } from '@mastra/core/tools'
import { LocalSandbox } from '@mastra/core/workspace'
import { z } from 'zod'
const getTopProducts = createTool({
id: 'getTopProducts',
description: 'Get top selling products',
inputSchema: z.object({ limit: z.number() }),
outputSchema: z.object({
products: z.array(z.object({ id: z.string(), name: z.string(), totalSales: z.number() })),
}),
execute: async ({ limit }) => fetchTopProducts(limit),
})
const getProductRatings = createTool({
id: 'getProductRatings',
description: 'Get ratings for a product',
inputSchema: z.object({ productId: z.string() }),
outputSchema: z.object({ ratings: z.array(z.object({ score: z.number() })) }),
execute: async ({ productId }) => fetchRatings(productId),
})
const { tool, instructions } = createCodeMode({
tools: { getTopProducts, getProductRatings },
sandbox: new LocalSandbox(),
})
export const shopAgent = new Agent({
id: 'shop-assistant',
name: 'shop-assistant',
instructions: ['You are a helpful shopping assistant.', instructions],
model: 'openai/gpt-5.6-sol',
tools: { execute_typescript: tool },
})
ParamètresLien direct vers Paramètres
config:
tools:
external_<id>. Seuls ces Tools peuvent être appelés.sandbox?:
IsolatedVmCodeModeTransport). Transmettez new LocalSandbox() pour exécuter explicitement le code sur l'hôte.timeout?:
id?:
transport?:
requiresSandbox: false (tels que IsolatedVmCodeModeTransport) s'exécutent sans Sandbox.Valeur renvoyéeLien direct vers Valeur renvoyée
Renvoie un objet CodeModeResult.
tool:
execute_typescript.instructions:
external_* typées pour les Tools configurés.CodeModeToolResultLien direct vers CodeModeToolResult
Le Tool généré renvoie un CodeModeToolResult.
success:
result?:
logs?:
console.log, console.info, console.warn et console.error.error?:
message:
name?:
line?:
Inspection des instructionsLien direct vers Inspection des instructions
Utilisez createCodeModeInstructions() pour examiner le contenu exact du prompt généré pour un ensemble de Tools.
import { createCodeModeInstructions } from '@mastra/core/tools'
console.log(
createCodeModeInstructions({
tools: { getTopProducts, getProductRatings },
}),
)
Les instructions comprennent le contrat d'utilisation et une ligne declare function external_<id>(...) typée pour chaque Tool configuré. Les identifiants des Tools sont nettoyés afin de former des noms de fonctions TypeScript valides, et les noms nettoyés en conflit lèvent une erreur.
createCodeModeTool()Lien direct vers createCodeModeTool()
Utilisez createCodeModeTool() lorsque vous avez uniquement besoin du Tool et souhaitez gérer les instructions séparément. La plupart des Agents doivent utiliser createCodeMode() afin que le Tool et les instructions correspondantes restent groupés.
import { createCodeModeTool } from '@mastra/core/tools'
import { LocalSandbox } from '@mastra/core/workspace'
export const codeModeTool = createCodeModeTool({
tools: { getTopProducts, getProductRatings },
sandbox: new LocalSandbox(),
})