Class: Prescient::Tool::Group
Overview
Ordered implementations for one logical tool capability.
Constant Summary
Constants inherited from Base
Base::DEFAULT_MAX_RESPONSE_BYTES, Base::DEFAULT_MAX_RESULTS, Base::DEFAULT_TIMEOUT, Base::MAX_QUERY_LENGTH
Instance Attribute Summary collapse
-
#adapters ⇒ Array<Base>
readonly
Ordered capability implementations.
Attributes inherited from Base
Instance Method Summary collapse
-
#initialize(adapters:) ⇒ Group
constructor
A new instance of Group.
-
#search(query, **options) ⇒ Hash
Execute the first successful adapter, falling back only for transient connection and rate-limit failures.
Methods inherited from Base
#max_response_bytes, #request_timeout, #result_limit, #validate_configuration!, #validate_query
Constructor Details
#initialize(adapters:) ⇒ Group
Returns a new instance of Group.
101 102 103 104 105 |
# File 'lib/prescient/tool.rb', line 101 def initialize(adapters:) super @adapters = adapters raise Prescient::ToolConfigurationError, 'tool group requires an adapter' if @adapters.empty? end |
Instance Attribute Details
#adapters ⇒ Array<Base> (readonly)
Returns Ordered capability implementations.
98 99 100 |
# File 'lib/prescient/tool.rb', line 98 def adapters @adapters end |
Instance Method Details
#search(query, **options) ⇒ Hash
Execute the first successful adapter, falling back only for transient connection and rate-limit failures.
112 113 114 115 116 117 118 119 120 121 |
# File 'lib/prescient/tool.rb', line 112 def search(query, **) failures = [] @adapters.each do |adapter| return adapter.search(query, **) rescue Prescient::ToolConnectionError, Prescient::RateLimitError => e failures << e end raise failures.last end |