AlgoliaIntegration
What it is
- A small integration wrapper around the Algolia Python
SearchClient. - Provides basic index management and search/update operations.
- Includes an
as_tools()helper to expose the integration as LangChainStructuredTooltools.
Public API
AlgoliaIntegrationConfiguration
Dataclass configuration for the integration.
- Fields
app_id: str— Algolia Application ID.api_key: str— Algolia Admin API key.datastore_path: str— Defaults toABIModule.get_instance().configuration.datastore_path.
AlgoliaIntegration
Integration client.
-
__init__(configuration: AlgoliaIntegrationConfiguration)- Creates an Algolia
SearchClientusingapp_idandapi_key.
- Creates an Algolia
-
async search(index_name: str, query: str, hits_per_page: int = 50, filters: str | None = None) -> Dict- Searches a given index with optional Algolia
filters.
- Searches a given index with optional Algolia
-
create_index(index_name: str, settings: Dict | None = None) -> Dict- Initializes an index; optionally applies settings via
set_settings. - Returns a dict containing
nameand currentsettings(viaget_settings).
- Initializes an index; optionally applies settings via
-
list_indexes()- Lists indices via
client.list_indices().
- Lists indices via
-
delete_index(index_name: str) -> Dict- Deletes an index via
index.delete().
- Deletes an index via
-
async update_index(index_name: str, records: list)- Saves each record via
client.save_object(index_name=..., body=record)and returns a list of responses.
- Saves each record via
-
async delete_all_records(index_name: str)- Clears all objects in an index via
client.clear_objects(index_name=...).
- Clears all objects in an index via
as_tools(configuration: AlgoliaIntegrationConfiguration) -> list
Converts the integration into LangChain tools (StructuredTool), providing:
algolia_search_index→AlgoliaIntegration.searchalgolia_create_index→AlgoliaIntegration.create_indexalgolia_list_indexes→AlgoliaIntegration.list_indexesalgolia_delete_index→AlgoliaIntegration.delete_indexalgolia_update_records→ wrapsAlgoliaIntegration.update_indexwithasyncio.run(...)algolia_delete_all_records→ wrapsAlgoliaIntegration.delete_all_recordswithasyncio.run(...)
Configuration/Dependencies
-
Required packages
algoliasearch.search.client.SearchClientnaas_abi_core.integration.integration.Integration,IntegrationConfiguration- For
as_tools()only:langchain_core.tools.StructuredToolpydantic(BaseModel,Field)
-
Configuration
app_idandapi_keymust be valid Algolia credentials.datastore_pathis present in the configuration but is not used by methods in this file.
Usage
Direct integration usage (async + sync)
import asyncio
from naas_abi_marketplace.applications.algolia.integrations.AlgoliaIntegration import (
AlgoliaIntegration,
AlgoliaIntegrationConfiguration,
)
cfg = AlgoliaIntegrationConfiguration(app_id="YOUR_APP_ID", api_key="YOUR_ADMIN_API_KEY")
client = AlgoliaIntegration(cfg)
# Sync: create an index
client.create_index("products")
async def main():
# Async: add/update records
await client.update_index("products", [{"objectID": "1", "name": "Book"}])
# Async: search
res = await client.search("products", "Book", hits_per_page=10)
print(res)
asyncio.run(main())
LangChain tools
from naas_abi_marketplace.applications.algolia.integrations.AlgoliaIntegration import (
as_tools,
AlgoliaIntegrationConfiguration,
)
cfg = AlgoliaIntegrationConfiguration(app_id="YOUR_APP_ID", api_key="YOUR_ADMIN_API_KEY")
tools = as_tools(cfg)
# Example: find the tool by name
search_tool = next(t for t in tools if t.name == "algolia_search_index")
Caveats
update_index()saves records one-by-one (sequential awaits); it does not use Algolia batch operations.- In
as_tools(), async methods are executed viaasyncio.run(...); this can fail if called from an environment where an event loop is already running (e.g., some notebook/async runtime contexts).