Class: NitroIntelligence::Observability::PromptResolver
- Inherits:
-
Object
- Object
- NitroIntelligence::Observability::PromptResolver
- Defined in:
- lib/nitro_intelligence/observability/prompt_resolver.rb
Overview
Resolves a managed prompt from the lookups a request asks for, most specific first. A lookup that is missing -- or that fails -- yields to the next; the last one's failure propagates.
Defined Under Namespace
Classes: Lookup
Class Method Summary collapse
- .for(store:, parameters:) ⇒ Object
-
.lookups_for(parameters) ⇒ Object
The fallback names its own label and version and inherits neither: a version is minted per prompt, and a label the requested prompt carries need not exist on the fallback at all.
Instance Method Summary collapse
-
#initialize(store:, lookups:) ⇒ PromptResolver
constructor
A new instance of PromptResolver.
- #prompt ⇒ Object
Constructor Details
#initialize(store:, lookups:) ⇒ PromptResolver
Returns a new instance of PromptResolver.
32 33 34 35 |
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 32 def initialize(store:, lookups:) @store = store @lookups = lookups.select { |lookup| lookup.name.present? }.uniq end |
Class Method Details
.for(store:, parameters:) ⇒ Object
11 12 13 |
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 11 def self.for(store:, parameters:) new(store: store, lookups: lookups_for(parameters)).prompt end |
.lookups_for(parameters) ⇒ Object
The fallback names its own label and version and inherits neither: a version is minted per prompt, and a label the requested prompt carries need not exist on the fallback at all.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 17 def self.lookups_for(parameters) [ Lookup.new( name: parameters[:prompt_name], label: parameters[:prompt_label], version: parameters[:prompt_version] ), Lookup.new( name: parameters[:prompt_fallback_name], label: parameters[:prompt_fallback_label], version: parameters[:prompt_fallback_version] ), ] end |
Instance Method Details
#prompt ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/nitro_intelligence/observability/prompt_resolver.rb', line 37 def prompt *optional, final = @lookups return nil if final.nil? optional.each do |lookup| resolved = fetch_optional(lookup) return resolved if resolved end fetch(final) end |