> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Intégrer Mastra à votre projet Electron Dans ce guide, vous allez créer avec Mastra un Agent d’IA capable d’appeler des Tools, puis le connecter à une application de bureau Electron en l’appelant directement depuis le serveur Mastra. Vous utiliserez [AI SDK UI](https://ai-sdk.dev/docs/ai-sdk-ui/overview) pour créer une expérience de chat élégante et interactive. ## Avant de commencer - Vous aurez besoin d’une clé API provenant d’un [Provider de modèles](https://mastra.zisheng.pro/fr/models) pris en charge. Si vous n’avez pas de préférence, utilisez [OpenAI](https://mastra.zisheng.pro/fr/models/providers/openai). - Installez Node.js `v22.13.0` ou une version ultérieure ## Créer une application Electron (facultatif) Si vous disposez déjà d’une application Electron, passez à l’étape suivante. Initialisez une nouvelle application Electron avec [electron-vite](https://electron-vite.org/) : **npm**: ```bash npm create @quick-start/electron@latest electron-chat -- --template react-ts --skip ``` **pnpm**: ```bash pnpm create @quick-start/electron electron-chat --template react-ts --skip ``` **Yarn**: ```bash yarn create @quick-start/electron electron-chat --template react-ts --skip ``` **Bun**: ```bash bunx @quick-start/create-electron@latest electron-chat --template react-ts --skip ``` Cette commande crée une application Electron nommée `electron-chat` avec React et TypeScript. Accédez au répertoire du projet : ```bash cd electron-chat ``` ### Modifier les paramètres CSP Pour que l’application Electron puisse appeler le serveur Mastra, vous devez adapter les paramètres de la politique de sécurité du contenu (CSP). Ouvrez `src/renderer/index.html` et mettez à jour la balise `` afin d’inclure `http://localhost:4111` dans la directive `connect-src` : ```html ``` > **Info:** Pour les déploiements en production, adaptez cette valeur à l’URL réelle de votre serveur. ### Modifier `main.css` Ouvrez `src/renderer/src/assets/main.css` et remplacez son contenu par : ```css @import './base.css'; body { background: var(--ev-c-white); color: var(--ev-c-black); } ``` ## Initialiser Mastra Exécutez [`mastra init`](https://mastra.zisheng.pro/fr/reference/cli/mastra). Lorsque vous y êtes invité, choisissez un Provider (par exemple OpenAI) et saisissez votre clé : **npm**: ```bash npx mastra@latest init ``` **pnpm**: ```bash pnpm dlx mastra@latest init ``` **Yarn**: ```bash yarn dlx mastra@latest init ``` **Bun**: ```bash bun x mastra@latest init ``` Cette commande crée un dossier `src/mastra` contenant un exemple d’Agent météo et les fichiers suivants : - `index.ts` — configuration de Mastra, y compris la mémoire - `tools/weather-tool.ts` — Tool qui récupère la météo d’un lieu donné - `agents/weather-agent.ts` — Agent météo doté d’une instruction qui utilise le Tool Dans les étapes suivantes, vous appellerez `weather-agent.ts` depuis votre interface de chat. ## Installer AI SDK UI et AI Elements Installez AI SDK UI ainsi que l’adaptateur Mastra : **npm**: ```bash npm install @mastra/ai-sdk@latest @ai-sdk/react ai ``` **pnpm**: ```bash pnpm add @mastra/ai-sdk@latest @ai-sdk/react ai ``` **Yarn**: ```bash yarn add @mastra/ai-sdk@latest @ai-sdk/react ai ``` **Bun**: ```bash bun add @mastra/ai-sdk@latest @ai-sdk/react ai ``` ## Créer une route de chat Ouvrez `src/mastra/index.ts` et ajoutez une [`chatRoute()`](https://mastra.zisheng.pro/fr/reference/ai-sdk/chat-route) à votre configuration. Elle crée une route d’API que votre frontend Electron peut appeler pour recevoir des réponses de chat compatibles avec AI SDK ; vous l’utiliserez ensuite avec `useChat()`. ```ts import { Mastra } from '@mastra/core/mastra' // Existing imports... import { chatRoute } from '@mastra/ai-sdk' export const mastra = new Mastra({ // Existing config... server: { cors: { origin: '*', // Restrict this to your app's origin in production allowMethods: ['*'], allowHeaders: ['*'], }, apiRoutes: [ chatRoute({ path: '/chat/:agentId', }), ], }, }) ``` > **Info:** CORS est nécessaire, car le moteur de rendu Electron se charge depuis une origine différente de celle du serveur Mastra. Pour les déploiements en production, limitez l’origine à celle de votre application. ## Ajouter l’interface de chat Ouvrez `src/renderer/src/App.tsx` et remplacez son contenu par le composant de chat : ```tsx import { useState } from 'react' import { useChat } from '@ai-sdk/react' import { DefaultChatTransport, type ToolUIPart } from 'ai' const STATE_TO_LABEL_MAP: Record = { 'input-streaming': 'Streaming input...', 'input-available': 'Input ready', 'approval-requested': 'Approval requested', 'approval-responded': 'Approval responded', 'output-available': 'Complete', 'output-error': 'Error', } export default function App(): React.JSX.Element { const [input, setInput] = useState('') const { messages, sendMessage } = useChat({ transport: new DefaultChatTransport({ api: `http://localhost:4111/chat/weather-agent`, }), }) const handleSubmit = (e: React.FormEvent): void => { e.preventDefault() if (!input.trim()) return sendMessage({ text: input }) setInput('') } return (
{messages.map((message, messageIndex) => (
{message.parts.map((part, partIndex) => { if (part.type === 'text') { return (
{part.text}
) } if (part.type.startsWith('tool-')) { const toolPart = part as unknown as ToolUIPart return (
{toolPart.type.split('-').slice(1).join('-')} -{' '} {STATE_TO_LABEL_MAP[toolPart.state ?? 'output-available']}
Parameters
                                {JSON.stringify(toolPart.input, null, 2)}
                              
{toolPart.errorText ? 'Error' : 'Result'}
                                {JSON.stringify(toolPart.output, null, 2)}
                              
{toolPart.errorText && (
{toolPart.errorText}
)}
) } return null })}
))}
setInput(e.target.value)} />
) } ``` Cela connecte [`useChat()`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) au point de terminaison `/chat/weather-agent`, lui envoie les instructions et reçoit la réponse en streaming par fragments. ## Tester votre Agent Pour tester votre Agent avec l’interface de chat, exécutez simultanément le serveur Mastra et l’application Electron. 1. Démarrez le serveur de développement Mastra : **npm**: ```bash npx mastra dev ``` **pnpm**: ```bash pnpm dlx mastra dev ``` **Yarn**: ```bash yarn dlx mastra dev ``` **Bun**: ```bash bun x mastra dev ``` 2. Dans un autre terminal, démarrez l’application Electron : **npm**: ```bash npm run dev ``` **pnpm**: ```bash pnpm run dev ``` **Yarn**: ```bash yarn dev ``` **Bun**: ```bash bun run dev ``` 3. Une fenêtre Electron s’ouvre avec l’interface de chat 4. Posez une question sur la météo. Si votre clé API est correctement configurée, vous obtiendrez une réponse ## Étapes suivantes Félicitations, vous avez créé votre Agent Mastra avec Electron ! 🎉 Vous pouvez maintenant enrichir le projet avec vos propres Tools et votre propre logique : - En savoir plus sur les [Agents](https://mastra.zisheng.pro/fr/docs/agents/overview) - Donnez à votre Agent ses propres [Tools](https://mastra.zisheng.pro/fr/docs/agents/using-tools) - Ajoutez une [mémoire](https://mastra.zisheng.pro/fr/docs/memory/overview) semblable à celle des humains à votre Agent Lorsque vous êtes prêt, découvrez plus en détail l’intégration de Mastra avec AI SDK UI et React, ainsi que le déploiement de votre Agent sur n’importe quelle plateforme : - Intégrez Mastra à [AI SDK UI](https://mastra.zisheng.pro/fr/guides/build-your-ui/ai-sdk-ui) - Déployez votre Agent [sur la plateforme de votre choix](https://mastra.zisheng.pro/fr/docs/deployment/overview)