Module: AICallable

Defined in:
lib/glim_ai_callable.rb

Defined Under Namespace

Modules: ClassMethods Classes: MethodSignatureBuilder

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object



6
7
8
# File 'lib/glim_ai_callable.rb', line 6

def self.included(base)
  base.extend(ClassMethods)
end

Instance Method Details

#_perform_ai_call(eval_function_name, eval_function_arguments) ⇒ Object

ClassMethods



46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/glim_ai_callable.rb', line 46

def _perform_ai_call(eval_function_name, eval_function_arguments)
  # begin
    sigs = self.class.ai_method_signatures
    putt(:functions, "eval_function_name = #{eval_function_name}, sigs: #{sigs}")

    sig = sigs.select { |x| x[:name].to_s == eval_function_name.to_s }.first
    props = sig[:parameters][:properties]
    # props looks like this: {v1=>{...}, v2: {...}
    local_function_arguments = {}
    for ai_name in props.keys
      v = props[ai_name]
      # v looks like this:  {:type=>:string, :description=>"The expression, as a string, in correct ruby syntax", :local_name=>:exp}}
      local_param_name = v[:local_name]
      local_function_arguments[local_param_name] = eval_function_arguments[ai_name]
    end
    putt(:functions, "eval_function_arguments: #{eval_function_arguments}")
    putt(:functions, "local_function_arguments: #{local_function_arguments}")

    required_params = sig[:parameters][:required]
    for required_param in required_params
      raise "Missing required parameter: #{required_param}" unless eval_function_arguments[required_param]
    end
    # eval_function_result = eval_functions_object.send(eval_function_name, **local_function_arguments)
    eval_function_result = send(eval_function_name, **local_function_arguments)
  # rescue => e
  #   putt :warning, "FAILED Function call to #{self}.#{eval_function_name}(#{local_function_arguments}): #{e}"
  #   eval_function_result = e.message
  # end
  return eval_function_result
end