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'.
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'utilisationLien 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.
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.
import { Mastra } from '@mastra/core'
import { workflowRoute } from '@mastra/ai-sdk'
export const mastra = new Mastra({
server: {
apiRoutes: [
workflowRoute({
path: '/workflow/:workflowId',
}),
],
},
})
ParamètresLien direct vers Paramètres
version?:
'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?:
/workflow ou /workflow/:workflowId. Incluez :workflowId pour un routage dynamique des workflows.workflow?:
includeTextStreamParts?:
Configuration supplémentaireLien 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,
},
},
}
},
}),
})