尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
如何用 Mastra 的 Agent.stream() 流式输出代理响应并消费 textStream
如何用 Mastra 的 Agent.stream() 流式输出代理响应并消费 textStream【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra在 Mastra 项目中Agent 注册完成后默认用.generate()要等全部步骤和工具调用完成才返回完整响应如果你希望响应在生成过程中就逐步到达聊天界面、长文本生成、需要即时反馈的场景应改用Agent.stream()。它返回一个MastraModelOutput其中的textStream会把响应拆成增量文本块chunk你可以用for await循环逐块消费流结束后再取完整文本、用量等结果。这篇指南基于 Mastra 官方文档 Streaming 指南 与 Agent.stream() 参考。示例代码依赖mastra/core包如需把流转换成 AI SDK 格式还会用到文档 frontmatter 中列出的mastra/ai-sdk包。准备创建并注册一个 Agent流式调用前提是你有一个可用的 Agent。按 Agents 文档 的做法用mastra/core/agent中的Agent类创建并注册到 Mastra 实例import { Agent } from mastra/core/agent export const testAgent new Agent({ id: test-agent, name: Test Agent, instructions: You are a helpful assistant., model: __GATEWAY_OPENAI_MODEL__, })model按文档说明以provider/model-name形式指定官方文档源码中用__GATEWAY_OPENAI_MODEL__作为占位符使用时替换成你实际接入的模型字符串。import { Mastra } from mastra/core import { testAgent } from ./agents/test-agent export const mastra new Mastra({ agents: { testAgent }, })调用时文档建议用mastra.getAgentById()取回 Agent这样它能访问实例级的共享服务存储、日志、Agent 注册表直接 import 的 Agent 只能用本地配置拿不到这些共享服务。调用 stream() 并逐块消费 textStreamstream()的第一个参数是messages支持四种形式见 stream 参考的参数表单个字符串、字符串数组或带role/content的消息对象数组以及AiMessageType[]、UIMessageWithMetadata[]。单条字符串最简单多条上下文用数组需要精确控制角色和对话流时用消息对象数组。最短主路径调用stream()用for await遍历textStreamconst agent mastra.getAgentById(test-agent) const stream await agent.stream([{ role: user, content: Help me organize my day }]) for await (const chunk of stream.textStream) { process.stdout.write(chunk) }这里的关键区别是textStream的类型是ReadableStreamstringMastraModelOutput 参考 说明它只输出增量文本内容已经过滤掉了元数据、工具调用和控制块如果你需要看到工具调用、推理等所有事件应改用下一节介绍之外的fullStream见后文“可选检查完整事件流”。运行后终端会随生成进度逐段打印代理回复。下面是官方文档给出的示例输出文档示例实际内容取决于模型Of course! To help you organize your day effectively, I need a bit more information. Here are some questions to consider: ...流结束后取完整结果MastraModelOutput除了流式属性外还有一组 promise 属性它们在流结束后才 resolve见 MastraModelOutput 参考属性类型说明stream.textPromisestring模型返回的完整拼接文本stream.stepsPromise完成的模型步骤列表stream.usagePromiseLanguageModelUsagetoken 用量含inputTokens、outputTokens、totalTokens推理模型另有可选的reasoningTokensstream.finishReasonPromisestring \| undefined停止原因stop、length、tool_calls、content_filter流未结束时为undefinedstream.objectStream/stream.object—传入structuredOutput时的部分/最终结构化输出也就是说你可以一边消费textStream一边在流结束后await stream.text拿到完整文本做后续处理const stream await agent.stream(Write a haiku) for await (const text of stream.textStream) { process.stdout.write(text) } const fullText await stream.text console.log(fullText)如果只关心 promise 结果、不想自己遍历 chunk可以手动消费整条流consumeStream()会完成流消费并触发 promise 属性 resolve其可选参数onError用于接收流错误const stream await agent.stream(Analyze this data) try { await stream.consumeStream({ onError: error { console.error(Stream error:, error) }, }) const result await stream.text } catch (error) { console.error(Failed to get result:, error) }另一种排查方式是检查错误属性stream.error为undefined表示没有出错否则保存字符串消息、Error对象或带堆栈的序列化错误。也可以用stream.getFullOutput()一次性拿到text、object、toolCalls、toolResults、usage、reasoning、finishReason、response的汇总对象。可选检查完整事件流 fullStream如果需要调试或向用户展示中间过程开始、工具调用、步骤边界遍历stream.fullStream可以看到所有事件块。每个块都带type以及可选的from、payload字段见 ChunkType 参考const agent mastra.getAgentById(test-agent) const stream await agent.stream([{ role: user, content: Help me organize my day }]) for await (const chunk of stream.fullStream) { console.log(chunk) }Agent 常见事件包括start运行开始、text-start/text-delta/text-end文本生成的边界与增量增量文本在 delta 块中、reasoning-start/reasoning-delta/reasoning-end、tool-call与tool-result、step-start/step-finish模型步骤开始与结束、finish运行完成。该列表不完整完整块类型以ChunkType参考为准。下面是官方文档展示的示例事件文档示例字段值会随运行变化{ type: start, from: AGENT, // .. } { type: step-start, from: AGENT, payload: { messageId: msg-cdUrkirvXw8A6oE4t5lzDuxi, // ... } } { type: tool-call, from: AGENT, payload: { toolCallId: call_jbhi3s1qvR6Aqt9axCfTBMsA, toolName: testTool // .. } }选择依据只要展示文本就用textStream需要区分工具调用、推理等阶段例如在 UI 中渲染进度才用fullStream并可以按chunk.type分支处理。限制与注意事项模型版本stream()面向 V2 模型。V1 模型应使用streamLegacy()框架会自动检测模型版本不匹配时抛出错误见 stream 参考。后台任务场景对会派发后台任务的 Agent文档建议使用untilIdle: true选项让流在后台任务完成、Agent 有机会响应结果之前保持打开。该选项要求配置了 agent memory。回调onFinish、onStepFinish、onChunk、onError、onAbort等回调作为stream()第二参数的 options 传入适合不想手动遍历流、只想在关键节点打点时替代部分遍历逻辑。下一步完整的MastraModelOutput属性清单见 MastraModelOutput 参考。如果前端使用 AI SDK可以用mastra/ai-sdk的toAISdkStream()把 Mastra 流转成 AI SDK 兼容格式转换器默认 AI SDK v5按你安装的版本传入version例如version: v7再交给useChat()等组件消费。【免费下载链接】mastraMastra is the modern TypeScript framework for AI-powered applications and agents.项目地址: https://gitcode.com/GitHub_Trending/ma/mastra创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

Screenpipe SDK 的 Electron 集成:构建一个可运行的最小屏幕录制桌面应用

Screenpipe SDK 的 Electron 集成:构建一个可运行的最小屏幕录制桌面应用

Screenpipe SDK 的 Electron 集成:构建一个可运行的最小屏幕录制桌面应用 【免费下载链接】screenpipe YC (S26) | Open Computer History | Record your screen continuously locally and provide context to your agents (Claude, Codex, Openclaw, Hermes, Runne…

📅 2026/9/13 11:54:45
DeepAgent+OpenSandbox:智能体开发新范式解析

DeepAgent+OpenSandbox:智能体开发新范式解析

1. DeepAgentOpenSandbox:2026年智能体开发的新范式DeepAgentOpenSandbox这对组合正在重新定义复杂智能体开发的边界。作为基于LangGraph构建的下一代框架,它解决了传统LLM工具调用代理在长周期任务中表现"肤浅"的核心痛点。我花了三个月时间深…

📅 2026/9/13 11:54:45
COLMAP 三维重建实战指南:三步跑通

COLMAP 三维重建实战指南:三步跑通

COLMAP 三维重建实战指南:三步跑通 【免费下载链接】colmap COLMAP - Structure-from-Motion and Multi-View Stereo 项目地址: https://gitcode.com/GitHub_Trending/co/colmap COLMAP 是一款开源三维重建工具,输入一组照片,输出场景…

📅 2026/9/13 11:54:45
MORE NEWS

更多资讯

📰

使用 CCGS `/content-audit` 技能:GDD 内容清单与资源库的完整性缺口审计

使用 CCGS /content-audit 技能:GDD 内容清单与资源库的完整性缺口审计 【免费下载链接】Claude-Code-Game-Studios Turn Claude Code into a full game dev studio — 49 AI agents, 72 workflow skills, and a complete coordination system mirroring real studi…

📰

Renovate terra-version Manager 深度解析:`.terraform-version` 文件的依赖自动升级机制

Renovate terra-version Manager 深度解析:.terraform-version 文件的依赖自动升级机制 【免费下载链接】renovate Home of the Renovate CLI: Cross-platform Dependency Automation by Mend.io 项目地址: https://gitcode.com/GitHub_Trending/re/renovate …

📰

PDF补丁丁完整指南:免费搞定PDF书签修复、合并拆分与页面处理的一站式方案

PDF补丁丁完整指南:免费搞定PDF书签修复、合并拆分与页面处理的一站式方案 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片等等 项…

📰

如何从源码构建 witr 并用 Go 交叉编译验证 Linux 与 macOS 的 amd64、arm64 二进制?

如何从源码构建 witr 并用 Go 交叉编译验证 Linux 与 macOS 的 amd64、arm64 二进制? 【免费下载链接】witr Why is this running? Trace any process, port, container, or file back to what started it - CLI TUI. 项目地址: https://gitcode.com/GitHub_Tr…

📰

SPC统计过程控制:原理、实施与应用指南

1. SPC基础概念解析 统计过程控制(Statistical Process Control,简称SPC)是一套运用统计方法对生产过程进行监控与改进的质量管理技术。它的核心思想是通过收集和分析生产过程中的数据,识别异常波动,从而实现对质量的预…

📰

Nim游戏与SG函数:公平组合游戏必胜策略解析

1. 从Nim游戏到SG函数:公平组合游戏的理论基础公平组合游戏是算法竞赛中的经典问题类型,其核心在于研究两位玩家在完全信息下的最优策略。Nim游戏作为最基础的公平组合游戏,由数学家Charles Bouton在1901年首次提出解决方案,而Spr…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬