Class: Exa::Client
- Inherits:
-
Object
- Object
- Exa::Client
- Defined in:
- lib/exa/client.rb
Overview
Main client for interacting with the Exa.ai API
Provides methods for all supported Exa.ai operations including search, content retrieval, answer generation, and async research tasks.
Instance Method Summary collapse
-
#answer(query, **options) ⇒ Resources::Answer
Get AI-generated answers to a query.
-
#answer_stream(query, **options) {|chunk| ... } ⇒ void
Stream AI-generated answers to a query.
-
#cancel_enrichment(webset_id:, id:) ⇒ Resources::WebsetEnrichment
Cancel a running enrichment.
-
#cancel_webset(id) ⇒ Resources::Webset
Cancel in-progress operations on a webset.
-
#cancel_webset_search(webset_id:, id:) ⇒ Resources::WebsetSearch
Cancel a webset search.
-
#context(query, **params) ⇒ Resources::SearchResult
Search code repositories.
-
#create_enrichment(webset_id:, **params) ⇒ Resources::WebsetEnrichment
Create a new enrichment for a webset.
-
#create_import(**params) ⇒ Resources::Import
Create a new import.
-
#create_monitor(webset_id:, cadence:, behavior:, **params) ⇒ Resources::Monitor
Create a new monitor for a webset.
-
#create_webset(**params) ⇒ Resources::Webset
Create a new webset.
-
#create_webset_search(webset_id:, **params) ⇒ Resources::WebsetSearch
Create a new search within a webset.
-
#delete_enrichment(webset_id:, id:) ⇒ Resources::WebsetEnrichment
Delete an enrichment.
-
#delete_import(id) ⇒ Resources::Import
Delete an import.
-
#delete_item(webset_id:, id:) ⇒ Boolean
Delete a webset item by ID.
-
#delete_monitor(id:) ⇒ Resources::Monitor
Delete a monitor.
-
#delete_webset(id) ⇒ Resources::Webset
Delete a webset.
-
#find_similar(url, **options) ⇒ Resources::SearchResult
Find similar content to a given URL.
-
#get_contents(urls, **options) ⇒ Resources::ContentCollection
Get full page contents for URLs.
-
#get_enrichment(webset_id:, id:) ⇒ Resources::WebsetEnrichment
Get a specific enrichment by ID.
-
#get_import(id) ⇒ Resources::Import
Get a specific import by ID.
-
#get_item(webset_id:, id:) ⇒ Hash
Get a webset item by ID.
-
#get_monitor(id:) ⇒ Resources::Monitor
Get a specific monitor by ID.
-
#get_monitor_run(monitor_id:, id:) ⇒ Resources::MonitorRun
Get a specific monitor run by ID.
-
#get_webset(id, **params) ⇒ Resources::Webset
Get a specific webset by ID.
-
#get_webset_search(webset_id:, id:) ⇒ Resources::WebsetSearch
Get a webset search by ID.
-
#initialize(api_key: nil, **options) ⇒ Client
constructor
Initialize a new Exa client.
-
#linkedin_company(query, **params) ⇒ Resources::SearchResult
Search for LinkedIn company pages.
-
#linkedin_person(query, **params) ⇒ Resources::SearchResult
Search for LinkedIn profiles.
-
#list_imports(**params) ⇒ Resources::ImportCollection
List all imports.
-
#list_items(webset_id:) ⇒ Array<Hash>
List all items in a webset.
-
#list_monitor_runs(monitor_id:, **params) ⇒ Resources::MonitorRunCollection
List all runs for a specific monitor.
-
#list_monitors(**params) ⇒ Resources::MonitorCollection
List all monitors.
-
#list_websets(**params) ⇒ Resources::WebsetCollection
List all websets.
-
#research_get(research_id, **params) ⇒ Resources::Research
Get status and results of a research task.
-
#research_list(**params) ⇒ Resources::ResearchList
List all research tasks.
-
#research_start(**params) ⇒ Resources::Research
Start an asynchronous research task.
-
#search(query, **params) ⇒ Resources::SearchResult
Execute a search query.
-
#update_enrichment(webset_id:, id:, **params) ⇒ Resources::WebsetEnrichment
Update an enrichment.
-
#update_import(id, **params) ⇒ Resources::Import
Update an import.
-
#update_monitor(id:, **params) ⇒ Resources::Monitor
Update a monitor.
-
#update_webset(id, **params) ⇒ Resources::Webset
Update a webset’s metadata.
-
#upload_import(file_path:, **params) ⇒ Resources::Import
Upload a file for import (creates import and uploads file).
Constructor Details
#initialize(api_key: nil, **options) ⇒ Client
Initialize a new Exa client
25 26 27 28 29 30 |
# File 'lib/exa/client.rb', line 25 def initialize(api_key: nil, **) @api_key = api_key || Exa.api_key = validate_api_key! end |
Instance Method Details
#answer(query, **options) ⇒ Resources::Answer
Get AI-generated answers to a query
70 71 72 |
# File 'lib/exa/client.rb', line 70 def answer(query, **) Services::Answer.new(connection, query: query, **).call end |
#answer_stream(query, **options) {|chunk| ... } ⇒ void
This method returns an undefined value.
Stream AI-generated answers to a query
Returns partial answer chunks as they are generated by the API.
85 86 87 |
# File 'lib/exa/client.rb', line 85 def answer_stream(query, **, &block) Services::AnswerStream.new(connection, query: query, **).call(&block) end |
#cancel_enrichment(webset_id:, id:) ⇒ Resources::WebsetEnrichment
Cancel a running enrichment
256 257 258 |
# File 'lib/exa/client.rb', line 256 def cancel_enrichment(webset_id:, id:) Services::Websets::CancelEnrichment.new(connection, webset_id: webset_id, id: id).call end |
#cancel_webset(id) ⇒ Resources::Webset
Cancel in-progress operations on a webset
183 184 185 |
# File 'lib/exa/client.rb', line 183 def cancel_webset(id) Services::Websets::Cancel.new(connection, id: id).call end |
#cancel_webset_search(webset_id:, id:) ⇒ Resources::WebsetSearch
Cancel a webset search
292 293 294 |
# File 'lib/exa/client.rb', line 292 def cancel_webset_search(webset_id:, id:) Services::Websets::CancelSearch.new(connection, webset_id: webset_id, id: id).call end |
#context(query, **params) ⇒ Resources::SearchResult
Search code repositories
121 122 123 |
# File 'lib/exa/client.rb', line 121 def context(query, **params) Services::Context.new(connection, query: query, **params).call end |
#create_enrichment(webset_id:, **params) ⇒ Resources::WebsetEnrichment
Create a new enrichment for a webset
215 216 217 |
# File 'lib/exa/client.rb', line 215 def create_enrichment(webset_id:, **params) Services::Websets::CreateEnrichment.new(connection, webset_id: webset_id, **params).call end |
#create_import(**params) ⇒ Resources::Import
Create a new import
343 344 345 |
# File 'lib/exa/client.rb', line 343 def create_import(**params) Services::Websets::CreateImport.new(connection, **params).call end |
#create_monitor(webset_id:, cadence:, behavior:, **params) ⇒ Resources::Monitor
Create a new monitor for a webset
397 398 399 |
# File 'lib/exa/client.rb', line 397 def create_monitor(webset_id:, cadence:, behavior:, **params) Services::Websets::Monitors::Create.new(connection, webset_id: webset_id, cadence: cadence, behavior: behavior, **params).call end |
#create_webset(**params) ⇒ Resources::Webset
Create a new webset
202 203 204 |
# File 'lib/exa/client.rb', line 202 def create_webset(**params) Services::Websets::Create.new(connection, **params).call end |
#create_webset_search(webset_id:, **params) ⇒ Resources::WebsetSearch
Create a new search within a webset
274 275 276 |
# File 'lib/exa/client.rb', line 274 def create_webset_search(webset_id:, **params) Services::Websets::CreateSearch.new(connection, webset_id: webset_id, **params).call end |
#delete_enrichment(webset_id:, id:) ⇒ Resources::WebsetEnrichment
Delete an enrichment
247 248 249 |
# File 'lib/exa/client.rb', line 247 def delete_enrichment(webset_id:, id:) Services::Websets::DeleteEnrichment.new(connection, webset_id: webset_id, id: id).call end |
#delete_import(id) ⇒ Resources::Import
Delete an import
385 386 387 |
# File 'lib/exa/client.rb', line 385 def delete_import(id) Services::Websets::DeleteImport.new(connection, id: id).call end |
#delete_item(webset_id:, id:) ⇒ Boolean
Delete a webset item by ID
310 311 312 |
# File 'lib/exa/client.rb', line 310 def delete_item(webset_id:, id:) Services::Websets::DeleteItem.new(connection, webset_id: webset_id, id: id).call end |
#delete_monitor(id:) ⇒ Resources::Monitor
Delete a monitor
435 436 437 |
# File 'lib/exa/client.rb', line 435 def delete_monitor(id:) Services::Websets::Monitors::Delete.new(connection, id: id).call end |
#delete_webset(id) ⇒ Resources::Webset
Delete a webset
175 176 177 |
# File 'lib/exa/client.rb', line 175 def delete_webset(id) Services::Websets::Delete.new(connection, id: id).call end |
#find_similar(url, **options) ⇒ Resources::SearchResult
Find similar content to a given URL
51 52 53 |
# File 'lib/exa/client.rb', line 51 def find_similar(url, **) Services::FindSimilar.new(connection, url: url, **).call end |
#get_contents(urls, **options) ⇒ Resources::ContentCollection
Get full page contents for URLs
60 61 62 |
# File 'lib/exa/client.rb', line 60 def get_contents(urls, **) Services::GetContents.new(connection, urls: urls, **).call end |
#get_enrichment(webset_id:, id:) ⇒ Resources::WebsetEnrichment
Get a specific enrichment by ID
224 225 226 |
# File 'lib/exa/client.rb', line 224 def get_enrichment(webset_id:, id:) Services::Websets::RetrieveEnrichment.new(connection, webset_id: webset_id, id: id).call end |
#get_import(id) ⇒ Resources::Import
Get a specific import by ID
366 367 368 |
# File 'lib/exa/client.rb', line 366 def get_import(id) Services::Websets::GetImport.new(connection, id: id).call end |
#get_item(webset_id:, id:) ⇒ Hash
Get a webset item by ID
301 302 303 |
# File 'lib/exa/client.rb', line 301 def get_item(webset_id:, id:) Services::Websets::GetItem.new(connection, webset_id: webset_id, id: id).call end |
#get_monitor(id:) ⇒ Resources::Monitor
Get a specific monitor by ID
415 416 417 |
# File 'lib/exa/client.rb', line 415 def get_monitor(id:) Services::Websets::Monitors::Get.new(connection, id: id).call end |
#get_monitor_run(monitor_id:, id:) ⇒ Resources::MonitorRun
Get a specific monitor run by ID
455 456 457 |
# File 'lib/exa/client.rb', line 455 def get_monitor_run(monitor_id:, id:) Services::Websets::Monitors::Runs::Get.new(connection, monitor_id: monitor_id, id: id).call end |
#get_webset(id, **params) ⇒ Resources::Webset
Get a specific webset by ID
167 168 169 |
# File 'lib/exa/client.rb', line 167 def get_webset(id, **params) Services::Websets::Retrieve.new(connection, id: id, **params).call end |
#get_webset_search(webset_id:, id:) ⇒ Resources::WebsetSearch
Get a webset search by ID
283 284 285 |
# File 'lib/exa/client.rb', line 283 def get_webset_search(webset_id:, id:) Services::Websets::GetSearch.new(connection, webset_id: webset_id, id: id).call end |
#linkedin_company(query, **params) ⇒ Resources::SearchResult
Search for LinkedIn company pages
Convenience method that restricts search to LinkedIn company profiles using keyword search for precise name matching.
134 135 136 |
# File 'lib/exa/client.rb', line 134 def linkedin_company(query, **params) search(query, type: "keyword", includeDomains: ["linkedin.com/company"], **params) end |
#linkedin_person(query, **params) ⇒ Resources::SearchResult
Search for LinkedIn profiles
Convenience method that restricts search to LinkedIn individual profiles using keyword search for precise name matching.
147 148 149 |
# File 'lib/exa/client.rb', line 147 def linkedin_person(query, **params) search(query, type: "keyword", includeDomains: ["linkedin.com/in"], **params) end |
#list_imports(**params) ⇒ Resources::ImportCollection
List all imports
328 329 330 |
# File 'lib/exa/client.rb', line 328 def list_imports(**params) Services::Websets::ListImports.new(connection, **params).call end |
#list_items(webset_id:) ⇒ Array<Hash>
List all items in a webset
318 319 320 |
# File 'lib/exa/client.rb', line 318 def list_items(webset_id:) Services::Websets::ListItems.new(connection, webset_id: webset_id).call end |
#list_monitor_runs(monitor_id:, **params) ⇒ Resources::MonitorRunCollection
List all runs for a specific monitor
446 447 448 |
# File 'lib/exa/client.rb', line 446 def list_monitor_runs(monitor_id:, **params) Services::Websets::Monitors::Runs::List.new(connection, monitor_id: monitor_id, **params).call end |
#list_monitors(**params) ⇒ Resources::MonitorCollection
List all monitors
407 408 409 |
# File 'lib/exa/client.rb', line 407 def list_monitors(**params) Services::Websets::Monitors::List.new(connection, **params).call end |
#list_websets(**params) ⇒ Resources::WebsetCollection
List all websets
157 158 159 |
# File 'lib/exa/client.rb', line 157 def list_websets(**params) Services::Websets::List.new(connection, **params).call end |
#research_get(research_id, **params) ⇒ Resources::Research
Get status and results of a research task
111 112 113 |
# File 'lib/exa/client.rb', line 111 def research_get(research_id, **params) Services::ResearchGet.new(connection, research_id: research_id, **params).call end |
#research_list(**params) ⇒ Resources::ResearchList
List all research tasks
102 103 104 |
# File 'lib/exa/client.rb', line 102 def research_list(**params) Services::ResearchList.new(connection, **params).call end |
#research_start(**params) ⇒ Resources::Research
Start an asynchronous research task
93 94 95 |
# File 'lib/exa/client.rb', line 93 def research_start(**params) Services::ResearchStart.new(connection, **params).call end |
#search(query, **params) ⇒ Resources::SearchResult
Execute a search query
41 42 43 |
# File 'lib/exa/client.rb', line 41 def search(query, **params) Services::Search.new(connection, query: query, **params).call end |
#update_enrichment(webset_id:, id:, **params) ⇒ Resources::WebsetEnrichment
Update an enrichment
238 239 240 |
# File 'lib/exa/client.rb', line 238 def update_enrichment(webset_id:, id:, **params) Services::Websets::UpdateEnrichment.new(connection, webset_id: webset_id, id: id, **params).call end |
#update_import(id, **params) ⇒ Resources::Import
Update an import
377 378 379 |
# File 'lib/exa/client.rb', line 377 def update_import(id, **params) Services::Websets::UpdateImport.new(connection, id: id, **params).call end |
#update_monitor(id:, **params) ⇒ Resources::Monitor
Update a monitor
427 428 429 |
# File 'lib/exa/client.rb', line 427 def update_monitor(id:, **params) Services::Websets::Monitors::Update.new(connection, id: id, **params).call end |
#update_webset(id, **params) ⇒ Resources::Webset
Update a webset’s metadata
193 194 195 |
# File 'lib/exa/client.rb', line 193 def update_webset(id, **params) Services::Websets::Update.new(connection, id: id, **params).call end |
#upload_import(file_path:, **params) ⇒ Resources::Import
Upload a file for import (creates import and uploads file)
358 359 360 |
# File 'lib/exa/client.rb', line 358 def upload_import(file_path:, **params) Services::Websets::UploadImport.new(connection, file_path: file_path, **params).call end |