Class: LlmMock::Anthropic::Provider

Inherits:
Provider
  • Object
show all
Defined in:
lib/llm_mock_anthropic.rb

Overview

Drives the Anthropic SDK shape for a consumer like deja: builds the stub client, invokes the real client, and (de)serializes responses.

Instance Method Summary collapse

Instance Method Details

#build_client(&responder) ⇒ Object



49
50
51
52
53
54
55
56
57
# File 'lib/llm_mock_anthropic.rb', line 49

def build_client(&responder)
  messages = Object.new
  messages.define_singleton_method(:create) {|**kwargs| responder.call(:create, kwargs) }
  messages.define_singleton_method(:stream) {|**kwargs| responder.call(:stream, kwargs) }

  client = Object.new
  client.define_singleton_method(:messages) { messages }
  client
end

#call_real(client, method, kwargs) ⇒ Object



59
60
61
# File 'lib/llm_mock_anthropic.rb', line 59

def call_real(client, method, kwargs)
  client.messages.public_send(method, **kwargs)
end

#default_real_clientObject



63
64
65
# File 'lib/llm_mock_anthropic.rb', line 63

def default_real_client
  -> { ::Anthropic::Client.new }
end

#deserialize(method, data) ⇒ Object



75
76
77
# File 'lib/llm_mock_anthropic.rb', line 75

def deserialize(method, data)
  method == :stream ? deserialize_stream(data) : deserialize_message(data)
end

#prompt_for(kwargs) ⇒ Object



67
68
69
# File 'lib/llm_mock_anthropic.rb', line 67

def prompt_for(kwargs)
  kwargs[:system].to_s
end

#serialize(method, response) ⇒ Object



71
72
73
# File 'lib/llm_mock_anthropic.rb', line 71

def serialize(method, response)
  method == :stream ? serialize_stream(response) : serialize_message(response)
end