123456789101112131415161718192021222324252627282930313233 |
- 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)
|