mock_provider.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from typing import List, Optional
  2. from ..schemas.speech import ChatMessage, ChatResponse, Usage
  3. class MockProvider:
  4. """A simple echo-like provider for local testing.
  5. It takes the last user message and returns a prefixed reply.
  6. """
  7. def chat(
  8. self,
  9. messages: List[ChatMessage],
  10. *,
  11. model: Optional[str] = None,
  12. temperature: Optional[float] = None,
  13. max_tokens: Optional[int] = None,
  14. ) -> ChatResponse:
  15. last_user = next((m.content for m in reversed(messages) if m.role == "user"), "")
  16. content = f"[mock] You said: {last_user}"
  17. # Very rough word-count "tokens" approximation for demo purposes only
  18. prompt_tokens = sum(len(m.content.split()) for m in messages)
  19. completion_tokens = len(content.split())
  20. usage = Usage(
  21. prompt_tokens=prompt_tokens,
  22. completion_tokens=completion_tokens,
  23. total_tokens=prompt_tokens + completion_tokens,
  24. )
  25. return ChatResponse(content=content, model=model or "mock-echo-001", usage=usage)