Add Settings subclasses to all services and auto-discovered init tests

- Add dedicated Settings subclasses to 20 LLM services that were
  borrowing parent Settings classes (e.g. AzureLLMSettings,
  GroqLLMSettings) so users don't need cross-module imports
- Fix field defaults to NOT_GIVEN in BaseWhisperSTTSettings,
  OpenAIRealtimeSTTSettings, and NvidiaSegmentedSTTSettings for
  delta-mode safety
- Fix incomplete default_settings in AWS, Cartesia, ElevenLabs,
  Fish, and Whisper services so validate_complete() passes
- Add auto-discovered tests that verify all Settings classes default
  to NOT_GIVEN (delta safety) and all services initialize with
  complete settings (store completeness)
This commit is contained in:
Mark Backman
2026-03-04 18:04:59 -05:00
parent 034e81ff18
commit a4375274b2
28 changed files with 436 additions and 72 deletions

View File

@@ -6,6 +6,7 @@
"""Cerebras LLM service implementation using OpenAI-compatible interface."""
from dataclasses import dataclass
from typing import Optional
from loguru import logger
@@ -16,6 +17,13 @@ from pipecat.services.openai.llm import OpenAILLMService
from pipecat.services.settings import _warn_deprecated_param
@dataclass
class CerebrasLLMSettings(OpenAILLMSettings):
"""Settings for Cerebras LLM service."""
pass
class CerebrasLLMService(OpenAILLMService):
"""A service for interacting with Cerebras's API using the OpenAI-compatible interface.
@@ -29,7 +37,7 @@ class CerebrasLLMService(OpenAILLMService):
api_key: str,
base_url: str = "https://api.cerebras.ai/v1",
model: Optional[str] = None,
settings: Optional[OpenAILLMSettings] = None,
settings: Optional[CerebrasLLMSettings] = None,
**kwargs,
):
"""Initialize the Cerebras LLM service.
@@ -47,11 +55,11 @@ class CerebrasLLMService(OpenAILLMService):
**kwargs: Additional keyword arguments passed to OpenAILLMService.
"""
# 1. Initialize default_settings with hardcoded defaults
default_settings = OpenAILLMSettings(model="gpt-oss-120b")
default_settings = CerebrasLLMSettings(model="gpt-oss-120b")
# 2. Apply direct init arg overrides (deprecated)
if model is not None:
_warn_deprecated_param("model", OpenAILLMSettings, "model")
_warn_deprecated_param("model", CerebrasLLMSettings, "model")
default_settings.model = model
# 4. Apply settings delta (canonical API, always wins)