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.
-
#list_imports(**params) ⇒ Resources::ImportCollection
List all imports.
-
#list_items(webset_id:, **params) ⇒ Resources::WebsetItemCollection
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 title and/or metadata.
-
#upload_import(file_path:, **params) ⇒ Resources::Import
Upload a file for import (creates import and uploads file).
Constructor Details
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
231 232 233 |
# File 'lib/exa/client.rb', line 231 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
157 158 159 |
# File 'lib/exa/client.rb', line 157 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
267 268 269 |
# File 'lib/exa/client.rb', line 267 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
190 191 192 |
# File 'lib/exa/client.rb', line 190 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
321 322 323 |
# File 'lib/exa/client.rb', line 321 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
375 376 377 |
# File 'lib/exa/client.rb', line 375 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
177 178 179 |
# File 'lib/exa/client.rb', line 177 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
249 250 251 |
# File 'lib/exa/client.rb', line 249 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
222 223 224 |
# File 'lib/exa/client.rb', line 222 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
363 364 365 |
# File 'lib/exa/client.rb', line 363 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
285 286 287 |
# File 'lib/exa/client.rb', line 285 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
413 414 415 |
# File 'lib/exa/client.rb', line 413 def delete_monitor(id:) Services::Websets::Monitors::Delete.new(connection, id: id).call end |
#delete_webset(id) ⇒ Resources::Webset
Delete a webset
149 150 151 |
# File 'lib/exa/client.rb', line 149 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
199 200 201 |
# File 'lib/exa/client.rb', line 199 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
344 345 346 |
# File 'lib/exa/client.rb', line 344 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
276 277 278 |
# File 'lib/exa/client.rb', line 276 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
393 394 395 |
# File 'lib/exa/client.rb', line 393 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
433 434 435 |
# File 'lib/exa/client.rb', line 433 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
141 142 143 |
# File 'lib/exa/client.rb', line 141 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
258 259 260 |
# File 'lib/exa/client.rb', line 258 def get_webset_search(webset_id:, id:) Services::Websets::GetSearch.new(connection, webset_id: webset_id, id: id).call end |
#list_imports(**params) ⇒ Resources::ImportCollection
List all imports
306 307 308 |
# File 'lib/exa/client.rb', line 306 def list_imports(**params) Services::Websets::ListImports.new(connection, **params).call end |
#list_items(webset_id:, **params) ⇒ Resources::WebsetItemCollection
List all items in a webset
296 297 298 |
# File 'lib/exa/client.rb', line 296 def list_items(webset_id:, **params) Services::Websets::ListItems.new(connection, webset_id: webset_id, **params).call end |
#list_monitor_runs(monitor_id:, **params) ⇒ Resources::MonitorRunCollection
List all runs for a specific monitor
424 425 426 |
# File 'lib/exa/client.rb', line 424 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
385 386 387 |
# File 'lib/exa/client.rb', line 385 def list_monitors(**params) Services::Websets::Monitors::List.new(connection, **params).call end |
#list_websets(**params) ⇒ Resources::WebsetCollection
List all websets
131 132 133 |
# File 'lib/exa/client.rb', line 131 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
213 214 215 |
# File 'lib/exa/client.rb', line 213 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
355 356 357 |
# File 'lib/exa/client.rb', line 355 def update_import(id, **params) Services::Websets::UpdateImport.new(connection, id: id, **params).call end |
#update_monitor(id:, **params) ⇒ Resources::Monitor
Update a monitor
405 406 407 |
# File 'lib/exa/client.rb', line 405 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 title and/or metadata
168 169 170 |
# File 'lib/exa/client.rb', line 168 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)
336 337 338 |
# File 'lib/exa/client.rb', line 336 def upload_import(file_path:, **params) Services::Websets::UploadImport.new(connection, file_path: file_path, **params).call end |