Class: RailsAi::WebSearch::DuckDuckGoSearch

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai/web_search.rb

Instance Method Summary collapse

Constructor Details

#initializeDuckDuckGoSearch

Returns a new instance of DuckDuckGoSearch.



60
61
62
# File 'lib/rails_ai/web_search.rb', line 60

def initialize
  @base_url = 'https://api.duckduckgo.com'
end

Instance Method Details

#search(query, num_results: 5) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/rails_ai/web_search.rb', line 64

def search(query, num_results: 5)
  uri = URI("#{@base_url}/?q=#{URI.encode_www_form_component(query)}&format=json&no_html=1&skip_disambig=1")
  
  response = Net::HTTP.get_response(uri)
  
  if response.code == '200'
    data = JSON.parse(response.body)
    parse_results(data, num_results)
  else
    Rails.logger.error "DuckDuckGo API error: #{response.code} - #{response.body}" if defined?(Rails) && Rails.logger
    []
  end
rescue => e
  Rails.logger.error "DuckDuckGo search error: #{e.message}" if defined?(Rails) && Rails.logger
  []
end