Aller au contenu principal

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
Lien 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ètres
Lien 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ée
Lien 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ée
Lien 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 flux
Lien 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 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