Added a new LLMAssistantPushAggregationFrame control frame that signals LLMAssistantAggregator to immediately flush its text buffer to the conversation context
This commit is contained in:
@@ -1990,6 +1990,16 @@ class LLMFullResponseEndFrame(ControlFrame):
|
|||||||
self.skip_tts = None
|
self.skip_tts = None
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass
|
||||||
|
class LLMAssistantPushAggregationFrame(ControlFrame):
|
||||||
|
"""Frame that forces the LLM assistant aggregator to push its current aggregation to context.
|
||||||
|
|
||||||
|
When received by ``LLMAssistantAggregator``, any text that has been accumulated
|
||||||
|
in the aggregation buffer is immediately committed to the conversation context as
|
||||||
|
an assistant message, without waiting for an ``LLMFullResponseEndFrame``.
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
@dataclass
|
@dataclass
|
||||||
class LLMContextSummaryRequestFrame(ControlFrame):
|
class LLMContextSummaryRequestFrame(ControlFrame):
|
||||||
"""Frame requesting context summarization from an LLM service.
|
"""Frame requesting context summarization from an LLM service.
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ from pipecat.frames.frames import (
|
|||||||
InputAudioRawFrame,
|
InputAudioRawFrame,
|
||||||
InterimTranscriptionFrame,
|
InterimTranscriptionFrame,
|
||||||
InterruptionFrame,
|
InterruptionFrame,
|
||||||
|
LLMAssistantPushAggregationFrame,
|
||||||
LLMContextAssistantTimestampFrame,
|
LLMContextAssistantTimestampFrame,
|
||||||
LLMContextFrame,
|
LLMContextFrame,
|
||||||
LLMContextSummaryRequestFrame,
|
LLMContextSummaryRequestFrame,
|
||||||
@@ -879,6 +880,8 @@ class LLMAssistantAggregator(LLMContextAggregator):
|
|||||||
elif isinstance(frame, (EndFrame, CancelFrame)):
|
elif isinstance(frame, (EndFrame, CancelFrame)):
|
||||||
await self._handle_end_or_cancel(frame)
|
await self._handle_end_or_cancel(frame)
|
||||||
await self.push_frame(frame, direction)
|
await self.push_frame(frame, direction)
|
||||||
|
elif isinstance(frame, LLMAssistantPushAggregationFrame):
|
||||||
|
await self.push_aggregation()
|
||||||
elif isinstance(frame, LLMFullResponseStartFrame):
|
elif isinstance(frame, LLMFullResponseStartFrame):
|
||||||
await self._handle_llm_start(frame)
|
await self._handle_llm_start(frame)
|
||||||
elif isinstance(frame, LLMFullResponseEndFrame):
|
elif isinstance(frame, LLMFullResponseEndFrame):
|
||||||
|
|||||||
Reference in New Issue
Block a user