Class: RailsAi::WebSearch::GoogleSearch
- Inherits:
-
Object
- Object
- RailsAi::WebSearch::GoogleSearch
- Defined in:
- lib/rails_ai/web_search.rb
Instance Method Summary collapse
-
#initialize(api_key: nil, search_engine_id: nil) ⇒ GoogleSearch
constructor
A new instance of GoogleSearch.
- #search(query, num_results: 5) ⇒ Object
Constructor Details
#initialize(api_key: nil, search_engine_id: nil) ⇒ GoogleSearch
Returns a new instance of GoogleSearch.
12 13 14 15 16 |
# File 'lib/rails_ai/web_search.rb', line 12 def initialize(api_key: nil, search_engine_id: nil) @api_key = api_key || ENV['GOOGLE_SEARCH_API_KEY'] @search_engine_id = search_engine_id || ENV['GOOGLE_SEARCH_ENGINE_ID'] @base_url = 'https://www.googleapis.com/customsearch/v1' end |
Instance Method Details
#search(query, num_results: 5) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/rails_ai/web_search.rb', line 18 def search(query, num_results: 5) unless @api_key && !@api_key.empty? Rails.logger.warn "Google Search API key not configured, skipping web search" if defined?(Rails) && Rails.logger return [] end unless @search_engine_id && !@search_engine_id.empty? Rails.logger.warn "Google Search Engine ID not configured, skipping web search" if defined?(Rails) && Rails.logger return [] end uri = URI("#{@base_url}?key=#{@api_key}&cx=#{@search_engine_id}&q=#{URI.encode_www_form_component(query)}&num=#{num_results}") response = Net::HTTP.get_response(uri) if response.code == '200' data = JSON.parse(response.body) parse_results(data) else Rails.logger.error "Google Search API error: #{response.code} - #{response.body}" if defined?(Rails) && Rails.logger [] end rescue => e Rails.logger.error "Web search error: #{e.message}" if defined?(Rails) && Rails.logger [] end |