Mock backend for testing.
Supports two modes: static (single response) and queue-based (multiple sequential responses).
Static Mode Options
:response- Response content (default: "Mock response"):stream_chunks- List of chunks for streaming:error- Return this error instead of response:finish_reason- Finish reason (default::stop):delay- Delay in milliseconds:model- Model name for introspection (default: "mock")
Queue Mode Options
:queue_pid- PID of an Agent holding a list of responses (enables queue mode):default- Response when queue is exhausted (default:{:error, :mock_responses_exhausted}):finish_reason- Finish reason (default::stop):delay- Delay in milliseconds:model- Model name for introspection (default: "mock")
Response Types (Queue Mode)
In queue mode, each response can be:
- Any term (returned as response content)
{:error, reason}(simulates LLM error)fn messages -> response end(dynamic, receives conversation history)
Examples
# Static mode
client = Puck.Client.new({Puck.Backends.Mock, response: "Hello!"})
client = Puck.Client.new({Puck.Backends.Mock, error: :rate_limited})
# Queue mode (prefer using Puck.Test.mock_client/2)
{:ok, queue} = Agent.start_link(fn -> ["First", "Second", "Third"] end)
client = Puck.Client.new({Puck.Backends.Mock, queue_pid: queue})See Puck.Test.mock_client/2 for the preferred way to create queue-based mock clients.