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.
102 103 104 105 106 |
# File 'lib/prescient/tool.rb', line 102 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.
99 100 101 |
# File 'lib/prescient/tool.rb', line 99 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.
113 114 115 116 117 118 119 120 121 122 |
# File 'lib/prescient/tool.rb', line 113 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 |