> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Run.stream() La méthode `.stream()` permet de diffuser en temps réel les réponses d’un Workflow. Elle renvoie directement un `ReadableStream` d’événements. ## Exemple d’utilisation ```typescript const run = await workflow.createRun() const stream = await run.stream({ inputData: { value: 'initial data', }, }) for await (const chunk of stream) { console.log(chunk) } ``` ## Paramètres **inputData** (`z.infer`): Données d’entrée correspondant au schéma d’entrée du Workflow **requestContext** (`RequestContext`): Données du Request Context à utiliser pendant l’exécution du Workflow **tracingContext** (`TracingContext`): Contexte de Tracing permettant de créer des spans enfants et d’ajouter des métadonnées. **tracingContext.currentSpan** (`Span`): Span actuel permettant de créer des spans enfants et d’ajouter des métadonnées. **tracingOptions** (`TracingOptions`): Options de configuration du Tracing. **tracingOptions.metadata** (`Record`): Métadonnées à ajouter au span racine de la Trace. **tracingOptions.requestContextKeys** (`string[]`): Clés RequestContext supplémentaires à extraire comme métadonnées de cette Trace. Prend en charge la notation avec points pour les valeurs imbriquées (par exemple, 'user.id'). **tracingOptions.traceId** (`string`): ID de Trace à utiliser pour cette exécution (1 à 32 caractères hexadécimaux). S’il est fourni, cette Trace fera partie de la Trace indiquée. **tracingOptions.parentSpanId** (`string`): ID du span parent à utiliser pour cette exécution (1 à 16 caractères hexadécimaux). S’il est fourni, le span racine sera créé comme enfant de ce span. **tracingOptions.tags** (`string[]`): Tags à appliquer à cette Trace. Libellés de chaîne permettant de classer et de filtrer les Traces. **closeOnSuspend** (`boolean`): Indique si le flux doit être fermé lorsque le Workflow est suspendu, ou rester ouvert jusqu’à la fin du Workflow (réussite ou erreur). La valeur par défaut est true. ## Valeur renvoyée Renvoie un objet `WorkflowRunOutput` qui implémente l’interface d’itération asynchrone, peut être utilisé directement dans les boucles `for await...of` et donne accès au flux ainsi qu’aux résultats d’exécution du Workflow. **fullStream** (`ReadableStream`): ReadableStream d’événements de Workflow que vous pouvez parcourir afin de suivre la progression en temps réel. Vous pouvez également parcourir directement l’objet WorkflowRunOutput. **result** (`Promise>`): Promise résolue avec le résultat final du Workflow **status** (`WorkflowRunStatus`): État actuel de l’exécution du Workflow ('running', 'suspended', 'success', 'failed', 'canceled' ou 'tripwire') **usage** (`Promise<{ inputTokens: number; outputTokens: number; totalTokens: number, reasoningTokens?: number, cachedInputTokens?: number }>`): Promise résolue avec les statistiques d’utilisation des tokens ## Exemple d’utilisation avancée ```typescript const run = await workflow.createRun() const stream = run.stream({ inputData: { value: 'initial data', }, }) // Iterate over stream events (you can iterate over stream directly or use stream.fullStream) for await (const chunk of stream) { console.log(chunk) } // Access the final result const result = await stream.result console.log('Final result:', result) // Access token usage const usage = await stream.usage console.log('Token usage:', usage) // Check current status console.log('Status:', stream.status) ``` ## Événements du flux Le flux émet différents types d’événements pendant l’exécution du Workflow. Chaque événement possède un champ `type` et un `payload` contenant les données pertinentes : - **`workflow-start`** : l’exécution du Workflow commence - **`workflow-step-start`** : une étape commence son exécution - **`workflow-step-output`** : sortie personnalisée d’une étape - **`workflow-step-progress`** : une étape foreach signale la progression de chaque itération (comprend `completedCount`, `totalCount`, `currentIndex`, `iterationStatus` et, éventuellement, `iterationOutput`) - **`workflow-step-result`** : une étape se termine avec des résultats - **`workflow-finish`** : l’exécution du Workflow se termine avec des statistiques d’utilisation. Pour les exécutions réussies, `payload.finalWorkflowResult` contient le résultat final du Workflow, ce qui évite aux consommateurs du flux d’effectuer une récupération supplémentaire ## Voir aussi - [Présentation des Workflows](https://mastra.zisheng.pro/fr/docs/workflows/overview) - [Workflow.createRun()](https://mastra.zisheng.pro/fr/reference/workflows/workflow-methods/create-run) - [Run.resumeStream()](https://mastra.zisheng.pro/fr/reference/streaming/workflows/resumeStream)