Aller au contenu principal

workflowRoute()

Crée un handler de route pour diffuser l'exécution d'un workflow au format AI SDK. Cette fonction enregistre un endpoint HTTP POST qui accepte des données d'entrée, exécute un workflow et diffuse la réponse au client dans un format compatible avec AI SDK. Vous devez l'utiliser dans une route d'API personnalisée.

Utilisez handleWorkflowStream() si vous avez besoin d'un handler indépendant du framework.

workflowRoute() conserve le comportement existant d'AI SDK v5, qui reste le comportement par défaut. Si votre application est typée pour AI SDK v6, transmettez version: 'v6'.

Streaming d'un Agent dans les workflows

Lorsqu'une étape de workflow transmet le flux d'un Agent au writer du workflow, par exemple avec await response.fullStream.pipeTo(writer), les fragments de texte et les appels de Tools de l'Agent sont relayés en temps réel vers le flux de l'interface, même si l'Agent s'exécute au sein des étapes du workflow.

Consultez la page Streaming des workflows pour plus de détails.

Exemple d'utilisation
Lien direct vers Exemple d'utilisation

Cet exemple montre comment configurer sur l'endpoint /workflow une route qui utilise le workflow dont l'ID est weatherWorkflow.

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { workflowRoute } from '@mastra/ai-sdk'

export const mastra = new Mastra({
server: {
apiRoutes: [
workflowRoute({
path: '/workflow',
workflow: 'weatherWorkflow',
}),
],
},
})

Vous pouvez également définir à l'exécution le routage des workflows à partir d'un workflowId. L'URL /workflow/weatherWorkflow sera résolue vers le workflow dont l'ID est weatherWorkflow.

src/mastra/index.ts
import { Mastra } from '@mastra/core'
import { workflowRoute } from '@mastra/ai-sdk'

export const mastra = new Mastra({
server: {
apiRoutes: [
workflowRoute({
path: '/workflow/:workflowId',
}),
],
},
})

Paramètres
Lien direct vers Paramètres

version?:

'v5' | 'v6'
= 'v5'
Sélectionne le contrat de flux AI SDK à émettre. Omettez cette option ou transmettez 'v5' pour conserver le comportement par défaut existant. Transmettez 'v6' lorsque votre application est typée avec les helpers de réponse AI SDK v6.

path?:

string
= '/api/workflows/:workflowId/stream'
Chemin de la route, par exemple /workflow ou /workflow/:workflowId. Incluez :workflowId pour un routage dynamique des workflows.

workflow?:

string
= undefined
ID fixe du workflow lorsque le routage dynamique n'est pas utilisé.

includeTextStreamParts?:

boolean
= true
Indique si les parties textuelles du flux doivent être incluses dans la sortie.

Configuration supplémentaire
Lien direct vers Configuration supplémentaire

Vous pouvez utiliser prepareSendMessagesRequest pour personnaliser la requête envoyée à la route du workflow, par exemple afin de transmettre une configuration supplémentaire au workflow :

const { error, status, sendMessage, messages, regenerate, stop } = useChat({
transport: new DefaultChatTransport({
api: 'http://localhost:4111/workflow',
prepareSendMessagesRequest({ messages }) {
return {
body: {
inputData: {
city: messages[messages.length - 1].parts[0].text,
},
// Or resumeData for resuming a suspended workflow
resumeData: {
confirmation: messages[messages.length - 1].parts[0].text,
},
},
}
},
}),
})