Module: RubyLLM::Agents::DSL::Knowledge
- Included in:
- BaseAgent
- Defined in:
- lib/ruby_llm/agents/dsl/knowledge.rb
Overview
Knowledge DSL for declaring domain knowledge to inject into system prompts.
Supports two modes:
-
Static: ‘knows :name` loads from a file resolved via `knowledge_path`
-
Dynamic: ‘knows(:name) { … }` evaluates a block at call time via instance_exec
Optional ‘if:` condition gates inclusion without forcing static content into blocks.
Defined Under Namespace
Modules: InstanceMethods
Instance Method Summary collapse
-
#knowledge_entries ⇒ Array<Hash>
Returns the list of registered knowledge entries, inheriting from superclass.
-
#knowledge_path(path = nil) ⇒ String?
Sets or returns the base path for static knowledge files.
-
#knows(name, *more_names, **options, &block) ⇒ Object
Registers one or more knowledge entries.
Instance Method Details
#knowledge_entries ⇒ Array<Hash>
Returns the list of registered knowledge entries, inheriting from superclass.
81 82 83 84 85 86 87 |
# File 'lib/ruby_llm/agents/dsl/knowledge.rb', line 81 def knowledge_entries @knowledge_entries ||= if superclass.respond_to?(:knowledge_entries) superclass.knowledge_entries.dup else [] end end |
#knowledge_path(path = nil) ⇒ String?
Sets or returns the base path for static knowledge files.
68 69 70 71 72 73 74 75 76 |
# File 'lib/ruby_llm/agents/dsl/knowledge.rb', line 68 def knowledge_path(path = nil) if path @knowledge_path = path else @knowledge_path || inherited_or_default(:knowledge_path, nil) || RubyLLM::Agents.configuration.knowledge_path end end |
#knows(name, **options, &block) ⇒ Object #knows(name, *more_names) ⇒ Object
Registers one or more knowledge entries.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/ruby_llm/agents/dsl/knowledge.rb', line 47 def knows(name, *more_names, **, &block) if more_names.any? # Multi-arg form: knows :a, :b, :c — all static, no block/options [name, *more_names].each do |n| knowledge_entries.reject! { |e| e[:name] == n } knowledge_entries << {name: n, loader: nil, options: {}} end else knowledge_entries.reject! { |e| e[:name] == name } knowledge_entries << { name: name, loader: block, options: } end end |