> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ja/llms.txt # Memory.summarizeThread() `.summarizeThread()` メソッドは、スレッドの会話を一度の呼び出しで要約します。ストレージからスレッドのメッセージを読み込み、[Observational Memory](https://mastra.zisheng.pro/ja/reference/memory/observational-memory) を支えるものと同じ Observer の仕組みで要約します。これは、Agent に Observational Memory を関連付けずに使えるスタンドアロン呼び出しです。 メッセージは新しいものからページ単位で読み込まれ、`lastMessages` と `maxInputTokens` によって上限が設定されます。そのため、長いスレッドを要約するときも、履歴全体をストレージから読み込むことはありません。 Memory には何も書き戻されません。要約と抽出された値は、呼び出し元(および各 Extractor の `onExtracted` Hook)へ返されるため、独自のデータベースなど、保存先を自分で決められます。 セッション終了時に、通話終了時の音声通話など、会話全体の要約または構造化された抽出結果が必要な場合に使います。メッセージがすでに手元にある場合(スレッドから読み込まない場合)は、代わりにスタンドアロンの [`summarizeConversation()`](https://mastra.zisheng.pro/ja/reference/memory/summarizeConversation) 関数を使います。この関数は `threadId` の代わりに `messages` を指定し、それ以外は同じオプションを受け取ります。 ## 使用例 ```typescript const result = await memory.summarizeThread({ model: 'openai/gpt-5-mini', threadId: 'thread-123', instructions: 'Summarize this voicemail call for the business owner.', }) ``` ## パラメータ **threadId** (`string`): 要約するスレッドの一意な識別子。 **model** (`string | LanguageModel | DynamicModel`): 要約を実行するモデル。'\_\_GATEWAY\_OPENAI\_MODEL\_MINI\_\_' のようなルーター文字列などを指定します。 **resourceId** (`string`): スレッドを所有するリソースの ID。指定すると、スレッドの所有権を検証します。Extractor の Context にも渡されます。 **lastMessages** (`number`): スレッドの最後の N 件のメッセージだけを要約します。デフォルトではスレッド全体が読み込まれますが、maxInputTokens によって上限が設定されます。 **maxInputTokens** (`number`): 収集したメッセージがこの推定 Token 数を超えた時点で、古いメッセージの読み込みを停止します。最新のメッセージは必ず含まれます。 (Default: `1000000`) **instructions** (`string`): 要約対象の重点や要約の対象読者など、Summarizer のシステムプロンプトに追加する指示。 **extract** (`Extractor[]`): 会話に対して実行する Extractor。Zod スキーマを持つ Extractor は、後続の構造化出力呼び出しとして実行されます。スキーマのない Extractor はインラインで抽出されます。各 Extractor の onExtracted Hook は、抽出された値を受け取って実行されます。 **requestContext** (`RequestContext`): Summarizer モデルと Extractor Hook に転送する Request Context。 **abortSignal** (`AbortSignal`): 要約呼び出しをキャンセルするための Signal。 ## 戻り値 **summary** (`string`): 会話から抽出・集約された観察結果。情報量の多い箇条書き形式で返されます。 **extracted** (`Record`): extract の Extractor が生成した値。Extractor の slug をキーとします。 **extractionFailures** (`{ slug: string; error: string }[]`): 有効な値を生成できなかった Extractor とその理由。1 つ以上の Extractor が失敗した場合にのみ存在します。 **usage** (`{ inputTokens?: number; outputTokens?: number; totalTokens?: number }`): 要約呼び出しの Token 使用量。 ## 詳細な使用例 次の例では、終了した音声通話を要約し、構造化レコードをアプリケーション独自のデータベースへ保存します。 ```typescript import { Extractor } from '@mastra/memory' import { z } from 'zod' import { memory } from './mastra/memory' import { callRecords } from './db' const callSummary = new Extractor({ name: 'call-summary', instructions: 'Return a concise summary of the call.', schema: z.object({ summary: z.string(), sentiment: z.enum(['positive', 'neutral', 'negative']), requestedServices: z.array(z.string()), }), metadataKeyPath: false, // don't persist into memory metadata — the hook owns storage onExtracted: async ({ current, threadId, resourceId }) => { await callRecords.upsert({ callId: threadId, callerId: resourceId, record: current }) }, }) export async function onCallEnd(threadId: string, resourceId: string) { await memory.summarizeThread({ model: 'openai/gpt-5-mini', threadId, resourceId, instructions: 'Summarize this voicemail call for the business owner.', extract: [callSummary], }) } ``` ### 関連項目 - [summarizeConversation()](https://mastra.zisheng.pro/ja/reference/memory/summarizeConversation) - [Memory クラスのリファレンス](https://mastra.zisheng.pro/ja/reference/memory/memory-class) - [Observational Memory](https://mastra.zisheng.pro/ja/reference/memory/observational-memory) - [.recall()](https://mastra.zisheng.pro/ja/reference/memory/recall)