introduce FrameProcessor single async push frame task
Pipecat has a pipeline-based architecture. The pipeline consists of frame processors linked to each other. The elements travelling across the pipeline are called frames. To have a deterministic behavior the frames travelling through the pipeline are awlays ordered, except system frames which are out-of-band frames. To achieve ordering each frame processor only outputs frames from a single task. This single task is internally created in each FrameProcessor and the developer doesn't need to know much about it, except conceptually. Having a single output task avoids problems such as audio overlapping.
This commit is contained in:
@@ -70,7 +70,7 @@ async def main():
|
||||
async def user_idle_callback(user_idle: UserIdleProcessor):
|
||||
messages.append(
|
||||
{"role": "system", "content": "Ask the user if they are still there and try to prompt for some input, but be short."})
|
||||
await user_idle.queue_frame(LLMMessagesFrame(messages))
|
||||
await user_idle.push_frame(LLMMessagesFrame(messages))
|
||||
|
||||
user_idle = UserIdleProcessor(callback=user_idle_callback, timeout=5.0)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user