from typing import List, Optional from ..schemas.llm import ChatMessage, ChatResponse, Usage class MockProvider: """A simple echo-like provider for local testing. It takes the last user message and returns a prefixed reply. """ def chat( self, messages: List[ChatMessage], *, model: Optional[str] = None, temperature: Optional[float] = None, max_tokens: Optional[int] = None, ) -> ChatResponse: last_user = next((m.content for m in reversed(messages) if m.role == "user"), "") content = f"[mock] You said: {last_user}" # Very rough word-count "tokens" approximation for demo purposes only prompt_tokens = sum(len(m.content.split()) for m in messages) completion_tokens = len(content.split()) usage = Usage( prompt_tokens=prompt_tokens, completion_tokens=completion_tokens, total_tokens=prompt_tokens + completion_tokens, ) return ChatResponse(content=content, model=model or "mock-echo-001", usage=usage)