Module: Kward::ChatInvocation

Defined in:
lib/kward/model/chat_invocation.rb

Overview

Thin adapter that invokes the configured model client.

Constant Summary collapse

KEYWORD_PARAMETER_TYPES =
[:key, :keyreq].freeze

Class Method Summary collapse

Class Method Details

.call(client, messages, keywords) ⇒ Object



9
10
11
# File 'lib/kward/model/chat_invocation.rb', line 9

def call(client, messages, keywords)
  client.chat(messages, **supported_keywords(client, keywords))
end

.supported_keywords(client, keywords) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/kward/model/chat_invocation.rb', line 13

def supported_keywords(client, keywords)
  parameters = client.method(:chat).parameters
  return keywords if parameters.any? { |type, _name| type == :keyrest }

  supported = parameters.each_with_object({}) do |(type, name), names|
    names[name] = true if KEYWORD_PARAMETER_TYPES.include?(type)
  end
  keywords.select { |name, _value| supported.key?(name) }
rescue NameError
  keywords
end