from typing import List, Optional, Protocol from ..schemas.speech import ChatMessage, ChatResponse, TextToSpeechResponse class LLMProvider(Protocol): def chat( self, messages: List[ChatMessage], *, model: Optional[str] = None, temperature: Optional[float] = None, max_tokens: Optional[int] = None, ) -> ChatResponse: ... class SpeechProvider(Protocol): def text_to_speech( self, text: str, *, model: Optional[str] = None, ) -> TextToSpeechResponse: ...