@@ -44,6 +44,36 @@ def _GetSkillRequestParameters_to_vertex(
4444 return to_object
4545
4646
47+ def _RetrieveSkillsConfig_to_vertex (
48+ from_object : Union [dict [str , Any ], object ],
49+ parent_object : Optional [dict [str , Any ]] = None ,
50+ ) -> dict [str , Any ]:
51+ to_object : dict [str , Any ] = {}
52+
53+ if getv (from_object , ["top_k" ]) is not None :
54+ setv (parent_object , ["_query" , "topK" ], getv (from_object , ["top_k" ]))
55+
56+ return to_object
57+
58+
59+ def _RetrieveSkillsRequestParameters_to_vertex (
60+ from_object : Union [dict [str , Any ], object ],
61+ parent_object : Optional [dict [str , Any ]] = None ,
62+ ) -> dict [str , Any ]:
63+ to_object : dict [str , Any ] = {}
64+ if getv (from_object , ["query" ]) is not None :
65+ setv (to_object , ["_query" , "query" ], getv (from_object , ["query" ]))
66+
67+ if getv (from_object , ["config" ]) is not None :
68+ setv (
69+ to_object ,
70+ ["config" ],
71+ _RetrieveSkillsConfig_to_vertex (getv (from_object , ["config" ]), to_object ),
72+ )
73+
74+ return to_object
75+
76+
4777class Skills (_api_module .BaseModule ):
4878 """Class for managing Skills in the Skill Registry."""
4979
@@ -116,6 +146,75 @@ def get(
116146 self ._api_client ._verify_response (return_value )
117147 return return_value
118148
149+ def retrieve (
150+ self , * , query : str , config : Optional [types .RetrieveSkillsConfigOrDict ] = None
151+ ) -> types .RetrieveSkillsResponse :
152+ """
153+ Retrieves skills semantically matched to a query.
154+ """
155+
156+ parameter_model = types ._RetrieveSkillsRequestParameters (
157+ query = query ,
158+ config = config ,
159+ )
160+
161+ request_url_dict : Optional [dict [str , str ]]
162+ if not self ._api_client .vertexai :
163+ raise ValueError (
164+ "This method is only supported in the Gemini Enterprise Agent Platform (previously known as Vertex AI) client."
165+ )
166+ else :
167+ request_dict = _RetrieveSkillsRequestParameters_to_vertex (parameter_model )
168+ request_url_dict = request_dict .get ("_url" )
169+ if request_url_dict :
170+ path = "skills:retrieve" .format_map (request_url_dict )
171+ else :
172+ path = "skills:retrieve"
173+
174+ query_params = request_dict .get ("_query" )
175+ if query_params :
176+ path = f"{ path } ?{ urlencode (query_params )} "
177+ # TODO: remove the hack that pops config.
178+ request_dict .pop ("config" , None )
179+
180+ http_options : Optional [types .HttpOptions ] = None
181+ if (
182+ parameter_model .config is not None
183+ and parameter_model .config .http_options is not None
184+ ):
185+ http_options = parameter_model .config .http_options
186+
187+ request_dict = _common .convert_to_dict (request_dict )
188+ request_dict = _common .encode_unserializable_types (request_dict )
189+
190+ response = self ._api_client .request ("get" , path , request_dict , http_options )
191+
192+ response_dict = {} if not response .body else json .loads (response .body )
193+
194+ return_value = types .RetrieveSkillsResponse ._from_response (
195+ response = response_dict ,
196+ kwargs = (
197+ {
198+ "config" : {
199+ "response_schema" : getattr (
200+ parameter_model .config , "response_schema" , None
201+ ),
202+ "response_json_schema" : getattr (
203+ parameter_model .config , "response_json_schema" , None
204+ ),
205+ "include_all_fields" : getattr (
206+ parameter_model .config , "include_all_fields" , None
207+ ),
208+ }
209+ }
210+ if getattr (parameter_model , "config" , None )
211+ else {}
212+ ),
213+ )
214+
215+ self ._api_client ._verify_response (return_value )
216+ return return_value
217+
119218
120219class AsyncSkills (_api_module .BaseModule ):
121220 """Class for managing Skills in the Skill Registry."""
@@ -190,3 +289,74 @@ async def get(
190289
191290 self ._api_client ._verify_response (return_value )
192291 return return_value
292+
293+ async def retrieve (
294+ self , * , query : str , config : Optional [types .RetrieveSkillsConfigOrDict ] = None
295+ ) -> types .RetrieveSkillsResponse :
296+ """
297+ Retrieves skills semantically matched to a query.
298+ """
299+
300+ parameter_model = types ._RetrieveSkillsRequestParameters (
301+ query = query ,
302+ config = config ,
303+ )
304+
305+ request_url_dict : Optional [dict [str , str ]]
306+ if not self ._api_client .vertexai :
307+ raise ValueError (
308+ "This method is only supported in the Gemini Enterprise Agent Platform (previously known as Vertex AI) client."
309+ )
310+ else :
311+ request_dict = _RetrieveSkillsRequestParameters_to_vertex (parameter_model )
312+ request_url_dict = request_dict .get ("_url" )
313+ if request_url_dict :
314+ path = "skills:retrieve" .format_map (request_url_dict )
315+ else :
316+ path = "skills:retrieve"
317+
318+ query_params = request_dict .get ("_query" )
319+ if query_params :
320+ path = f"{ path } ?{ urlencode (query_params )} "
321+ # TODO: remove the hack that pops config.
322+ request_dict .pop ("config" , None )
323+
324+ http_options : Optional [types .HttpOptions ] = None
325+ if (
326+ parameter_model .config is not None
327+ and parameter_model .config .http_options is not None
328+ ):
329+ http_options = parameter_model .config .http_options
330+
331+ request_dict = _common .convert_to_dict (request_dict )
332+ request_dict = _common .encode_unserializable_types (request_dict )
333+
334+ response = await self ._api_client .async_request (
335+ "get" , path , request_dict , http_options
336+ )
337+
338+ response_dict = {} if not response .body else json .loads (response .body )
339+
340+ return_value = types .RetrieveSkillsResponse ._from_response (
341+ response = response_dict ,
342+ kwargs = (
343+ {
344+ "config" : {
345+ "response_schema" : getattr (
346+ parameter_model .config , "response_schema" , None
347+ ),
348+ "response_json_schema" : getattr (
349+ parameter_model .config , "response_json_schema" , None
350+ ),
351+ "include_all_fields" : getattr (
352+ parameter_model .config , "include_all_fields" , None
353+ ),
354+ }
355+ }
356+ if getattr (parameter_model , "config" , None )
357+ else {}
358+ ),
359+ )
360+
361+ self ._api_client ._verify_response (return_value )
362+ return return_value
0 commit comments