1212from gooddata_api_client .model .chat_history_result import ChatHistoryResult
1313from gooddata_api_client .model .chat_request import ChatRequest
1414from gooddata_api_client .model .chat_result import ChatResult
15+ from gooddata_api_client .model .generate_description_request import GenerateDescriptionRequest
16+ from gooddata_api_client .model .generate_description_response import GenerateDescriptionResponse
17+ from gooddata_api_client .model .generate_title_request import GenerateTitleRequest
18+ from gooddata_api_client .model .generate_title_response import GenerateTitleResponse
1519from gooddata_api_client .model .saved_visualization import SavedVisualization
1620from gooddata_api_client .model .search_request import SearchRequest
1721from gooddata_api_client .model .search_result import SearchResult
22+ from gooddata_api_client .model .trending_objects_result import TrendingObjectsResult
1823
1924from gooddata_sdk .client import GoodDataApiClient
2025from gooddata_sdk .compute .model .execution import (
@@ -276,6 +281,7 @@ def search_ai(
276281 workspace_id : str ,
277282 question : str ,
278283 deep_search : bool | None = None ,
284+ enable_hybrid_search : bool | None = None ,
279285 limit : int | None = None ,
280286 object_types : list [str ] | None = None ,
281287 relevant_score_threshold : float | None = None ,
@@ -288,6 +294,8 @@ def search_ai(
288294 workspace_id (str): workspace identifier
289295 question (str): keyword/sentence input for search
290296 deep_search (bool): turn on deep search - if true, content of complex objects will be searched as well
297+ enable_hybrid_search (Optional[bool]): if true, enables hybrid search combining vector similarity and
298+ keyword matching. Defaults to None.
291299 limit (Optional[int]): maximum number of results to return. Defaults to None.
292300 object_types (Optional[list[str]]): list of object types to search for. Enum items: "attribute", "metric", "fact",
293301 "label", "date", "dataset", "visualization" and "dashboard". Defaults to None.
@@ -303,6 +311,8 @@ def search_ai(
303311 search_params : dict [str , Any ] = {}
304312 if deep_search is not None :
305313 search_params ["deep_search" ] = deep_search
314+ if enable_hybrid_search is not None :
315+ search_params ["enable_hybrid_search" ] = enable_hybrid_search
306316 if limit is not None :
307317 search_params ["limit" ] = limit
308318 if object_types is not None :
@@ -315,6 +325,63 @@ def search_ai(
315325 response = self ._actions_api .ai_search (workspace_id , search_request , _check_return_type = False )
316326 return response
317327
328+ def generate_description (
329+ self ,
330+ workspace_id : str ,
331+ object_id : str ,
332+ object_type : str ,
333+ ) -> GenerateDescriptionResponse :
334+ """
335+ Generate a description for an analytics catalog object.
336+
337+ Args:
338+ workspace_id (str): workspace identifier
339+ object_id (str): identifier of the object to describe
340+ object_type (str): type of the object to describe.
341+ One of: "Visualization", "Dashboard", "Metric", "Fact", "Attribute"
342+
343+ Returns:
344+ GenerateDescriptionResponse: Generated description and optional note
345+ """
346+ request = GenerateDescriptionRequest (object_id = object_id , object_type = object_type , _check_type = False )
347+ response = self ._actions_api .generate_description (workspace_id , request , _check_return_type = False )
348+ return response
349+
350+ def generate_title (
351+ self ,
352+ workspace_id : str ,
353+ object_id : str ,
354+ object_type : str ,
355+ ) -> GenerateTitleResponse :
356+ """
357+ Generate a title for an analytics catalog object.
358+
359+ Args:
360+ workspace_id (str): workspace identifier
361+ object_id (str): identifier of the object to generate a title for
362+ object_type (str): type of the object to generate a title for.
363+ One of: "Visualization", "Dashboard", "Metric", "Fact", "Attribute"
364+
365+ Returns:
366+ GenerateTitleResponse: Generated title and optional note
367+ """
368+ request = GenerateTitleRequest (object_id = object_id , object_type = object_type , _check_type = False )
369+ response = self ._actions_api .generate_title (workspace_id , request , _check_return_type = False )
370+ return response
371+
372+ def get_trending_objects (self , workspace_id : str ) -> TrendingObjectsResult :
373+ """
374+ Get trending analytics catalog objects for a workspace.
375+
376+ Args:
377+ workspace_id (str): workspace identifier
378+
379+ Returns:
380+ TrendingObjectsResult: List of trending analytics catalog objects
381+ """
382+ response = self ._actions_api .trending_objects (workspace_id , _check_return_type = False )
383+ return response
384+
318385 def cancel_executions (self , executions : dict [str , dict [str , str ]]) -> None :
319386 """
320387 Try to cancel given executions using the cancel api endpoint.
0 commit comments