From 7556427862c3dae510e5876b422990b121e0ac2a Mon Sep 17 00:00:00 2001 From: Paul Kompfner Date: Mon, 23 Feb 2026 16:52:11 -0500 Subject: [PATCH] Revise changelog entries for service settings refactor Split the single "changed" entry into separate "added", "changed", and "deprecated" entries for clarity. Add a note about the subtle behavior change in the deprecated set_model/set_voice/set_language methods. --- changelog/3714.added.md | 19 +++++++++++++++++++ changelog/3714.changed.md | 2 +- changelog/3714.deprecated.2.md | 1 + changelog/3714.deprecated.md | 2 ++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 changelog/3714.added.md create mode 100644 changelog/3714.deprecated.2.md diff --git a/changelog/3714.added.md b/changelog/3714.added.md new file mode 100644 index 000000000..83084675a --- /dev/null +++ b/changelog/3714.added.md @@ -0,0 +1,19 @@ +- Added support for using strongly-typed objects instead of dicts for updating service settings at runtime. + + Instead of, say: + + ```python + await task.queue_frame( + STTUpdateSettingsFrame(settings={"language": Language.ES}) + ) + ``` + + you'd do: + + ```python + await task.queue_frame( + STTUpdateSettingsFrame(update=DeepgramSTTSettings(language=Language.ES)) + ) + ``` + + Each service now vends strongly-typed classes like `DeepgramSTTSettings` representing the service's runtime-updatable settings. diff --git a/changelog/3714.changed.md b/changelog/3714.changed.md index a3081a7c8..bcfb5cbf7 100644 --- a/changelog/3714.changed.md +++ b/changelog/3714.changed.md @@ -1 +1 @@ -- ⚠️ Refactored service settings to use strongly-typed dataclasses (`TTSSettings`, `STTSettings`, `LLMSettings`, and service-specific subclasses) instead of plain dicts. Each service now exposes a `_settings` attribute with discoverable, typed fields. Dict-based `*UpdateSettingsFrame(settings={...})` is deprecated in favor of passing typed settings delta objects. For service maintainers, see changes in COMMUNITY_INTEGRATIONS.md. +- ⚠️ Refactored runtime-updatable service settings to use strongly-typed classes (`TTSSettings`, `STTSettings`, `LLMSettings`, and service-specific subclasses) instead of plain dicts. Each service's `_settings` now holds these strongly-typed objects. For service maintainers, see changes in COMMUNITY_INTEGRATIONS.md. diff --git a/changelog/3714.deprecated.2.md b/changelog/3714.deprecated.2.md new file mode 100644 index 000000000..232c1dee5 --- /dev/null +++ b/changelog/3714.deprecated.2.md @@ -0,0 +1 @@ +- Dict-based `*UpdateSettingsFrame(settings={...})` is deprecated in favor of passing typed settings delta objects with `*UpdateSettingsFrame(update={...})`. diff --git a/changelog/3714.deprecated.md b/changelog/3714.deprecated.md index ee71b2070..75337a642 100644 --- a/changelog/3714.deprecated.md +++ b/changelog/3714.deprecated.md @@ -1 +1,3 @@ - Deprecated `set_model()`, `set_voice()`, and `set_language()` on AI services in favor of runtime updates via `TTSUpdateSettingsFrame`, `STTUpdateSettingsFrame`, and `LLMUpdateSettingsFrame`. + + ⚠️ Note, too, a subtle behavior change in these deprecated methods. Whereas previously only `set_language()` caused the service to actually react to the update (e.g. by reconnecting to a remote service so it an pick up the change), now all these methods do. This change was made as part of a refactor making them all work the same way under the hood.