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’utilisationLien direct vers Exemple d’utilisation
const run = await workflow.createRun()
const stream = await run.stream({
inputData: {
value: 'initial data',
},
})
for await (const chunk of stream) {
console.log(chunk)
}
ParamètresLien direct vers Paramètres
inputData?:
z.infer<TInput>
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.
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.
metadata?:
Record<string, any>
Métadonnées à ajouter au span racine de la Trace.
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').
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.
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.
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éeLien direct vers 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<WorkflowStreamEvent>
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<WorkflowResult<TState, TInput, TOutput, TSteps>>
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éeLien direct vers Exemple d’utilisation avancée
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 fluxLien direct vers É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 commenceworkflow-step-start: une étape commence son exécutionworkflow-step-output: sortie personnalisée d’une étapeworkflow-step-progress: une étape foreach signale la progression de chaque itération (comprendcompletedCount,totalCount,currentIndex,iterationStatuset, éventuellement,iterationOutput)workflow-step-result: une étape se termine avec des résultatsworkflow-finish: l’exécution du Workflow se termine avec des statistiques d’utilisation. Pour les exécutions réussies,payload.finalWorkflowResultcontient le résultat final du Workflow, ce qui évite aux consommateurs du flux d’effectuer une récupération supplémentaire