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.
* processors(rtvi): rtvi 0.1 message protocol
* added a single function call handler
* wip - function calling
* fixup
* fixup
* fixup
* processors(rtvi): no need for configure_on_start()
* processors(rtvi): add new option values if they haven't been set yet
* Add the model name to the LLM usage metrics
* wip - anthropic tool calling
* still wip - anthropic tool use and vision
* anthropic tools and vision working
* anthropic tool calling and vision
* Cartesia error handling
* Anthropic tool use core Pipecat pieces refactored as per plan
* aleix has good ideas
* Usage metrics for Anthropic LLMs
* fix function call result state not getting cleared bug
* Pass **kwargs through from AnthropicLLMService constructor
* about to tinker with anthropic
* added openai function calling
* openai function calling
* fixup
---------
Co-authored-by: Aleix Conchillo Flaqué <aleix@daily.co>
Co-authored-by: Chad Bailey <chadbailey@gmail.com>
Co-authored-by: mattie ruth backman <mattieruth@gmail.com>
Co-authored-by: chadbailey59 <chadbailey59@users.noreply.github.com>
created twilio_websocket_service.py, TwilioFrameSerializer.py
moved pcm_16000_to_ulaw_8000 and ulaw_8000_to_pcm_16000 to src/pipecat/utils/audio.py
fixed callback on disconnect