Class: Botiasloop::Tools::WebSearch
- Inherits:
-
Botiasloop::Tool
- Object
- RubyLLM::Tool
- Botiasloop::Tool
- Botiasloop::Tools::WebSearch
- Defined in:
- lib/botiasloop/tools/web_search.rb
Defined Under Namespace
Classes: Result
Instance Method Summary collapse
-
#execute(query:) ⇒ Hash
Execute web search.
-
#initialize(searxng_url) ⇒ WebSearch
constructor
Initialize with SearXNG URL.
Methods inherited from Botiasloop::Tool
Constructor Details
#initialize(searxng_url) ⇒ WebSearch
Initialize with SearXNG URL
17 18 19 |
# File 'lib/botiasloop/tools/web_search.rb', line 17 def initialize(searxng_url) @searxng_url = searxng_url end |
Instance Method Details
#execute(query:) ⇒ Hash
Execute web search
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/botiasloop/tools/web_search.rb', line 26 def execute(query:) uri = URI("#{@searxng_url}/search") uri.query = URI.encode_www_form("q" => query, "format" => "json") response = Net::HTTP.get_response(uri) unless response.is_a?(Net::HTTPSuccess) raise Error, "Search failed: HTTP #{response.code}" end data = JSON.parse(response.body) Result.new(data["results"] || []).to_h rescue Errno::ECONNREFUSED => e raise Error, "Search failed: #{e.message}" rescue JSON::ParserError => e raise Error, "Search failed: Invalid JSON response - #{e.message}" end |