A fully-featured and blazing-fast Python API client to interact with Algolia's search-as-a-service platform.
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
AI-powered recommendation engine for suggesting relevant content, products, or related items based on user behavior and content similarity. The Recommend API provides personalized suggestions to enhance user experience and drive engagement.
Create recommendation clients for both async and sync operations.
class RecommendClient:
def __init__(
self,
app_id: Optional[str] = None,
api_key: Optional[str] = None,
transporter: Optional[Transporter] = None,
config: Optional[RecommendConfig] = None
) -> None: ...
@classmethod
def create_with_config(
cls,
config: RecommendConfig,
transporter: Optional[Transporter] = None
) -> RecommendClient: ...
async def close(self) -> None: ...
async def set_client_api_key(self, api_key: str) -> None: ...
class RecommendClientSync:
def __init__(
self,
app_id: Optional[str] = None,
api_key: Optional[str] = None,
transporter: Optional[TransporterSync] = None,
config: Optional[RecommendConfig] = None
) -> None: ...Retrieve personalized recommendations based on user behavior, content similarity, or custom strategies.
async def get_recommendations(
self,
get_recommendations_params: Union[GetRecommendationsParams, dict],
request_options: Optional[Union[dict, RequestOptions]] = None
) -> GetRecommendationsResponse:
"""
Get personalized recommendations for users or items.
Parameters:
- get_recommendations_params: Recommendation request configuration
- request_options: Additional request options
Returns:
GetRecommendationsResponse with recommended items
"""Manage recommendation rules that control how suggestions are generated and filtered.
async def search_recommend_rules(
self,
index_name: str,
search_recommend_rules_params: Optional[Union[SearchRecommendRulesParams, dict]] = None,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> SearchRecommendRulesResponse:
"""
Search for recommendation rules in an index.
Parameters:
- index_name: Target index name
- search_recommend_rules_params: Search parameters for rules
- request_options: Additional request options
Returns:
SearchRecommendRulesResponse with matching rules
"""
async def get_recommend_rule(
self,
index_name: str,
model: str,
object_id: str,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> RecommendRule:
"""
Get a specific recommendation rule.
Parameters:
- index_name: Target index name
- model: Recommendation model identifier
- object_id: Rule identifier
- request_options: Additional request options
Returns:
RecommendRule object
"""
async def create_recommend_rule(
self,
index_name: str,
model: str,
recommend_rule: Union[RecommendRule, dict],
request_options: Optional[Union[dict, RequestOptions]] = None
) -> RecommendUpdatedAtResponse:
"""
Create a new recommendation rule.
Parameters:
- index_name: Target index name
- model: Recommendation model identifier
- recommend_rule: Rule configuration
- request_options: Additional request options
Returns:
RecommendUpdatedAtResponse with creation confirmation
"""
async def update_recommend_rule(
self,
index_name: str,
model: str,
object_id: str,
recommend_rule: Union[RecommendRule, dict],
request_options: Optional[Union[dict, RequestOptions]] = None
) -> RecommendUpdatedAtResponse:
"""
Update an existing recommendation rule.
Parameters:
- index_name: Target index name
- model: Recommendation model identifier
- object_id: Rule identifier
- recommend_rule: Updated rule configuration
- request_options: Additional request options
Returns:
RecommendUpdatedAtResponse with update confirmation
"""
async def delete_recommend_rule(
self,
index_name: str,
model: str,
object_id: str,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> RecommendUpdatedAtResponse:
"""
Delete a recommendation rule.
Parameters:
- index_name: Target index name
- model: Recommendation model identifier
- object_id: Rule identifier to delete
- request_options: Additional request options
Returns:
RecommendUpdatedAtResponse with deletion confirmation
"""
async def batch_recommend_rules(
self,
index_name: str,
model: str,
batch_write_params: Union[BatchWriteParams, dict],
request_options: Optional[Union[dict, RequestOptions]] = None
) -> RecommendUpdatedAtResponse:
"""
Perform batch operations on recommendation rules.
Parameters:
- index_name: Target index name
- model: Recommendation model identifier
- batch_write_params: Batch operations to perform
- request_options: Additional request options
Returns:
RecommendUpdatedAtResponse with batch operation confirmation
"""
async def get_recommend_status(
self,
index_name: str,
model: str,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> GetRecommendStatusResponse:
"""
Get the status of recommendation model for an index.
Parameters:
- index_name: Target index name
- model: Recommendation model identifier
- request_options: Additional request options
Returns:
GetRecommendStatusResponse with model status information
"""Execute custom HTTP operations for advanced recommendation features.
async def custom_delete(
self,
path: str,
parameters: Optional[Dict[str, Any]] = None,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> dict:
"""
Perform a custom DELETE request.
Parameters:
- path: API endpoint path
- parameters: Query parameters
- request_options: Additional request options
Returns:
Response data as dictionary
"""
async def custom_get(
self,
path: str,
parameters: Optional[Dict[str, Any]] = None,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> dict:
"""
Perform a custom GET request.
Parameters:
- path: API endpoint path
- parameters: Query parameters
- request_options: Additional request options
Returns:
Response data as dictionary
"""
async def custom_post(
self,
path: str,
parameters: Optional[Dict[str, Any]] = None,
body: Optional[Dict[str, Any]] = None,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> dict:
"""
Perform a custom POST request.
Parameters:
- path: API endpoint path
- parameters: Query parameters
- body: Request body data
- request_options: Additional request options
Returns:
Response data as dictionary
"""
async def custom_put(
self,
path: str,
parameters: Optional[Dict[str, Any]] = None,
body: Optional[Dict[str, Any]] = None,
request_options: Optional[Union[dict, RequestOptions]] = None
) -> dict:
"""
Perform a custom PUT request.
Parameters:
- path: API endpoint path
- parameters: Query parameters
- body: Request body data
- request_options: Additional request options
Returns:
Response data as dictionary
"""from algoliasearch.recommend.client import RecommendClient
# Initialize client
client = RecommendClient("YOUR_APP_ID", "YOUR_API_KEY")
# Get related products recommendations
response = await client.get_recommendations({
"requests": [{
"indexName": "products",
"model": "related-products",
"objectID": "product-123",
"maxRecommendations": 10
}]
})
# Process recommendations
for hit in response.results[0].hits:
print(f"Recommended: {hit['name']} - Score: {hit.get('_score', 'N/A')}")# Get trending items
response = await client.get_recommendations({
"requests": [{
"indexName": "products",
"model": "trending-items",
"maxRecommendations": 20,
"facetFilters": [
"category:electronics"
]
}]
})# Get frequently bought together recommendations
response = await client.get_recommendations({
"requests": [{
"indexName": "products",
"model": "bought-together",
"objectID": "product-456",
"maxRecommendations": 5
}]
})# Recommendation request types
class GetRecommendationsParams(BaseModel):
requests: List[RecommendationsRequest]
class RecommendationsRequest(BaseModel):
index_name: str
model: str
object_id: Optional[str] = None
max_recommendations: Optional[int] = None
query_parameters: Optional[dict] = None
facet_filters: Optional[List[str]] = None
numeric_filters: Optional[List[str]] = None
filters: Optional[str] = None
user_token: Optional[str] = None
# Response types
class GetRecommendationsResponse(BaseModel):
results: List[RecommendationsResult]
class RecommendationsResult(BaseModel):
hits: List[dict]
nb_hits: int
processing_time_ms: int
query: Optional[str] = None
params: Optional[str] = None
# Rule types
class RecommendRule(BaseModel):
object_id: str
condition: dict
consequence: dict
description: Optional[str] = None
enabled: Optional[bool] = None
class SearchRecommendRulesParams(BaseModel):
query: Optional[str] = None
anchoring: Optional[str] = None
context: Optional[str] = None
page: Optional[int] = None
hits_per_page: Optional[int] = None
enabled: Optional[bool] = None
class SearchRecommendRulesResponse(BaseModel):
hits: List[RecommendRule]
nb_hits: int
page: int
nb_pages: int
hits_per_page: int
class RecommendUpdatedAtResponse(BaseModel):
task_id: int
updated_at: str
class GetRecommendStatusResponse(BaseModel):
is_running: bool
processing_time_ms: Optional[int] = None
last_built_at: Optional[str] = None
nb_records: Optional[int] = NoneThe Recommend API supports several built-in recommendation models:
Each model can be customized with filters, query parameters, and business rules to fine-tune recommendation quality and relevance.
Install with Tessl CLI
npx tessl i tessl/pypi-algoliasearch