Class: RailsAgents::Tool

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_agents/tool.rb

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.description_textObject (readonly)

Returns the value of attribute description_text.



8
9
10
# File 'lib/rails_agents/tool.rb', line 8

def description_text
  @description_text
end

.parametersObject (readonly)

Returns the value of attribute parameters.



8
9
10
# File 'lib/rails_agents/tool.rb', line 8

def parameters
  @parameters
end

Class Method Details

.definitionObject



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/rails_agents/tool.rb', line 29

def definition
  {
    name: tool_name,
    description: description_text,
    parameters: {
      type: "object",
      properties: parameters.transform_values { |p|
        {type: p[:type].to_s, description: p[:description]}.compact
      },
      required: parameters.select { |_, p| p[:required] }.keys.map(&:to_s)
    }
  }
end

.description(text = nil) ⇒ Object



15
16
17
18
# File 'lib/rails_agents/tool.rb', line 15

def description(text = nil)
  return @description_text if text.nil?
  @description_text = text
end

.inherited(subclass) ⇒ Object



10
11
12
13
# File 'lib/rails_agents/tool.rb', line 10

def inherited(subclass)
  super
  subclass.instance_variable_set(:@parameters, (parameters || {}).dup)
end

.param(name, type, required: true, description: nil) ⇒ Object



20
21
22
23
# File 'lib/rails_agents/tool.rb', line 20

def param(name, type, required: true, description: nil)
  @parameters ||= {}
  @parameters[name.to_sym] = {type: type.to_sym, required:, description:}
end

.tool_nameObject



25
26
27
# File 'lib/rails_agents/tool.rb', line 25

def tool_name
  name.split("::").last.gsub(/Tool$/, "").underscore
end

Instance Method Details

#call(**kwargs) ⇒ Object

Raises:

  • (NotImplementedError)


44
45
46
# File 'lib/rails_agents/tool.rb', line 44

def call(**kwargs)
  raise NotImplementedError
end