Puck.Backends.Mock (Puck v0.2.23)

Copy Markdown View Source

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.