fix text input no context update

This commit is contained in:
Xin Wang
2026-05-22 21:30:54 +08:00
parent 7267c06552
commit 1ffc716575
2 changed files with 41 additions and 11 deletions

View File

@@ -14,7 +14,6 @@ from pipecat.pipeline.runner import PipelineRunner
from pipecat.pipeline.task import PipelineParams, PipelineTask
from pipecat.processors.aggregators.llm_context import LLMContext
from pipecat.processors.aggregators.llm_response_universal import (
AssistantTurnStoppedMessage,
LLMContextAggregatorPair,
LLMUserAggregatorParams,
UserTurnStoppedMessage,
@@ -34,7 +33,7 @@ from .config import EngineConfig
from .product_protocol import ProductWebsocketSerializer
from .services import create_llm_service, create_stt_service, create_tts_service
from .text_input import ProductTextInputProcessor
from .text_stream import ProductTextStreamProcessor
from .text_stream import ProductAssistantTurnStoppedMessage, ProductTextStreamProcessor
from .transcript_stream import ProductTranscriptStreamProcessor
from .turn_start import InterruptionGateUserTurnStartStrategy
@@ -118,13 +117,14 @@ async def run_pipeline_with_serializer(
),
],
)
user_aggregator, assistant_aggregator = LLMContextAggregatorPair(
user_aggregator, _ = LLMContextAggregatorPair(
context,
user_params=LLMUserAggregatorParams(
vad_analyzer=SileroVADAnalyzer(params=vad_params),
user_turn_strategies=user_turn_strategies,
),
)
text_stream = ProductTextStreamProcessor(context)
pipeline = Pipeline(
[
@@ -134,10 +134,9 @@ async def run_pipeline_with_serializer(
ProductTranscriptStreamProcessor(),
user_aggregator,
llm,
ProductTextStreamProcessor(),
text_stream,
tts,
transport.output(),
assistant_aggregator,
]
)
@@ -188,11 +187,10 @@ async def run_pipeline_with_serializer(
)
)
# NOTE: assistant turn started/final events are emitted by
# ProductTextStreamProcessor, upstream of TTS, so text streams to the
# client ahead of audio. This logger is kept for server-side visibility.
@assistant_aggregator.event_handler("on_assistant_turn_stopped")
async def on_assistant_turn_stopped(_aggregator, message: AssistantTurnStoppedMessage):
@text_stream.event_handler("on_assistant_turn_stopped")
async def on_assistant_turn_stopped(
_aggregator, message: ProductAssistantTurnStoppedMessage
):
logger.info(f"Assistant: {message.content}")
runner = PipelineRunner(handle_sigint=False)