Commit Graph

8770 Commits

Author SHA1 Message Date
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