From 610dc25fb16c3c87f93c817dd9819d11d8af11bc Mon Sep 17 00:00:00 2001 From: aconchillo <951761+aconchillo@users.noreply.github.com> Date: Wed, 11 Mar 2026 00:50:01 +0000 Subject: [PATCH] Update changelog for version 0.0.105 --- CHANGELOG.md | 265 +++++++++++++++++++++++++++++++++++ changelog/3804.added.md | 1 - changelog/3804.changed.md | 1 - changelog/3804.deprecated.md | 2 - changelog/3804.removed.md | 1 - changelog/3831.added.md | 1 - changelog/3831.changed.md | 1 - changelog/3848.changed.md | 1 - changelog/3848.fixed.md | 1 - changelog/3861.added.md | 1 - changelog/3861.changed.md | 1 - changelog/3889.changed.md | 3 - changelog/3889.fixed.md | 1 - changelog/3914.changed.md | 1 - changelog/3915.added.md | 1 - changelog/3916.added.md | 1 - changelog/3918.added.md | 15 -- changelog/3918.other.md | 1 - changelog/3927.added.md | 1 - changelog/3927.changed.md | 1 - changelog/3929.other.md | 1 - changelog/3930.added.md | 1 - changelog/3931.other.md | 1 - changelog/3932.added.md | 1 - changelog/3936.fixed.md | 1 - changelog/3937.fixed.md | 1 - changelog/3946.added.md | 1 - changelog/3947.added.md | 1 - changelog/3953.added.md | 1 - changelog/3956.fixed.md | 1 - changelog/3957.fixed.md | 1 - changelog/3958.changed.md | 1 - changelog/3958.fixed.md | 1 - changelog/3959.fixed.md | 1 - changelog/3960.fixed.md | 1 - changelog/3961.changed.md | 1 - changelog/3962.fixed.md | 1 - changelog/3967.fixed.md | 1 - changelog/3968.added.md | 1 - changelog/3970.changed.md | 1 - changelog/3973.changed.md | 1 - changelog/3974.changed.md | 1 - changelog/3976.fixed.md | 1 - changelog/3980.deprecated.md | 1 - 44 files changed, 265 insertions(+), 60 deletions(-) delete mode 100644 changelog/3804.added.md delete mode 100644 changelog/3804.changed.md delete mode 100644 changelog/3804.deprecated.md delete mode 100644 changelog/3804.removed.md delete mode 100644 changelog/3831.added.md delete mode 100644 changelog/3831.changed.md delete mode 100644 changelog/3848.changed.md delete mode 100644 changelog/3848.fixed.md delete mode 100644 changelog/3861.added.md delete mode 100644 changelog/3861.changed.md delete mode 100644 changelog/3889.changed.md delete mode 100644 changelog/3889.fixed.md delete mode 100644 changelog/3914.changed.md delete mode 100644 changelog/3915.added.md delete mode 100644 changelog/3916.added.md delete mode 100644 changelog/3918.added.md delete mode 100644 changelog/3918.other.md delete mode 100644 changelog/3927.added.md delete mode 100644 changelog/3927.changed.md delete mode 100644 changelog/3929.other.md delete mode 100644 changelog/3930.added.md delete mode 100644 changelog/3931.other.md delete mode 100644 changelog/3932.added.md delete mode 100644 changelog/3936.fixed.md delete mode 100644 changelog/3937.fixed.md delete mode 100644 changelog/3946.added.md delete mode 100644 changelog/3947.added.md delete mode 100644 changelog/3953.added.md delete mode 100644 changelog/3956.fixed.md delete mode 100644 changelog/3957.fixed.md delete mode 100644 changelog/3958.changed.md delete mode 100644 changelog/3958.fixed.md delete mode 100644 changelog/3959.fixed.md delete mode 100644 changelog/3960.fixed.md delete mode 100644 changelog/3961.changed.md delete mode 100644 changelog/3962.fixed.md delete mode 100644 changelog/3967.fixed.md delete mode 100644 changelog/3968.added.md delete mode 100644 changelog/3970.changed.md delete mode 100644 changelog/3973.changed.md delete mode 100644 changelog/3974.changed.md delete mode 100644 changelog/3976.fixed.md delete mode 100644 changelog/3980.deprecated.md diff --git a/CHANGELOG.md b/CHANGELOG.md index 39dd6c194..71938516a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,271 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [0.0.105] - 2026-03-10 + +### Added + +- Added concurrent audio context support: `CartesiaTTSService` can now + synthesize the next sentence while the previous one is still playing, by + setting `pause_frame_processing=False` and routing each sentence through its + own audio context queue. + (PR [#3804](https://github.com/pipecat-ai/pipecat/pull/3804)) + +- Added custom video track support to Daily transport. Use + `video_out_destinations` in `DailyParams` to publish multiple video tracks + simultaneously, mirroring the existing `audio_out_destinations` feature. + (PR [#3831](https://github.com/pipecat-ai/pipecat/pull/3831)) + +- Added `ServiceSwitcherStrategyFailover` that automatically switches to the + next service when the active service reports a non-fatal error. Recovery + policies can be implemented via the `on_service_switched` event handler. + (PR [#3861](https://github.com/pipecat-ai/pipecat/pull/3861)) + +- Added optional `timeout_secs` parameter to `register_function()` and + `register_direct_function()` for per-tool function call timeout control, + overriding the global `function_call_timeout_secs` default. + (PR [#3915](https://github.com/pipecat-ai/pipecat/pull/3915)) + +- Added `cloud-audio-only` recording option to Daily transport's + `enable_recording` property. + (PR [#3916](https://github.com/pipecat-ai/pipecat/pull/3916)) + +- Wired up `system_instruction` in `BaseOpenAILLMService`, + `AnthropicLLMService`, and `AWSBedrockLLMService` so it works as a default + system prompt, matching the behavior of the Google services. This enables + sharing a single `LLMContext` across multiple LLM services, where each + service provides its own system instruction independently. + + ```python + llm = OpenAILLMService( + api_key=os.getenv("OPENAI_API_KEY"), + system_instruction="You are a helpful assistant.", + ) + + context = LLMContext() + + @transport.event_handler("on_client_connected") + async def on_client_connected(transport, client): + context.add_message({"role": "user", "content": "Please introduce yourself."}) + await task.queue_frames([LLMRunFrame()]) + ``` + (PR [#3918](https://github.com/pipecat-ai/pipecat/pull/3918)) + +- Added `vad_threshold` parameter to `AssemblyAIConnectionParams` for + configuring voice activity detection sensitivity in U3 Pro. Aligning this + with external VAD thresholds (e.g., Silero VAD) prevents the "dead zone" + where AssemblyAI transcribes speech that VAD hasn't detected yet. + (PR [#3927](https://github.com/pipecat-ai/pipecat/pull/3927)) + +- Added `push_empty_transcripts` parameter to `BaseWhisperSTTService` and + `OpenAISTTService` to allow empty transcripts to be pushed downstream as + `TranscriptionFrame` instead of discarding them (the default behavior). This + is intended for situations where VAD fires even though the user did not + speak. In these cases, it is useful to know that nothing was transcribed so + that the agent can resume speaking, instead of waiting longer for a + transcription. + (PR [#3930](https://github.com/pipecat-ai/pipecat/pull/3930)) + +- LLM services (`BaseOpenAILLMService`, `AnthropicLLMService`, + `AWSBedrockLLMService`) now log a warning when both `system_instruction` and + a system message in the context are set. The constructor's + `system_instruction` takes precedence. + (PR [#3932](https://github.com/pipecat-ai/pipecat/pull/3932)) + +- Runtime settings updates (via `STTUpdateSettingsFrame`) now work for AWS + Transcribe, Azure, Cartesia, Deepgram, ElevenLabs Realtime, Gradium, and + Soniox STT services. Previously, changing settings at runtime only stored the + new values without reconnecting. + (PR [#3946](https://github.com/pipecat-ai/pipecat/pull/3946)) + +- Exposed `on_summary_applied` event on `LLMAssistantAggregator`, allowing + users to listen for context summarization events without accessing private + members. + (PR [#3947](https://github.com/pipecat-ai/pipecat/pull/3947)) + +- Deepgram Flux STT settings (`keyterm`, `eot_threshold`, + `eager_eot_threshold`, `eot_timeout_ms`) can now be updated mid-stream via + `STTUpdateSettingsFrame` without triggering a reconnect. The new values are + sent to Deepgram as a Configure WebSocket message on the existing connection. + (PR [#3953](https://github.com/pipecat-ai/pipecat/pull/3953)) + +- Added `system_instruction` parameter to `run_inference` across all LLM + services, allowing callers to override the system prompt for one-shot + inference calls. Used by `_generate_summary` to pass the summarization prompt + cleanly. + (PR [#3968](https://github.com/pipecat-ai/pipecat/pull/3968)) + +### Changed + +- Audio context management (previously in `AudioContextTTSService`) is now + built into `TTSService`. All WebSocket providers (`cartesia`, `elevenlabs`, + `asyncai`, `inworld`, `rime`, `gradium`, `resembleai`) now inherit from + `WebsocketTTSService` directly. Word-timestamp baseline is set automatically + on the first audio chunk of each context instead of requiring each provider + to call `start_word_timestamps()` in their receive loop. + (PR [#3804](https://github.com/pipecat-ai/pipecat/pull/3804)) + +- Daily transport now uses `CustomVideoSource`/`CustomVideoTrack` instead of + `VirtualCameraDevice` for the default camera output, mirroring how audio + already works with `CustomAudioSource`/`CustomAudioTrack`. + (PR [#3831](https://github.com/pipecat-ai/pipecat/pull/3831)) + +- ⚠️ Updated `DeepgramSTTService` to use `deepgram-sdk` v6. The `LiveOptions` + class was removed from the SDK and is now provided by pipecat directly; + import it from `pipecat.services.deepgram.stt` instead of `deepgram`. + (PR [#3848](https://github.com/pipecat-ai/pipecat/pull/3848)) + +- `ServiceSwitcherStrategy` base class now provides a `handle_error()` hook for + subclasses to implement error-based switching. `ServiceSwitcher` defaults to + `ServiceSwitcherStrategyManual` and `strategy_type` is now optional. + (PR [#3861](https://github.com/pipecat-ai/pipecat/pull/3861)) + +- Support for Voice Focus 2.0 models. + - Updated `aic-sdk` to `~=2.1.0` to support Voice Focus 2.0 models. + - Cleaned unused `ParameterFixedError` exception handling in `AICFilter` + parameter setup. + (PR [#3889](https://github.com/pipecat-ai/pipecat/pull/3889)) + +- `max_context_tokens` and `max_unsummarized_messages` in + `LLMAutoContextSummarizationConfig` (and deprecated + `LLMContextSummarizationConfig`) can now be set to `None` independently to + disable that summarization threshold. At least one must remain set. + (PR [#3914](https://github.com/pipecat-ai/pipecat/pull/3914)) + +- ⚠️ Removed `formatted_finals` and `word_finalization_max_wait_time` from + `AssemblyAIConnectionParams` as these were v2 API parameters not supported in + v3. Clarified that `format_turns` only applies to Universal-Streaming models; + U3 Pro has automatic formatting built-in. + (PR [#3927](https://github.com/pipecat-ai/pipecat/pull/3927)) + +- Changed `DeepgramTTSService` to send a Clear message on interruption instead + of disconnecting and reconnecting the WebSocket, allowing the connection to + persist throughout the session. + (PR [#3958](https://github.com/pipecat-ai/pipecat/pull/3958)) + +- Re-added `enhancement_level` support to `AICFilter` with runtime + `FilterEnableFrame` control, applying `ProcessorParameter.Bypass` and + `ProcessorParameter.EnhancementLevel` together. + (PR [#3961](https://github.com/pipecat-ai/pipecat/pull/3961)) + +- Updated `daily-python` dependency from `~=0.23.0` to `~=0.24.0`. + (PR [#3970](https://github.com/pipecat-ai/pipecat/pull/3970)) + +- Updated `FishAudioTTSService` default model from `s1` to `s2-pro`, matching + Fish Audio's latest recommended model for improved quality and speed. + (PR [#3973](https://github.com/pipecat-ai/pipecat/pull/3973)) + +- `AzureSTTService` `region` parameter is now optional when `private_endpoint` + is provided. A `ValueError` is raised if neither is given, and a warning is + logged if both are provided (`private_endpoint` takes priority). + (PR [#3974](https://github.com/pipecat-ai/pipecat/pull/3974)) + +### Deprecated + +- Deprecated `AudioContextTTSService` and `AudioContextWordTTSService`. + Subclass `WebsocketTTSService` directly instead; audio context management is + now part of the base `TTSService`. + - Deprecated `WordTTSService`, `WebsocketWordTTSService`, and + `InterruptibleWordTTSService`. Word timestamp logic is now always active in + `TTSService` and no longer needs to be opted into via a subclass. + (PR [#3804](https://github.com/pipecat-ai/pipecat/pull/3804)) + +- Deprecated `pipecat.services.google.llm_vertex`, + `pipecat.services.google.llm_openai`, and + `pipecat.services.google.gemini_live.llm_vertex` modules. Use + `pipecat.services.google.vertex.llm`, `pipecat.services.google.openai.llm`, + and `pipecat.services.google.gemini_live.vertex.llm` instead. The old import + paths still work but will emit a `DeprecationWarning`. + (PR [#3980](https://github.com/pipecat-ai/pipecat/pull/3980)) + +### Removed + +- ⚠️ Removed `supports_word_timestamps` parameter from `TTSService.__init__()`. + Word timestamp logic is now always active. Remove this argument from any + custom subclass `super().__init__()` calls. + (PR [#3804](https://github.com/pipecat-ai/pipecat/pull/3804)) + +### Fixed + +- Fixed `DeepgramSTTService` keepalive ping timeout disconnections. The + deepgram-sdk v6 removed automatic keepalive; pipecat now sends explicit + `KeepAlive` messages every 5 seconds, within the recommended 3–5 second + interval before Deepgram's 10-second inactivity timeout. + (PR [#3848](https://github.com/pipecat-ai/pipecat/pull/3848)) + +- Fixed `BufferError: Existing exports of data: object cannot be re-sized` in + `AICFilter` caused by holding a `memoryview` on the mutable audio buffer + across async yield points. + (PR [#3889](https://github.com/pipecat-ai/pipecat/pull/3889)) + +- Fixed TTS context not being appended to the assistant message history when + using `TTSSpeakFrame` with `append_to_context=True` with some TTS providers. + (PR [#3936](https://github.com/pipecat-ai/pipecat/pull/3936)) + +- Fixed context summarization leaving orphaned tool responses in the kept + context when tool calls were moved to the summarized portion. + (PR [#3937](https://github.com/pipecat-ai/pipecat/pull/3937)) + +- Fixed turn completion state not resetting at end of LLM responses. + `LLMFullResponseEndFrame` is pushed (not received) by the LLM service, so the + mixin now handles it in `push_frame` instead of `process_frame`. + (PR [#3956](https://github.com/pipecat-ai/pipecat/pull/3956)) + +- Fixed turn completion instructions being injected as a context system message + instead of using `system_instruction`. This caused warning spam when + `system_instruction` was also set and didn't persist across full context + updates. + (PR [#3957](https://github.com/pipecat-ai/pipecat/pull/3957)) + +- Fixed `TTSService` audio context queue getting blocked when + `append_to_audio_context()` was called with a `None` context ID, which + prevented subsequent audio from being delivered. + (PR [#3958](https://github.com/pipecat-ai/pipecat/pull/3958)) + +- Fixed `on_call_state_updated` event handler in LiveKit transport receiving + incorrect number of arguments due to redundant `self` passed to + `_call_event_handler`. + (PR [#3959](https://github.com/pipecat-ai/pipecat/pull/3959)) + +- Fixed OpenAI Realtime, OpenAI Realtime Beta, and Grok realtime services + treating `conversation_already_has_active_response` as a fatal error. These + services now log it as a non-fatal debug event when a response is already in + progress. + (PR [#3960](https://github.com/pipecat-ai/pipecat/pull/3960)) + +- Fixed `SmallWebRTCConnection` silently discarding messages sent before the + data channel is open by queuing them and flushing once the channel is ready. + A bounded queue (`MAX_MESSAGE_QUEUE_SIZE = 50`) prevents unbounded memory + growth, and a 10-second timeout after connection clears the queue and falls + back to discard mode if the data channel never opens. + (PR [#3962](https://github.com/pipecat-ai/pipecat/pull/3962)) + +- Fixed `AzureSTTService` failing to initialize when `private_endpoint` is + provided. The Azure Speech SDK's `SpeechConfig` does not accept both `region` + and `endpoint` simultaneously, so they are now passed conditionally. + (PR [#3967](https://github.com/pipecat-ai/pipecat/pull/3967)) + +- Fixed `GoogleLLMService` ignoring the `system_instruction` set via + constructor or `GoogleLLMSettings` when a system message was also present in + the context. The settings value now correctly takes priority, and a warning + is logged when both are set. + (PR [#3976](https://github.com/pipecat-ai/pipecat/pull/3976)) + +### Other + +- Updated foundational examples to use `system_instruction` on LLM services + instead of adding system messages to `LLMContext`. + (PR [#3918](https://github.com/pipecat-ai/pipecat/pull/3918)) + +- Updated AssemblyAI turn detection example to use `keyterms_prompt` list + format instead of `prompt` string for improved clarity. + (PR [#3929](https://github.com/pipecat-ai/pipecat/pull/3929)) + +- Updated foundational examples and eval scripts to use `"user"` role instead + of `"system"` when adding messages to `LLMContext`, since system prompts + should be set via `system_instruction` on the LLM service. + (PR [#3931](https://github.com/pipecat-ai/pipecat/pull/3931)) + ## [0.0.104] - 2026-03-02 ### Added diff --git a/changelog/3804.added.md b/changelog/3804.added.md deleted file mode 100644 index 0ad7676c9..000000000 --- a/changelog/3804.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added concurrent audio context support: `CartesiaTTSService` can now synthesize the next sentence while the previous one is still playing, by setting `pause_frame_processing=False` and routing each sentence through its own audio context queue. diff --git a/changelog/3804.changed.md b/changelog/3804.changed.md deleted file mode 100644 index 9caae491f..000000000 --- a/changelog/3804.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Audio context management (previously in `AudioContextTTSService`) is now built into `TTSService`. All WebSocket providers (`cartesia`, `elevenlabs`, `asyncai`, `inworld`, `rime`, `gradium`, `resembleai`) now inherit from `WebsocketTTSService` directly. Word-timestamp baseline is set automatically on the first audio chunk of each context instead of requiring each provider to call `start_word_timestamps()` in their receive loop. diff --git a/changelog/3804.deprecated.md b/changelog/3804.deprecated.md deleted file mode 100644 index 0babfe7d4..000000000 --- a/changelog/3804.deprecated.md +++ /dev/null @@ -1,2 +0,0 @@ -- Deprecated `AudioContextTTSService` and `AudioContextWordTTSService`. Subclass `WebsocketTTSService` directly instead; audio context management is now part of the base `TTSService`. -- Deprecated `WordTTSService`, `WebsocketWordTTSService`, and `InterruptibleWordTTSService`. Word timestamp logic is now always active in `TTSService` and no longer needs to be opted into via a subclass. diff --git a/changelog/3804.removed.md b/changelog/3804.removed.md deleted file mode 100644 index 1813b5999..000000000 --- a/changelog/3804.removed.md +++ /dev/null @@ -1 +0,0 @@ -- ⚠️ Removed `supports_word_timestamps` parameter from `TTSService.__init__()`. Word timestamp logic is now always active. Remove this argument from any custom subclass `super().__init__()` calls. diff --git a/changelog/3831.added.md b/changelog/3831.added.md deleted file mode 100644 index 7c3f7f4df..000000000 --- a/changelog/3831.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added custom video track support to Daily transport. Use `video_out_destinations` in `DailyParams` to publish multiple video tracks simultaneously, mirroring the existing `audio_out_destinations` feature. diff --git a/changelog/3831.changed.md b/changelog/3831.changed.md deleted file mode 100644 index bb4d7df83..000000000 --- a/changelog/3831.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Daily transport now uses `CustomVideoSource`/`CustomVideoTrack` instead of `VirtualCameraDevice` for the default camera output, mirroring how audio already works with `CustomAudioSource`/`CustomAudioTrack`. diff --git a/changelog/3848.changed.md b/changelog/3848.changed.md deleted file mode 100644 index 1590e284a..000000000 --- a/changelog/3848.changed.md +++ /dev/null @@ -1 +0,0 @@ -- ⚠️ Updated `DeepgramSTTService` to use `deepgram-sdk` v6. The `LiveOptions` class was removed from the SDK and is now provided by pipecat directly; import it from `pipecat.services.deepgram.stt` instead of `deepgram`. diff --git a/changelog/3848.fixed.md b/changelog/3848.fixed.md deleted file mode 100644 index a6651b763..000000000 --- a/changelog/3848.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `DeepgramSTTService` keepalive ping timeout disconnections. The deepgram-sdk v6 removed automatic keepalive; pipecat now sends explicit `KeepAlive` messages every 5 seconds, within the recommended 3–5 second interval before Deepgram's 10-second inactivity timeout. diff --git a/changelog/3861.added.md b/changelog/3861.added.md deleted file mode 100644 index c0a6f6aee..000000000 --- a/changelog/3861.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `ServiceSwitcherStrategyFailover` that automatically switches to the next service when the active service reports a non-fatal error. Recovery policies can be implemented via the `on_service_switched` event handler. diff --git a/changelog/3861.changed.md b/changelog/3861.changed.md deleted file mode 100644 index 41c577dcd..000000000 --- a/changelog/3861.changed.md +++ /dev/null @@ -1 +0,0 @@ -- `ServiceSwitcherStrategy` base class now provides a `handle_error()` hook for subclasses to implement error-based switching. `ServiceSwitcher` defaults to `ServiceSwitcherStrategyManual` and `strategy_type` is now optional. diff --git a/changelog/3889.changed.md b/changelog/3889.changed.md deleted file mode 100644 index c04aa0080..000000000 --- a/changelog/3889.changed.md +++ /dev/null @@ -1,3 +0,0 @@ -- Support for Voice Focus 2.0 models. - - Updated `aic-sdk` to `~=2.1.0` to support Voice Focus 2.0 models. - - Cleaned unused `ParameterFixedError` exception handling in `AICFilter` parameter setup. diff --git a/changelog/3889.fixed.md b/changelog/3889.fixed.md deleted file mode 100644 index babe3eb35..000000000 --- a/changelog/3889.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `BufferError: Existing exports of data: object cannot be re-sized` in `AICFilter` caused by holding a `memoryview` on the mutable audio buffer across async yield points. diff --git a/changelog/3914.changed.md b/changelog/3914.changed.md deleted file mode 100644 index 22d4ff94e..000000000 --- a/changelog/3914.changed.md +++ /dev/null @@ -1 +0,0 @@ -- `max_context_tokens` and `max_unsummarized_messages` in `LLMAutoContextSummarizationConfig` (and deprecated `LLMContextSummarizationConfig`) can now be set to `None` independently to disable that summarization threshold. At least one must remain set. diff --git a/changelog/3915.added.md b/changelog/3915.added.md deleted file mode 100644 index 66d4fb383..000000000 --- a/changelog/3915.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added optional `timeout_secs` parameter to `register_function()` and `register_direct_function()` for per-tool function call timeout control, overriding the global `function_call_timeout_secs` default. diff --git a/changelog/3916.added.md b/changelog/3916.added.md deleted file mode 100644 index 05c3f124f..000000000 --- a/changelog/3916.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `cloud-audio-only` recording option to Daily transport's `enable_recording` property. diff --git a/changelog/3918.added.md b/changelog/3918.added.md deleted file mode 100644 index 6b4d4446f..000000000 --- a/changelog/3918.added.md +++ /dev/null @@ -1,15 +0,0 @@ -- Wired up `system_instruction` in `BaseOpenAILLMService`, `AnthropicLLMService`, and `AWSBedrockLLMService` so it works as a default system prompt, matching the behavior of the Google services. This enables sharing a single `LLMContext` across multiple LLM services, where each service provides its own system instruction independently. - - ```python - llm = OpenAILLMService( - api_key=os.getenv("OPENAI_API_KEY"), - system_instruction="You are a helpful assistant.", - ) - - context = LLMContext() - - @transport.event_handler("on_client_connected") - async def on_client_connected(transport, client): - context.add_message({"role": "user", "content": "Please introduce yourself."}) - await task.queue_frames([LLMRunFrame()]) - ``` diff --git a/changelog/3918.other.md b/changelog/3918.other.md deleted file mode 100644 index 6caa1ba05..000000000 --- a/changelog/3918.other.md +++ /dev/null @@ -1 +0,0 @@ -- Updated foundational examples to use `system_instruction` on LLM services instead of adding system messages to `LLMContext`. diff --git a/changelog/3927.added.md b/changelog/3927.added.md deleted file mode 100644 index 378815fc3..000000000 --- a/changelog/3927.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `vad_threshold` parameter to `AssemblyAIConnectionParams` for configuring voice activity detection sensitivity in U3 Pro. Aligning this with external VAD thresholds (e.g., Silero VAD) prevents the "dead zone" where AssemblyAI transcribes speech that VAD hasn't detected yet. diff --git a/changelog/3927.changed.md b/changelog/3927.changed.md deleted file mode 100644 index b397e86a2..000000000 --- a/changelog/3927.changed.md +++ /dev/null @@ -1 +0,0 @@ -- ⚠️ Removed `formatted_finals` and `word_finalization_max_wait_time` from `AssemblyAIConnectionParams` as these were v2 API parameters not supported in v3. Clarified that `format_turns` only applies to Universal-Streaming models; U3 Pro has automatic formatting built-in. diff --git a/changelog/3929.other.md b/changelog/3929.other.md deleted file mode 100644 index c1d9f8dda..000000000 --- a/changelog/3929.other.md +++ /dev/null @@ -1 +0,0 @@ -- Updated AssemblyAI turn detection example to use `keyterms_prompt` list format instead of `prompt` string for improved clarity. diff --git a/changelog/3930.added.md b/changelog/3930.added.md deleted file mode 100644 index dd799f9ec..000000000 --- a/changelog/3930.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `push_empty_transcripts` parameter to `BaseWhisperSTTService` and `OpenAISTTService` to allow empty transcripts to be pushed downstream as `TranscriptionFrame` instead of discarding them (the default behavior). This is intended for situations where VAD fires even though the user did not speak. In these cases, it is useful to know that nothing was transcribed so that the agent can resume speaking, instead of waiting longer for a transcription. \ No newline at end of file diff --git a/changelog/3931.other.md b/changelog/3931.other.md deleted file mode 100644 index a1ebef414..000000000 --- a/changelog/3931.other.md +++ /dev/null @@ -1 +0,0 @@ -- Updated foundational examples and eval scripts to use `"user"` role instead of `"system"` when adding messages to `LLMContext`, since system prompts should be set via `system_instruction` on the LLM service. diff --git a/changelog/3932.added.md b/changelog/3932.added.md deleted file mode 100644 index e97690d44..000000000 --- a/changelog/3932.added.md +++ /dev/null @@ -1 +0,0 @@ -- LLM services (`BaseOpenAILLMService`, `AnthropicLLMService`, `AWSBedrockLLMService`) now log a warning when both `system_instruction` and a system message in the context are set. The constructor's `system_instruction` takes precedence. diff --git a/changelog/3936.fixed.md b/changelog/3936.fixed.md deleted file mode 100644 index 27e48815c..000000000 --- a/changelog/3936.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed TTS context not being appended to the assistant message history when using `TTSSpeakFrame` with `append_to_context=True` with some TTS providers. diff --git a/changelog/3937.fixed.md b/changelog/3937.fixed.md deleted file mode 100644 index eda9d27f6..000000000 --- a/changelog/3937.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed context summarization leaving orphaned tool responses in the kept context when tool calls were moved to the summarized portion. diff --git a/changelog/3946.added.md b/changelog/3946.added.md deleted file mode 100644 index 6aabfefb2..000000000 --- a/changelog/3946.added.md +++ /dev/null @@ -1 +0,0 @@ -- Runtime settings updates (via `STTUpdateSettingsFrame`) now work for AWS Transcribe, Azure, Cartesia, Deepgram, ElevenLabs Realtime, Gradium, and Soniox STT services. Previously, changing settings at runtime only stored the new values without reconnecting. diff --git a/changelog/3947.added.md b/changelog/3947.added.md deleted file mode 100644 index 175cb87bd..000000000 --- a/changelog/3947.added.md +++ /dev/null @@ -1 +0,0 @@ -- Exposed `on_summary_applied` event on `LLMAssistantAggregator`, allowing users to listen for context summarization events without accessing private members. diff --git a/changelog/3953.added.md b/changelog/3953.added.md deleted file mode 100644 index f30c31733..000000000 --- a/changelog/3953.added.md +++ /dev/null @@ -1 +0,0 @@ -- Deepgram Flux STT settings (`keyterm`, `eot_threshold`, `eager_eot_threshold`, `eot_timeout_ms`) can now be updated mid-stream via `STTUpdateSettingsFrame` without triggering a reconnect. The new values are sent to Deepgram as a Configure WebSocket message on the existing connection. diff --git a/changelog/3956.fixed.md b/changelog/3956.fixed.md deleted file mode 100644 index c8af8db91..000000000 --- a/changelog/3956.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed turn completion state not resetting at end of LLM responses. `LLMFullResponseEndFrame` is pushed (not received) by the LLM service, so the mixin now handles it in `push_frame` instead of `process_frame`. diff --git a/changelog/3957.fixed.md b/changelog/3957.fixed.md deleted file mode 100644 index a501aecb1..000000000 --- a/changelog/3957.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed turn completion instructions being injected as a context system message instead of using `system_instruction`. This caused warning spam when `system_instruction` was also set and didn't persist across full context updates. diff --git a/changelog/3958.changed.md b/changelog/3958.changed.md deleted file mode 100644 index dbeabd0f2..000000000 --- a/changelog/3958.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Changed `DeepgramTTSService` to send a Clear message on interruption instead of disconnecting and reconnecting the WebSocket, allowing the connection to persist throughout the session. diff --git a/changelog/3958.fixed.md b/changelog/3958.fixed.md deleted file mode 100644 index 8bc21dffe..000000000 --- a/changelog/3958.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `TTSService` audio context queue getting blocked when `append_to_audio_context()` was called with a `None` context ID, which prevented subsequent audio from being delivered. diff --git a/changelog/3959.fixed.md b/changelog/3959.fixed.md deleted file mode 100644 index a10521d92..000000000 --- a/changelog/3959.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `on_call_state_updated` event handler in LiveKit transport receiving incorrect number of arguments due to redundant `self` passed to `_call_event_handler`. diff --git a/changelog/3960.fixed.md b/changelog/3960.fixed.md deleted file mode 100644 index 404569234..000000000 --- a/changelog/3960.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed OpenAI Realtime, OpenAI Realtime Beta, and Grok realtime services treating `conversation_already_has_active_response` as a fatal error. These services now log it as a non-fatal debug event when a response is already in progress. diff --git a/changelog/3961.changed.md b/changelog/3961.changed.md deleted file mode 100644 index 19c2780e3..000000000 --- a/changelog/3961.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Re-added `enhancement_level` support to `AICFilter` with runtime `FilterEnableFrame` control, applying `ProcessorParameter.Bypass` and `ProcessorParameter.EnhancementLevel` together. diff --git a/changelog/3962.fixed.md b/changelog/3962.fixed.md deleted file mode 100644 index 1d326cd05..000000000 --- a/changelog/3962.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `SmallWebRTCConnection` silently discarding messages sent before the data channel is open by queuing them and flushing once the channel is ready. A bounded queue (`MAX_MESSAGE_QUEUE_SIZE = 50`) prevents unbounded memory growth, and a 10-second timeout after connection clears the queue and falls back to discard mode if the data channel never opens. diff --git a/changelog/3967.fixed.md b/changelog/3967.fixed.md deleted file mode 100644 index dff880c2c..000000000 --- a/changelog/3967.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `AzureSTTService` failing to initialize when `private_endpoint` is provided. The Azure Speech SDK's `SpeechConfig` does not accept both `region` and `endpoint` simultaneously, so they are now passed conditionally. diff --git a/changelog/3968.added.md b/changelog/3968.added.md deleted file mode 100644 index cd9be5996..000000000 --- a/changelog/3968.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `system_instruction` parameter to `run_inference` across all LLM services, allowing callers to override the system prompt for one-shot inference calls. Used by `_generate_summary` to pass the summarization prompt cleanly. diff --git a/changelog/3970.changed.md b/changelog/3970.changed.md deleted file mode 100644 index f420a7e73..000000000 --- a/changelog/3970.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Updated `daily-python` dependency from `~=0.23.0` to `~=0.24.0`. diff --git a/changelog/3973.changed.md b/changelog/3973.changed.md deleted file mode 100644 index d6834ce8e..000000000 --- a/changelog/3973.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Updated `FishAudioTTSService` default model from `s1` to `s2-pro`, matching Fish Audio's latest recommended model for improved quality and speed. diff --git a/changelog/3974.changed.md b/changelog/3974.changed.md deleted file mode 100644 index 7c4c360d5..000000000 --- a/changelog/3974.changed.md +++ /dev/null @@ -1 +0,0 @@ -- `AzureSTTService` `region` parameter is now optional when `private_endpoint` is provided. A `ValueError` is raised if neither is given, and a warning is logged if both are provided (`private_endpoint` takes priority). diff --git a/changelog/3976.fixed.md b/changelog/3976.fixed.md deleted file mode 100644 index 3153cdcbe..000000000 --- a/changelog/3976.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `GoogleLLMService` ignoring the `system_instruction` set via constructor or `GoogleLLMSettings` when a system message was also present in the context. The settings value now correctly takes priority, and a warning is logged when both are set. diff --git a/changelog/3980.deprecated.md b/changelog/3980.deprecated.md deleted file mode 100644 index f69964b62..000000000 --- a/changelog/3980.deprecated.md +++ /dev/null @@ -1 +0,0 @@ -- Deprecated `pipecat.services.google.llm_vertex`, `pipecat.services.google.llm_openai`, and `pipecat.services.google.gemini_live.llm_vertex` modules. Use `pipecat.services.google.vertex.llm`, `pipecat.services.google.openai.llm`, and `pipecat.services.google.gemini_live.vertex.llm` instead. The old import paths still work but will emit a `DeprecationWarning`.