Skip to Content

stream()

stream() メソッドは、エージェントからの応答をリアルタイムでストリーミングすることを可能にします。このメソッドは、generate() と同様に、messages とオプションの options オブジェクトをパラメータとして受け取ります。

パラメータ

messages

messagesパラメータは以下のいずれかです:

  • 単一の文字列
  • 文字列の配列
  • rolecontentプロパティを持つメッセージオブジェクトの配列

メッセージオブジェクトの構造:

interface Message { role: 'system' | 'user' | 'assistant'; content: string; }

options (オプション)

出力構造、メモリ管理、ツールの使用、テレメトリなどの設定を含むオプションのオブジェクトです。

abortSignal?:

AbortSignal
エージェントの実行を中止できる信号オブジェクト。信号が中止されると、進行中のすべての操作が終了します。

context?:

CoreMessage[]
エージェントに提供する追加のコンテキストメッセージ。

experimental_output?:

Zod schema | JsonSchema7
テキスト生成とツール呼び出しと共に構造化された出力生成を有効にします。モデルは提供されたスキーマに準拠したレスポンスを生成します。

instructions?:

string
この特定の生成のためにエージェントのデフォルト指示を上書きするカスタム指示。新しいエージェントインスタンスを作成せずに動的にエージェントの動作を変更するのに役立ちます。

maxSteps?:

number
= 5
ストリーミング中に許可される最大ステップ数。

maxRetries?:

number
= 2
最大リトライ回数。リトライを無効にするには0に設定します。

memoryOptions?:

MemoryConfig
メモリ管理の設定オプション。詳細は以下のMemoryConfigセクションを参照してください。

onFinish?:

StreamTextOnFinishCallback | StreamObjectOnFinishCallback
ストリーミングが完了したときに呼び出されるコールバック関数。

onStepFinish?:

GenerateTextOnStepFinishCallback<any> | never
ストリーミング中の各ステップ後に呼び出されるコールバック関数。構造化出力では利用できません。

output?:

Zod schema | JsonSchema7
出力の予想される構造を定義します。JSONスキーマオブジェクトまたはZodスキーマを指定できます。

resourceId?:

string
エージェントと対話するユーザーまたはリソースの識別子。threadIdが提供される場合は必須です。

telemetry?:

TelemetrySettings
ストリーミング中のテレメトリ収集の設定。詳細は以下のTelemetrySettingsセクションを参照してください。

temperature?:

number
モデルの出力のランダム性を制御します。高い値(例:0.8)は出力をよりランダムにし、低い値(例:0.2)はより焦点を絞った決定論的な出力にします。

threadId?:

string
会話スレッドの識別子。複数のやり取りにわたってコンテキストを維持できます。resourceIdが提供される場合は必須です。

toolChoice?:

'auto' | 'none' | 'required' | { type: 'tool'; toolName: string }
= 'auto'
ストリーミング中にエージェントがツールをどのように使用するかを制御します。

toolsets?:

ToolsetsInput
このストリーム中にエージェントが利用できるようにする追加のツールセット。

MemoryConfig

メモリ管理の設定オプション:

lastMessages?:

number | false
コンテキストに含める最新メッセージの数。falseに設定すると無効になります。

semanticRecall?:

boolean | object
セマンティックメモリリコールの設定。ブール値または詳細な設定が可能です。
number

topK?:

number
取得する意味的に最も類似したメッセージの数。
number | object

messageRange?:

number | { before: number; after: number }
セマンティック検索の対象とするメッセージの範囲。単一の数値または前後の設定が可能です。

workingMemory?:

object
ワーキングメモリの設定。
boolean

enabled?:

boolean
ワーキングメモリを有効にするかどうか。
string

template?:

string
ワーキングメモリに使用するテンプレート。
'text-stream' | 'tool-call'

type?:

'text-stream' | 'tool-call'
ワーキングメモリに使用するコンテンツのタイプ。

threads?:

object
スレッド固有のメモリ設定。
boolean

generateTitle?:

boolean
新しいスレッドのタイトルを自動生成するかどうか。

TelemetrySettings

ストリーミング中のテレメトリ収集の設定:

isEnabled?:

boolean
= false
テレメトリを有効または無効にします。実験的な機能のため、デフォルトでは無効になっています。

recordInputs?:

boolean
= true
入力の記録を有効または無効にします。機密情報の記録を避けたり、データ転送を減らしたり、パフォーマンスを向上させたりするために無効にすることもできます。

recordOutputs?:

boolean
= true
出力の記録を有効または無効にします。機密情報の記録を避けたり、データ転送を減らしたり、パフォーマンスを向上させたりするために無効にすることもできます。

functionId?:

string
この関数の識別子。テレメトリデータを関数ごとにグループ化するために使用されます。

metadata?:

Record<string, AttributeValue>
テレメトリデータに含める追加情報。AttributeValueは文字列、数値、ブール値、これらの型の配列、またはnullにすることができます。

tracer?:

Tracer
テレメトリデータに使用するカスタムOpenTelemetryトレーサーインスタンス。詳細はOpenTelemetryのドキュメントを参照してください。

戻り値

stream() メソッドの戻り値は、提供されたオプション、特に output オプションによって異なります。

戻り値のプロパティテーブル

textStream?:

AsyncIterable<string>
テキストチャンクのストリーム。output が 'text' の場合(スキーマが提供されていない)または `experimental_output` を使用する場合に存在します。

objectStream?:

AsyncIterable<object>
構造化データのストリーム。スキーマを持つ `output` オプションを使用する場合にのみ存在します。

partialObjectStream?:

AsyncIterable<object>
構造化データのストリーム。`experimental_output` オプションを使用する場合にのみ存在します。

object?:

Promise<object>
最終的な構造化出力に解決されるプロミス。`output` または `experimental_output` オプションを使用する場合に存在します。

基本的なテキストストリーミング

const stream = await myAgent.stream([ { role: "user", content: "Tell me a story." } ]); for await (const chunk of stream.textStream) { process.stdout.write(chunk); }

スレッドコンテキストを使用した構造化出力ストリーミング

const schema = { type: 'object', properties: { summary: { type: 'string' }, nextSteps: { type: 'array', items: { type: 'string' } } }, required: ['summary', 'nextSteps'] }; const response = await myAgent.stream( "What should we do next?", { output: schema, threadId: "project-123", onFinish: text => console.log("Finished:", text) } ); for await (const chunk of response.textStream) { console.log(chunk); } const result = await response.object; console.log("Final structured result:", result);

Agentのstream()とLLMのstream()の主な違いは、AgentはthreadIdを通じて会話のコンテキストを維持し、ツールにアクセスでき、エージェントのメモリシステムと統合できることです。