> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # MastraModelOutput `MastraModelOutput` クラスは [.stream()](https://mastra.zisheng.pro/ja/reference/streaming/agents/stream) によって返され、モデル出力へストリーミングと Promise ベースの両方でアクセスできます。構造化出力の生成、Tool 呼び出し、推論、詳細な使用量の追跡をサポートします。 ```typescript // MastraModelOutput is returned by agent.stream() const stream = await agent.stream('Hello world') ``` セットアップと基本的な使用方法については、[.stream()](https://mastra.zisheng.pro/ja/reference/streaming/agents/stream) メソッドのドキュメントを参照してください。 ## ストリーミングプロパティ これらのプロパティを使用すると、生成中のモデル出力へリアルタイムでアクセスできます。 **fullStream** (`ReadableStream>`): テキスト、Tool 呼び出し、推論、メタデータ、制御チャンクを含む、すべてのチャンク型の完全なストリーム。モデルの応答のあらゆる側面へ詳細にアクセスできます。 **fullStream.ChunkType** (`ChunkType`): ストリーミング中に出力される可能性のあるすべてのチャンク型 **textStream** (`ReadableStream`): 増分テキストコンテンツのみのストリーム。すべてのメタデータ、Tool 呼び出し、制御チャンクを除外し、生成中のテキストだけを提供します。 **objectStream** (`ReadableStream>`): 出力スキーマを使用する場合に、構造化オブジェクトの段階的な更新を流すストリーム。構築の進行に応じて部分的なオブジェクトを出力するため、構造化データの生成をリアルタイムで可視化できます。 **objectStream.PartialSchemaOutput** (`Partial`): 定義されたスキーマに一致する、部分的に完成したオブジェクト **elementStream** (`ReadableStream`): 出力スキーマで配列型を定義した場合に、個々の配列要素を流すストリーム。配列全体の完成を待たず、各要素が完成するたびに出力されます。 ## Promise ベースのプロパティ これらのプロパティは、ストリームの完了後に最終値へ解決されます。 **text** (`Promise`): モデルから返された、連結済みの完全なテキスト応答。テキスト生成が終了すると解決されます。 **object** (`Promise`): 出力スキーマを使用する場合の、完全な構造化オブジェクト応答。解決前にスキーマに対して検証されます。検証に失敗すると拒否されます。 **object.InferSchemaOutput** (`OUTPUT`): スキーマ定義と完全に一致する型付きオブジェクト **reasoning** (`Promise`): 推論をサポートするモデル(OpenAI の o1 シリーズなど)の完全な推論テキスト。推論機能のないモデルでは空文字列を返します。 **reasoningText** (`Promise`): 推論コンテンツへアクセスする別の方法。推論をサポートしないモデルでは、'reasoning' が空文字列を返すのに対し、こちらは undefined になる場合があります。 **toolCalls** (`Promise`): 実行中に行われたすべての Tool 呼び出しチャンクの配列。各チャンクには Tool のメタデータと実行の詳細が含まれます。 **toolCalls.type** (`'tool-call'`): チャンク型の識別子 **toolCalls.runId** (`string`): 実行 Run の識別子 **toolCalls.from** (`ChunkFrom`): チャンクの送信元(AGENT、WORKFLOW など) **toolCalls.payload** (`ToolCallPayload`): toolCallId、toolName、args、実行の詳細を含む Tool 呼び出しデータ **toolResults** (`Promise`): Tool 呼び出しに対応するすべての Tool 結果チャンクの配列。実行結果とエラー情報が含まれます。 **toolResults.type** (`'tool-result'`): チャンク型の識別子 **toolResults.runId** (`string`): 実行 Run の識別子 **toolResults.from** (`ChunkFrom`): チャンクの送信元(AGENT、WORKFLOW など) **toolResults.payload** (`ToolResultPayload`): toolCallId、toolName、result、エラー状態を含む Tool 結果データ **usage** (`Promise`): 入力トークン、出力トークン、合計トークン、推論トークン(推論モデルの場合)を含むトークン使用量の統計。 **usage.inputTokens** (`number`): 入力プロンプトによって消費されたトークン **usage.outputTokens** (`number`): 応答で生成されたトークン **usage.totalTokens** (`number`): 入力トークンと出力トークンの合計 **usage.reasoningTokens** (`number`): 非表示の推論トークン(推論モデルの場合) **usage.cachedInputTokens** (`number`): キャッシュにヒットした入力トークンの数 **finishReason** (`Promise`): 生成が停止した理由(例:'stop'、'length'、'tool\_calls'、'content\_filter')。ストリームが完了していない場合は undefined です。 **finishReason.stop** (`'stop'`): モデルが自然に完了した **finishReason.length** (`'length'`): 最大トークン数の上限に達した **finishReason.tool\_calls** (`'tool_calls'`): モデルが Tool を呼び出した **finishReason.content\_filter** (`'content_filter'`): コンテンツがフィルタリングされた **response** (`Promise`): モデル Provider からの応答メタデータとメッセージ。 **response.id** (`string`): モデル Provider からの応答 ID **response.timestamp** (`Date`): 応答のタイムスタンプ **response.modelId** (`string`): この応答に使用されたモデルの識別子 **response.headers** (`Record`): モデル Provider からの応答ヘッダー **response.messages** (`ResponseMessage[]`): モデル形式の応答メッセージ **response.uiMessages** (`UIMessage[]`): UI 形式の応答メッセージ。出力プロセッサーによって追加されたメタデータを含みます ## エラープロパティ **error** (`string | Error | { message: string; stack: string; } | undefined`): ストリームでエラーが発生した場合のエラー情報。エラーが発生しなかった場合は undefined です。文字列のメッセージ、Error オブジェクト、またはスタックトレースを含むシリアライズ済みエラーのいずれかです。 ## メソッド **getFullOutput** (`() => Promise`): テキスト、構造化オブジェクト、Tool 呼び出し、使用量の統計、推論、メタデータというすべての結果を含む包括的な出力オブジェクトを返します。すべてのストリーム結果へ単一のメソッドで簡単にアクセスできます。 **getFullOutput.text** (`string`): 完全なテキスト応答 **getFullOutput.object** (`OUTPUT`): スキーマが指定されている場合の構造化出力 **getFullOutput.toolCalls** (`ToolCallChunk[]`): 行われたすべての Tool 呼び出しチャンク **getFullOutput.toolResults** (`ToolResultChunk[]`): すべての Tool 結果チャンク **getFullOutput.usage** (`Record`): トークン使用量の統計 **getFullOutput.reasoning** (`string`): 利用可能な場合の推論テキスト **getFullOutput.finishReason** (`string`): 生成が終了した理由 **getFullOutput.response** (`Response`): モデル Provider からの応答メタデータとメッセージ **consumeStream** (`(options?: ConsumeStreamOptions) => Promise`): チャンクを処理せず、ストリーム全体を手動で消費します。Promise ベースの最終結果だけが必要で、ストリームの消費を開始したい場合に便利です。 **consumeStream.onError** (`(error: Error) => void`): ストリームエラーを処理するためのコールバック ## 使用例 ### 基本的なテキストストリーミング ```typescript const stream = await agent.stream('Write a haiku') // Stream text as it's generated for await (const text of stream.textStream) { process.stdout.write(text) } // Or get the complete text const fullText = await stream.text console.log(fullText) ``` ### 構造化出力のストリーミング ```typescript const stream = await agent.stream('Generate user data', { structuredOutput: { schema: z.object({ name: z.string(), age: z.number(), email: z.string(), }), }, }) // Stream partial objects for await (const partial of stream.objectStream) { console.log('Progress:', partial) // { name: "John" }, { name: "John", age: 30 }, ... } // Get final validated object const user = await stream.object console.log('Final:', user) // { name: "John", age: 30, email: "john@example.com" } ``` ````text ### Tool Calls and Results ```typescript const stream = await agent.stream("What's the weather in NYC?", { tools: { weather: weatherTool } }); // Monitor tool calls const toolCalls = await stream.toolCalls; const toolResults = await stream.toolResults; console.log("Tools called:", toolCalls); console.log("Results:", toolResults); ```` ### Complete Output Access ```typescript const stream = await agent.stream('Analyze this data') const output = await stream.getFullOutput() console.log({ text: output.text, usage: output.usage, reasoning: output.reasoning, finishReason: output.finishReason, }) ``` ### Full Stream Processing ```typescript const stream = await agent.stream('Complex task') for await (const chunk of stream.fullStream) { switch (chunk.type) { case 'text-delta': process.stdout.write(chunk.payload.text) break case 'tool-call': console.log(`Calling ${chunk.payload.toolName}...`) break case 'reasoning-delta': console.log(`Reasoning: ${chunk.payload.text}`) break case 'finish': console.log(`Done! Reason: ${chunk.payload.stepResult.reason}`) // Access response messages with any metadata added by output processors const uiMessages = chunk.payload.response?.uiMessages if (uiMessages) { console.log('Response messages:', uiMessages) } break } } ``` ### Error handling ```typescript const stream = await agent.stream('Analyze this data') try { // Option 1: Handle errors in consumeStream await stream.consumeStream({ onError: error => { console.error('Stream error:', error) }, }) const result = await stream.text } catch (error) { console.error('Failed to get result:', error) } // Option 2: Check error property const result = await stream.getFullOutput() if (stream.error) { console.error('Stream had errors:', stream.error) } ``` ## 関連する型 - [.stream()](https://mastra.zisheng.pro/ja/reference/streaming/agents/stream):MastraModelOutput を返すメソッド - [ChunkType](https://mastra.zisheng.pro/ja/reference/streaming/ChunkType):完全なストリームで使用可能なすべてのチャンク型