Class: RailsAgents::Skills::Portable::WebSearch

Inherits:
Tool
  • Object
show all
Defined in:
lib/rails_agents/skills/portable/web_search.rb

Constant Summary collapse

SEARCH_URL =
"https://html.duckduckgo.com/html/"

Instance Method Summary collapse

Methods inherited from Tool

definition, description, inherited, param, tool_name

Instance Method Details

#call(query:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rails_agents/skills/portable/web_search.rb', line 14

def call(query:)
  response = Faraday.get(SEARCH_URL, {q: query}, {"User-Agent" => "RailsAgents/1.0"})
  return {error: "Search failed", query: query} unless response.success?

  titles = response.body.scan(/class="result__a"[^>]*>(.*?)<\/a>/).first(5).map { |match|
    match.first.gsub(/<[^>]+>/, "").strip
  }.reject(&:empty?)

  urls = response.body.scan(/class="result__url"[^>]*>(.*?)<\/a>/).first(5).map { |match|
    match.first.gsub(/<[^>]+>/, "").strip
  }

  {query: query, results: titles.zip(urls).map { |title, url| {title:, url:} }}
rescue StandardError => e
  {error: e.message, query: query}
end