Agent.streamUntilIdle()
추가된 항목: @mastra/core@1.29.0
:::warning[사용되지 않음]
streamUntilIdle()은 더 이상 사용되지 않습니다. 대신 untilIdle 옵션과 함께 stream()을 사용하세요.
const result = await agent.stream('Research solana for me', {
untilIdle: true,
memory: { thread: 't1', resource: 'u1' },
})
유휴 시간 제한을 구성하려면 untilIdle: { maxIdleMs: 60_000 }을 전달하세요.
:::
streamUntilIdle()Agent의 응답을 스트리밍하고 실행 중에 전달된 모든 백그라운드 작업이 완료될 때까지 스트림을 열어 둡니다. 작업이 완료되면 해당 결과가 Memory에 기록되고 LLM이 이에 반응할 수 있도록 Agent 루프가 자동으로 다시 시작됩니다. 실행 중인 작업이 없고 대기 중인 완료가 없으면 스트림이 닫힙니다.
Agent가 백그라운드 작업(일반적으로 장기 실행 Tool 또는 하위 Agent)을 디스패치하고 초기 응답과 작업 완료로 트리거되는 모든 후속 실행을 아우르는 단일 스트림이 필요할 때 사용합니다. 포그라운드 전용 실행이나 후속 실행을 수동으로 관리하려는 경우(결과를 처리하도록 Agent에 수동으로 Prompt 제공)에는 Agent.stream()을 사용하세요.
사용예사용예에 대한 직접 링크
const stream = await agent.streamUntilIdle('Research solana for me', {
memory: { thread: 't1', resource: 'u1' },
})
for await (const chunk of stream.fullStream) {
// chunks from the initial turn AND any continuation turns triggered by
// background task completions flow through here
}
streamUntilIdle()에는 BackgroundTaskManager와 Memory 백엔드가 모두 필요합니다. 둘 중 하나라도 없으면 일반 agent.stream() 호출을 사용합니다.
매개변수매개변수에 대한 직접 링크
messages:
options?:
maxIdleMs?:
memory?:
structuredOutput?:
그 밖의 모든 옵션(maxSteps, modelSettings, toolChoice, outputProcessors, onFinish, onChunk 등)은 Agent.stream() 매개변수를 참조하세요. streamUntilIdle()은 이를 초기 턴에 전달합니다.
보고보고에 대한 직접 링크
stream:
집계 속성에 대한 주의 사항집계 속성에 대한 주의 사항에 대한 직접 링크
streamUntilIdle()은 첫 번째 턴의 MastraModelOutput을 프록시하는 값을 반환합니다. fullStream만 모든 후속 실행을 아우르는 결합 스트림으로 대체됩니다. 그 밖의 모든 속성(text, toolCalls, toolResults, finishReason, messageList, getFullOutput())은 첫 번째 턴의 내부 버퍼에 대해서만 이행됩니다.
모든 후속 실행에 대한 집계 보기가 필요하면 fullStream을 직접 소비하고 누적하세요.
계속 행동계속 행동에 대한 직접 링크
내부적으로는streamUntilIdle():
agent.stream(...)을 통해 초기 턴을 실행하고 해당fullStream을 외부 스트림으로 파이프합니다.- 확인된 Memory 범위의 백그라운드 작업 완료 이벤트를 구독합니다.
- 각 터미널 이벤트(
background-task-completed,background-task-failed,background-task-cancelled)를 큐에 넣고, 외부 래퍼가 턴 사이에서 유휴 상태가 되면 완료된toolCallId목록을 담은 지시문과 함께agent.stream([], ...)을 다시 호출합니다. 후속 턴은 동일한 외부 스트림으로 흐릅니다. - 실행 중인 작업도 대기 중인 완료 이벤트도 없으면 외부 스트림을 닫습니다.
확장된 사용 예확장된 사용 예에 대한 직접 링크
턴 사이의 유휴 시간 제한턴 사이의 유휴 시간 제한에 대한 직접 링크
const stream = await agent.streamUntilIdle('Kick off the long jobs', {
memory: { thread: 't1', resource: 'u1' },
maxIdleMs: 60_000, // close the stream after 1 minute of idleness between turns
})
for await (const chunk of stream.fullStream) {
if (chunk.type === 'background-task-completed') {
console.log('Task complete:', chunk.payload.taskId)
}
}
연속된 내용 전체에서 텍스트 집계연속된 내용 전체에서 텍스트 집계에 대한 직접 링크
const stream = await agent.streamUntilIdle('Research and summarize', {
memory: { thread: 't1', resource: 'u1' },
})
let fullText = ''
for await (const chunk of stream.fullStream) {
if (chunk.type === 'text-delta') {
fullText += chunk.payload.text
}
}