跳到主要内容

Agent.streamLegacy()(旧版)

注意

已弃用:此方法已弃用,并且只适用于 V1 模型。V2 模型请改用新的 .stream() 方法。升级详情请参阅迁移指南

.streamLegacy() 是旧版 Agent Stream API,用于即时Stream V1 模型 Agent 的回应。此方法接受讯息及选用的Stream选项。

使用范例
使用范例的直接链接

await agent.streamLegacy('message for agent')

参数
参数的直接链接

messages:

string | string[] | CoreMessage[] | AiMessageType[] | UIMessageWithMetadata[]
要传送给 Agent 的讯息。可以是单一字符串、字符串阵列或结构化讯息对象。

options?:

AgentStreamOptions<OUTPUT, EXPERIMENTAL_OUTPUT>
Stream处理进程的选用设定。
AgentStreamOptions

abortSignal?:

AbortSignal
可让你中止 Agent 执行的讯号对象。讯号中止后,所有进行中的操作都会终止。

context?:

CoreMessage[]
提供给 Agent 的额外内容脉络讯息。

experimental_output?:

Zod schema | JsonSchema7
启用结构化输出,并同时产生文本及进行 Tool 调用。模型产生的回应会符合所提供的 schema。

instructions?:

string
自订指示,覆盖 Agent 针对这次产生作业使用的预设指示。适合用于动态修改 Agent 行为,而毋须创建新的 Agent 实例。

output?:

Zod schema | JsonSchema7
定义预期的输出结构。可以是 JSON Schema 对象或 Zod schema。

memory?:

object
记忆体设定。这是管理记忆体的建议方式。

thread:

string | { id: string; metadata?: Record<string, any>, title?: string }
对话 thread,可以是字符串 ID,或包含 id 及选用 metadata 的对象。

resource:

string
与 thread 关联的用户或资源标识符。

options?:

MemoryConfig
记忆体行为的设定,例如讯息记录及语意回忆。

maxSteps?:

number
允许的最大执行步骤数。

maxRetries?:

number
最大重试次数。设为 0 可停用重试。

memoryOptions?:

MemoryConfig
**已弃用。** 请改用 memory.options。记忆体管理的设定选项。

lastMessages?:

number | false
要加入内容脉络的近期讯息数量;设为 false 可停用。

semanticRecall?:

boolean | { topK: number; messageRange: number | { before: number; after: number }; scope?: 'thread' | 'resource' }
启用语意回忆以寻找相关的过往讯息。可以是布尔值或详细设定。

workingMemory?:

WorkingMemory
工作记忆功能的设定。

threads?:

{ generateTitle?: boolean | { model: DynamicArgument<MastraLanguageModel>; instructions?: DynamicArgument<string> } }
Thread 专用设定,包括自动产生标题。

onFinish?:

StreamTextOnFinishCallback<any> | StreamObjectOnFinishCallback<OUTPUT>
Stream完成时调用的回呼函数,会接收最终结果。

onStepFinish?:

StreamTextOnStepFinishCallback<any> | never
每个执行步骤完成后调用的回呼函数,会以 JSON 字符串接收步骤详情。不适用于结构化输出。

resourceId?:

string
**已弃用。** 请改用 memory.resource。与 Agent 互动的用户或资源标识符。如有提供 threadId,亦必须提供此值。

telemetry?:

TelemetrySettings
Stream期间收集遥测资料的设定。

isEnabled?:

boolean
启用或停用遥测。实验阶段预设为停用。

recordInputs?:

boolean
启用或停用输入记录。预设为启用;你可停用输入记录,以免记录敏感资料。

recordOutputs?:

boolean
启用或停用输出记录。预设为启用;你可停用输出记录,以免记录敏感资料。

functionId?:

string
此函数的标识符,用于按函数分组遥测资料。

temperature?:

number
控制模型输出的随机程度。较高的值(例如 0.8)令输出更随机;较低的值(例如 0.2)令输出更聚焦且更具确定性。

threadId?:

string
**已弃用。** 请改用 memory.thread。对话 thread 的标识符,可在多次互动之间保留内容脉络。如有提供 resourceId,亦必须提供此值。

toolChoice?:

'auto' | 'none' | 'required' | { type: 'tool'; toolName: string }
控制 Agent 在Stream期间如何使用 Tool。

'auto':

string
由模型决定是否使用 Tool(预设)。

'none':

string
不使用任何 Tool。

'required':

string
要求模型使用最少一个 Tool。

{ type: 'tool'; toolName: string }:

object
要求模型使用指定名称的 Tool。

toolsets?:

ToolsetsInput
Stream期间供 Agent 使用的额外 Toolset。

clientTools?:

ToolsInput
在请求的 'client' 端执行的 Tool。这些 Tool 的定义不包含 execute 函数。

hooks?:

ToolHooks
每次执行专用的 hook,会在 Tool 调用前后运行,并在这次执行中覆盖相符的 Agent 层级 hook。beforeToolCall 可传回 { proceed: false, output } 以略过 Tool 调用。

savePerStep?:

boolean
每个Stream步骤完成后逐步储存讯息(预设:false)。

providerOptions?:

Record<string, Record<string, JSONValue>>
传递至底层 LLM Provider 的额外 Provider 专用选项。结构为 { providerName: { optionKey: value } }。例如:{ openai: { reasoningEffort: 'high' }, anthropic: { maxTokens: 1000 } }

openai?:

Record<string, JSONValue>
OpenAI 专用选项。例如:{ reasoningEffort: 'high' }

anthropic?:

Record<string, JSONValue>
Anthropic 专用选项。例如:{ maxTokens: 1000 }

google?:

Record<string, JSONValue>
Google 专用选项。例如:{ safetySettings: [...] }

[providerName]?:

Record<string, JSONValue>
其他 Provider 专用选项。键是 Provider 名称,值是 Provider 专用选项的记录。

runId?:

string
这次产生作业的唯一 ID,适合用于追踪及除错。

requestContext?:

RequestContext
用于依赖注入及内容脉络资料的 Request Context。

maxTokens?:

number
要产生的最大 token 数量。

topP?:

number
内核取样。值介乎 0 至 1;建议设定 temperaturetopP 其中一项,而非同时设定两者。

topK?:

number
每个后续 token 只从排名最高的 K 个选项取样,用于排除属于「长尾」的低概率回应。

presencePenalty?:

number
存在惩罚设定,影响模型重复提示中既有资料的可能性。值介乎 -1(增加重复)至 1(最大惩罚,减少重复)。

frequencyPenalty?:

number
频率惩罚设定,影响模型重复使用相同字词或片语的可能性。值介乎 -1(增加重复)至 1(最大惩罚,减少重复)。

stopSequences?:

string[]
停止串行。如有设定,模型产生其中一个停止串行时便会停止产生文本。

seed?:

number
用于随机取样的种子(整数)。如有设定且模型支持,调用会产生确定性结果。

headers?:

Record<string, string | undefined>
随请求传送的额外 HTTP header。只适用于以 HTTP 为基础的 Provider。

传回值
传回值的直接链接

textStream?:

AsyncGenerator<string>
异步产生器,在文本区块可用时逐一产生。

fullStream?:

Promise<ReadableStream>
解析为完整回应 ReadableStream 的 Promise。

text?:

Promise<string>
解析为完整文本回应的 Promise。

usage?:

Promise<{ totalTokens: number; promptTokens: number; completionTokens: number }>
解析为 token 使用量资料的 Promise。

finishReason?:

Promise<string>
解析为Stream结束原因的 Promise。

toolCalls?:

Promise<Array<ToolCall>>
解析为Stream期间所作 Tool 调用的 Promise。

toolName:

string
所调用 Tool 的名称。

args:

any
传递给 Tool 的引数。

进阶使用范例
进阶使用范例的直接链接

await agent.streamLegacy('message for agent', {
temperature: 0.7,
maxSteps: 3,
memory: {
thread: 'user-123',
resource: 'test-app',
},
toolChoice: 'auto',
})

迁移至新 API
迁移至新 API的直接链接

信息

新的 .stream() 方法提供更强的功能,包括 AI SDK v5+ 兼容性、更完善的结构化输出处理,以及改良的回呼系统。详细迁移指示请参阅迁移指南

快速迁移范例
快速迁移范例的直接链接

迁移前(旧版)
迁移前(旧版)的直接链接

const result = await agent.streamLegacy('message', {
temperature: 0.7,
maxSteps: 3,
onFinish: result => console.log(result),
})

迁移后(新 API)
迁移后(新 API)的直接链接

const result = await agent.stream('message', {
modelSettings: {
temperature: 0.7,
},
maxSteps: 3,
onFinish: result => console.log(result),
})