Mark Backman
1d85aedcae
Split features/ into audio/, observability/, and rag/ subfolders
...
Extract focused example groups from the catch-all features/ folder:
- audio/: audio recording, background sound, sound effects
- observability/: observer, heartbeats, sentry metrics
- rag/: mem0, gemini-rag, gemini grounding metadata
Update README to document the new folders.
2026-03-31 13:15:06 -04:00
Mark Backman
e719cbbe6d
Reorganize examples into topic-based subfolders
...
Move 304 examples from a flat numbered directory into 14 descriptive
subfolders: getting-started, services (speech + function-calling),
transcription, vision, realtime, persistent-context,
context-summarization, update-settings (stt/tts/llm), turn-management,
thinking-and-mcp, transports, video-avatar, video-processing, and
features.
Strip numbered prefixes from filenames (e.g. 07c-interruptible-deepgram.py
becomes services/speech/deepgram.py) since the folder context makes them
redundant. Keep numbered prefixes only in getting-started/ where ordering
matters.
Update eval script paths and README to match the new structure.
2026-03-31 13:12:24 -04:00
Mark Backman
f2ce7ececc
Move foundational examples to examples/
2026-03-31 13:12:24 -04:00
kompfner
bd7496fa27
Merge pull request #4211 from pipecat-ai/pk/openai-responses-websocket-service-refactor
...
Introduce WebsocketLLMService and refactor OpenAIResponsesLLMService …
2026-03-31 13:02:45 -04:00
Paul Kompfner
0a8bcf58c4
Register on_connection_error event handler in WebsocketLLMService
2026-03-31 10:52:33 -04:00
Paul Kompfner
0fb45c6114
Guard _drain_cancelled_response against None websocket
2026-03-31 10:32:47 -04:00
Paul Kompfner
657a5def57
Use consistent 'inference' terminology in error messages
2026-03-31 10:17:29 -04:00
Paul Kompfner
30903042e5
Work around OpenAI Python SDK temperature bug in example
2026-03-31 10:16:30 -04:00
Paul Kompfner
f2b3f87661
Clarify discrete vs continuous contrast in WebsocketLLMService docstring
2026-03-30 23:46:23 -04:00
Paul Kompfner
77cfb181f6
Clarify per-inference helper usage in WebsocketLLMService docstring
2026-03-30 23:25:56 -04:00
Paul Kompfner
0b256936c6
Add ConnectionClosed to _receive_response_events raises docstring
2026-03-30 23:14:45 -04:00
Paul Kompfner
3922963c7a
Extract helpers in _process_context to reduce repeated code
2026-03-30 23:10:38 -04:00
Paul Kompfner
ab9f2a35b6
Clean up TTFB metrics and previous_response state on inference failure
2026-03-30 23:04:06 -04:00
Paul Kompfner
f19d1183d8
Clean up TTFB metrics and previous_response state on retry failure
2026-03-30 23:00:22 -04:00
Paul Kompfner
9ad4fe6344
Use concrete inference language instead of abstract transaction terminology
2026-03-30 22:42:40 -04:00
Paul Kompfner
04882f6f2a
Simplify _connect_websocket guard and remove unused State import
2026-03-30 22:32:08 -04:00
Paul Kompfner
712e42533d
Introduce WebsocketLLMService and refactor OpenAIResponsesLLMService to use it
...
Add WebsocketLLMService as a base class for WebSocket-based LLM services,
parallel to WebsocketTTSService/WebsocketSTTService but codifying a
transactional request-response model rather than a continuous background
receive loop.
WebsocketLLMService provides:
- Connection lifecycle (start/stop/cancel → connect/disconnect)
- _ws_send/_ws_recv with transparent ConnectionClosed handling
(auto-reconnect via exponential backoff → WebsocketReconnectedError)
- _ensure_connected with retry via _try_reconnect
OpenAIResponsesLLMService now inherits from WebsocketLLMService, removing
duplicated connection management code (_connect, _disconnect, _reconnect,
_ensure_connected, _ws_send, start, stop, cancel) and simplifying
_process_context from a loop with attempt tracking to a flat try/except
with a single retry.
2026-03-30 22:26:31 -04:00
Mark Backman
248e0a4c90
Merge pull request #4207 from pipecat-ai/mb/remove-krisp
...
Remove docs uses of krisp optional dependency
2026-03-30 19:54:14 -04:00
Mark Backman
89dcd57577
Remove docs uses of krisp optional dependency
2026-03-30 19:50:40 -04:00
Mark Backman
32022a952e
Merge pull request #4205 from pipecat-ai/mb/remove-quickstart
...
Remove quickstart example from repo
2026-03-30 18:58:49 -04:00
Aleix Conchillo Flaqué
65d9fcc315
Merge pull request #4204 from pipecat-ai/aleix/remove-some-deprecations
...
Remove deprecated APIs and modules
2026-03-30 15:32:53 -07:00
Mark Backman
b78ae40d3c
Remove quickstart example from repo
2026-03-30 18:20:41 -04:00
Aleix Conchillo Flaqué
ece4d0661e
update uv.lock
2026-03-30 15:06:05 -07:00
Aleix Conchillo Flaqué
82a852c1ff
Add changelog for #4204
2026-03-30 15:06:05 -07:00
Aleix Conchillo Flaqué
5be1b9c8cb
LLMService: remove deprecated request_image_frame()
2026-03-30 15:06:05 -07:00
Aleix Conchillo Flaqué
7913d4e188
FrameProcessor: remove deprecated wait_for_task()
2026-03-30 14:45:42 -07:00
Aleix Conchillo Flaqué
c8dd7c2b57
rtvi: remove old deprecations
2026-03-30 14:44:32 -07:00
Aleix Conchillo Flaqué
77e5f4acc1
runner(daily): remove deprecated configure_with_args()
2026-03-30 14:31:39 -07:00
Aleix Conchillo Flaqué
be8d4dfd87
TTSService: remove deprecated say() function
2026-03-30 14:29:30 -07:00
Aleix Conchillo Flaqué
bb2c60a998
transports: remove deprecated vad_enabled and vad_audio_passthrough
2026-03-30 14:28:34 -07:00
Aleix Conchillo Flaqué
7c644ed810
RTVIObserver: remove deprecated errors_enabled
2026-03-30 14:26:53 -07:00
Aleix Conchillo Flaqué
96ceec2a43
transports: remove deprecated camera_in_* and camera_out_* params
2026-03-30 14:24:40 -07:00
Aleix Conchillo Flaqué
d249473f0b
AudioBufferProcessor: remove deprecated user_continuous_stream
2026-03-30 14:22:21 -07:00
Aleix Conchillo Flaqué
1da2018c85
PipelineTask: remove deprecated on_pipeline_ended/cancelled/stopped
2026-03-30 14:20:45 -07:00
Aleix Conchillo Flaqué
af126ec7cf
PipelineParams: remove deprecated observers field
2026-03-30 14:18:07 -07:00
Aleix Conchillo Flaqué
340e58bf5c
LLMService: remove old function call single argument
2026-03-30 14:16:18 -07:00
Aleix Conchillo Flaqué
7873159d0f
LLMService: remove start_callback
2026-03-30 14:13:23 -07:00
Aleix Conchillo Flaqué
c783101741
frames: remove deprecated interruption frames
2026-03-30 14:08:42 -07:00
Aleix Conchillo Flaqué
73b8bbf963
frames: remove deprecated transport frames
2026-03-30 14:08:24 -07:00
Aleix Conchillo Flaqué
ebbe5acc8f
frames: remove deprecated KeypadEntryFrame
2026-03-30 14:07:54 -07:00
Aleix Conchillo Flaqué
dd1bea2a5f
audio(turn): remove FalSmartTurnAnalyzer and LocalSmartTurnAnalyzer
2026-03-30 14:04:29 -07:00
Aleix Conchillo Flaqué
136e6a58be
audio(utils): remove create_default_resampler
2026-03-30 14:02:13 -07:00
Aleix Conchillo Flaqué
f0d04dde1c
audio(filters): remove KrispFilter
2026-03-30 14:01:06 -07:00
Aleix Conchillo Flaqué
742a278c05
audio(filters): remove NoisereduceFilter
2026-03-30 13:58:35 -07:00
Aleix Conchillo Flaqué
b16befc9e9
transports(daily): remove deprecated frames
2026-03-30 13:56:25 -07:00
kompfner
0c11eb6fd0
Merge pull request #4141 from pipecat-ai/pk/openai-responses-websocket-service
...
feat: add WebSocket-based OpenAI Responses LLM service
2026-03-30 15:25:32 -04:00
Paul Kompfner
0efef19d60
Fix code review issues in WebSocket Responses service
...
- Use finally block in _disconnect to ensure state is always cleaned
up, even if websocket.close() throws — prevents stale cancellation
state (e.g. _cancel_pending_response) from polluting a new connection
- Catch ConnectionClosed in _drain_cancelled_response alongside
TimeoutError — prevents _needs_drain from staying True and bricking
the service on every subsequent inference attempt
- Fall back to OPENAI_API_KEY env var when api_key is not passed,
since the WebSocket connection uses raw websockets (not the
AsyncOpenAI client which handles this automatically)
- Use _clear_cancellation_state() instead of piecemeal resets where
appropriate
2026-03-30 10:54:47 -04:00
Mark Backman
87b8f38a48
Merge pull request #4198 from pipecat-ai/mb/readme-update-2026-03-30
...
Add missing services to README available services table
2026-03-30 10:46:52 -04:00
Mark Backman
e1a3ddbb57
Add missing services to README available services table
...
Adds Kokoro (TTS), LiveKit and WhatsApp (Transport), Genesys
(Serializers), and Krisp Viva and RNNoise (Audio Processing).
2026-03-30 10:06:14 -04:00
Paul Kompfner
b5683556d4
Remove duplicate entries in run-release-evals.py, which appeared after a rebase
2026-03-30 10:03:43 -04:00