> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Intégrer Mastra à votre projet SvelteKit Dans ce guide, vous allez créer avec Mastra un Agent d’IA capable d’appeler des Tools, puis le connecter à SvelteKit en important et en appelant l’Agent directement depuis vos routes. 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 SvelteKit (facultatif) Si vous disposez déjà d’une application SvelteKit utilisant Tailwind, passez à l’étape suivante. Exécutez la commande suivante pour [créer une application SvelteKit](https://svelte.dev/docs/kit/creating-a-project) : **npm**: ```bash npx sv create mastra-svelte --template minimal --types ts --add tailwindcss="plugins:forms" --install npm ``` **pnpm**: ```bash pnpm dlx sv create mastra-svelte --template minimal --types ts --add tailwindcss="plugins:forms" --install npm ``` **Yarn**: ```bash yarn dlx sv create mastra-svelte --template minimal --types ts --add tailwindcss="plugins:forms" --install npm ``` **Bun**: ```bash bun x sv create mastra-svelte --template minimal --types ts --add tailwindcss="plugins:forms" --install npm ``` Cette commande crée un projet nommé `mastra-svelte`, mais vous pouvez choisir le nom de votre choix. Tailwind est ajouté pour la mise en forme utilisée plus loin. ## Initialiser Mastra Accédez à votre projet SvelteKit : ```bash cd mastra-svelte ``` 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 vos routes SvelteKit. ## Installer AI SDK UI Installez AI SDK UI ainsi que l’adaptateur Mastra : **npm**: ```bash npm install @mastra/ai-sdk@latest @ai-sdk/svelte ai ``` **pnpm**: ```bash pnpm add @mastra/ai-sdk@latest @ai-sdk/svelte ai ``` **Yarn**: ```bash yarn add @mastra/ai-sdk@latest @ai-sdk/svelte ai ``` **Bun**: ```bash bun add @mastra/ai-sdk@latest @ai-sdk/svelte ai ``` ## Créer une route de chat Créez `src/routes/api/chat/+server.ts` : ```ts import type { RequestHandler } from './$types' import { handleChatStream } from '@mastra/ai-sdk' import { toAISdkV5Messages } from '@mastra/ai-sdk/ui' import { createUIMessageStreamResponse } from 'ai' import { mastra } from '../../../mastra' const THREAD_ID = 'example-user-id' const RESOURCE_ID = 'weather-chat' export const POST: RequestHandler = async ({ request }) => { const params = await request.json() const stream = await handleChatStream({ mastra, agentId: 'weather-agent', params: { ...params, memory: { ...params.memory, thread: THREAD_ID, resource: RESOURCE_ID, }, }, }) return createUIMessageStreamResponse({ stream }) } export const GET: RequestHandler = async () => { const memory = await mastra.getAgentById('weather-agent').getMemory() let response = null try { response = await memory?.recall({ threadId: THREAD_ID, resourceId: RESOURCE_ID, }) } catch { console.log('No previous messages found.') } const uiMessages = toAISdkV5Messages(response?.messages || []) return Response.json(uiMessages) } ``` La route `POST` accepte une instruction et renvoie la réponse de l’Agent en streaming au format AI SDK, tandis que la route `GET` récupère l’historique des messages depuis la mémoire afin de réhydrater l’interface lors du rechargement du client. Pour que le gestionnaire `GET` soit appelé, créez un fichier `src/routes/+page.ts`. Sa fonction `load()` s’exécute avec `+page.svelte`. ```ts import type { UIDataTypes, UIMessage, UITools } from 'ai' import type { PageLoad } from './$types' export const load: PageLoad = async ({ fetch }) => { const response = await fetch('/api/chat') const initialMessages = (await response.json()) as UIMessage[] return { initialMessages } } ``` ## Ajouter l’interface de chat Remplacez le contenu de `src/routes/+page.svelte` par ce qui suit. ```svelte
{#each chat.messages as message, messageIndex (messageIndex)}
{#each message.parts as part, partIndex (partIndex)} {#if part.type === 'text'}
{part.text}
{:else if part.type.startsWith('tool-')}
{(part as ToolUIPart).type.split("-").slice(1).join("-")} - {STATE_TO_LABEL_MAP[(part as ToolUIPart).state ?? 'output-available']}
Parameters
{JSON.stringify((part as ToolUIPart).input, null, 2)}
{(part as ToolUIPart).errorText ? 'Error' : 'Result'}
{JSON.stringify((part as ToolUIPart).output, null, 2)}
{#if (part as ToolUIPart).errorText}
{(part as ToolUIPart).errorText}
{/if}
{/if} {/each}
{/each}
``` Cette page connecte [`Chat`](https://ai-sdk.dev/docs/reference/ai-sdk-ui/use-chat) au point de terminaison `api/chat`, lui envoie les instructions et reçoit la réponse en streaming par fragments. Elle affiche le texte de la réponse à l’aide de composants personnalisés pour les messages et les Tools. ## Tester votre Agent 1. Exécutez votre application SvelteKit avec `npm run dev` 2. Ouvrez le chat à l’adresse 3. 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 SvelteKit ! 🎉 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 SvelteKit, 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) - Essayez la bibliothèque [Svelte AI Elements non officielle](https://svelte-ai-elements.vercel.app/)