Module: Omakase::Capabilities
- Defined in:
- lib/omakase/capabilities.rb
Overview
The agent's own methods, written out for the model. Adding a tool is adding a method.
Class Method Summary collapse
- .entry(agent_class, name) ⇒ Object
- .names(agent_class) ⇒ Object
- .of(agent_class, except: nil) ⇒ Object
- .parameters(method) ⇒ Object
Class Method Details
.entry(agent_class, name) ⇒ Object
20 21 22 23 24 |
# File 'lib/omakase/capabilities.rb', line 20 def entry(agent_class, name) signature = "#{name}(#{parameters(agent_class.instance_method(name))})" description = agent_class.descriptions[name] || agent_class.generations[name]&.prompt description ? "#{signature} — #{description}" : signature end |
.names(agent_class) ⇒ Object
13 14 15 16 17 18 |
# File 'lib/omakase/capabilities.rb', line 13 def names(agent_class) agent_class.ancestors .take_while { |mod| mod != Agent } .flat_map { |mod| mod.public_instance_methods(false) } .uniq end |
.of(agent_class, except: nil) ⇒ Object
9 10 11 |
# File 'lib/omakase/capabilities.rb', line 9 def of(agent_class, except: nil) (names(agent_class) - [except]).sort.map { |name| entry(agent_class, name) } end |
.parameters(method) ⇒ Object
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/omakase/capabilities.rb', line 26 def parameters(method) method.parameters.map do |kind, name| case kind when :key, :keyreq then "#{name}:" when :keyrest then "**#{name}" when :rest then "*#{name}" when :opt then "#{name} = ..." else name.to_s end end.join(", ") end |