> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Créer un assistant de cuisine avec l’IA Dans ce guide, vous créerez un Agent « Assistant de cuisine » qui aide les utilisateurs à préparer des repas avec les ingrédients disponibles. Vous apprendrez à créer l’Agent et à l’enregistrer auprès de Mastra. Vous interagirez ensuite avec lui depuis votre terminal et découvrirez différents formats de réponse. Vous accéderez enfin à l’Agent par les endpoints API locaux de Mastra. ## Prérequis - Node.js `v22.13.0` ou version ultérieure est installé - Une clé API d’un [fournisseur de modèles](https://mastra.zisheng.pro/fr/models) pris en charge - Un projet Mastra existant (suivez le [guide d’installation](https://mastra.zisheng.pro/fr/guides/getting-started/quickstart) pour configurer un nouveau projet) ## Créer l’Agent Pour créer un Agent dans Mastra, utilisez la classe `Agent` pour le définir, puis enregistrez-le auprès de Mastra. 1. Créez un fichier `src/mastra/agents/chefAgent.ts` et définissez votre Agent : ```ts import { Agent } from '@mastra/core/agent' export const chefAgent = new Agent({ id: 'chef-agent', name: 'chef-agent', instructions: 'You are Michel, a practical and experienced home chef' + 'You help people cook with whatever ingredients they have available.', model: 'openai/gpt-5.6-sol', }) ``` 2. Dans votre fichier `src/mastra/index.ts`, enregistrez l’Agent : ```ts import { Mastra } from '@mastra/core' import { chefAgent } from './agents/chefAgent' export const mastra = new Mastra({ agents: { chefAgent }, }) ``` ## Interagir avec l’Agent Selon vos besoins, vous pouvez interagir avec l’Agent et recevoir ses réponses sous différents formats. Dans les étapes suivantes, vous apprendrez à générer, diffuser en flux et obtenir une sortie structurée. 1. Créez un fichier `src/index.ts` et ajoutez-y une fonction `main()`. À l’intérieur, rédigez une requête à adresser à l’Agent et consignez sa réponse. ```ts import { chefAgent } from './mastra/agents/chefAgent' async function main() { const query = 'In my kitchen I have: pasta, canned tomatoes, garlic, olive oil, and some dried herbs (basil and oregano). What can I make?' console.log(`Query: ${query}`) const response = await chefAgent.generate([{ role: 'user', content: query }]) console.log('\n👨‍🍳 Chef Michel:', response.text) } main() ``` Exécutez ensuite le script : ```bash npx bun src/index.ts ``` Vous devriez obtenir une sortie semblable à celle-ci : ```text Query: In my kitchen I have: pasta, canned tomatoes, garlic, olive oil, and some dried herbs (basil and oregano). What can I make? 👨‍🍳 Chef Michel: You can make a delicious pasta al pomodoro! Here's how... ``` 2. Dans l’exemple précédent, vous avez peut-être attendu un peu la réponse sans indication de progression. Pour afficher la sortie de l’Agent au fur et à mesure de sa création, diffusez plutôt sa réponse vers le terminal. ```ts import { chefAgent } from './mastra/agents/chefAgent' async function main() { const query = "Now I'm over at my friend's house, and they have: chicken thighs, coconut milk, sweet potatoes, and some curry powder." console.log(`Query: ${query}`) const stream = await chefAgent.stream([{ role: 'user', content: query }]) console.log('\n Chef Michel: ') for await (const chunk of stream.textStream) { process.stdout.write(chunk) } console.log('\n\n✅ Recipe complete!') } main() ``` Exécutez ensuite à nouveau le script : ```bash npx bun src/index.ts ``` Vous devriez obtenir une sortie semblable à celle ci-dessous. Cette fois, vous pouvez la lire ligne par ligne plutôt que sous forme d’un seul gros bloc. ```text Query: Now I'm over at my friend's house, and they have: chicken thighs, coconut milk, sweet potatoes, and some curry powder. 👨‍🍳 Chef Michel: Great! You can make a comforting chicken curry... ✅ Recipe complete! ``` 3. Au lieu d’afficher la réponse de l’Agent à une personne, vous souhaiterez peut-être la transmettre à une autre partie de votre code. Dans ce cas, votre Agent doit retourner une [sortie structurée](https://mastra.zisheng.pro/fr/docs/agents/structured-output). Modifiez votre `src/index.ts` comme suit : ```ts import { chefAgent } from './mastra/agents/chefAgent' import { z } from 'zod' async function main() { const query = 'I want to make lasagna, can you generate a lasagna recipe for me?' console.log(`Query: ${query}`) // Define the Zod schema const schema = z.object({ ingredients: z.array( z.object({ name: z.string(), amount: z.string(), }), ), steps: z.array(z.string()), }) const response = await chefAgent.generate([{ role: 'user', content: query }], { structuredOutput: { schema, }, }) console.log('\n👨‍🍳 Chef Michel:', response.object) } main() ``` Après avoir exécuté à nouveau le script, vous devriez obtenir une sortie semblable à celle-ci : ```text Query: I want to make lasagna, can you generate a lasagna recipe for me? 👨‍🍳 Chef Michel: { ingredients: [ { name: "Lasagna noodles", amount: "12 sheets" }, { name: "Ground beef", amount: "1 pound" }, ], steps: [ "Preheat oven to 375°F (190°C).", "Cook the lasagna noodles according to package instructions.", ] } ``` ## Exécuter le serveur de l’Agent Découvrez comment interagir avec votre Agent via l’API de Mastra. 1. Vous pouvez exécuter votre Agent comme service avec la commande `mastra dev` : ```bash mastra dev ``` Cette commande démarre un serveur qui expose des endpoints permettant d’interagir avec vos Agents enregistrés. Dans [Studio](https://mastra.zisheng.pro/fr/docs/studio/overview), vous pouvez tester votre Agent via une interface utilisateur. 2. Par défaut, `mastra dev` s’exécute sur `http://localhost:4111`. Votre Agent Assistant de cuisine sera disponible à l’adresse suivante : ```text POST http://localhost:4111/api/agents/chefAgent/generate ``` 3. Vous pouvez interagir avec l’Agent à l’aide de `curl` en ligne de commande : ```bash curl -X POST http://localhost:4111/api/agents/chefAgent/generate \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "role": "user", "content": "I have eggs, flour, and milk. What can I make?" } ] }' ``` **Exemple de réponse :** ```json { "text": "You can make delicious pancakes! Here's a simple recipe..." } ```