Class: OllamaAgent::Skills::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/ollama_agent/skills/base.rb

Overview

Template Method base for deterministic, JSON-contract skills. Subclasses implement #prompt(input) and define a SCHEMA constant. The base class drives the pipeline:

prompt  llm.generate  JsonExtractor.parse  SchemaValidator.validate!

Defined Under Namespace

Classes: ContractError

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(llm: nil) ⇒ Base

Returns a new instance of Base.



26
27
28
# File 'lib/ollama_agent/skills/base.rb', line 26

def initialize(llm: nil)
  @llm = llm || LlmClient.new
end

Class Method Details

.register_as(id) ⇒ Object

Self-register the skill in the shared registry.



21
22
23
24
# File 'lib/ollama_agent/skills/base.rb', line 21

def self.register_as(id)
  @skill_id = id.to_sym
  Skills.registry.register(@skill_id, self)
end

.skill_idObject



16
17
18
# File 'lib/ollama_agent/skills/base.rb', line 16

def self.skill_id
  @skill_id || raise(NotImplementedError, "#{name} must declare skill_id via `register_as`")
end

Instance Method Details

#call(input) ⇒ Object



30
31
32
33
34
35
36
# File 'lib/ollama_agent/skills/base.rb', line 30

def call(input)
  validated_input!(input)
  raw    = @llm.generate(prompt(input))
  parsed = JsonExtractor.parse(raw)
  validate_contract!(parsed)
  parsed
end