@@ -151,7 +151,7 @@ def resource_name(self) -> str:
151
151
@classmethod
152
152
def create (
153
153
cls ,
154
- agent_engine : Union [Queryable , OperationRegistrable ],
154
+ agent_engine : Optional [ Union [Queryable , OperationRegistrable ]] = None ,
155
155
* ,
156
156
requirements : Optional [Union [str , Sequence [str ]]] = None ,
157
157
display_name : Optional [str ] = None ,
@@ -197,7 +197,7 @@ def create(
197
197
198
198
Args:
199
199
agent_engine (AgentEngineInterface):
200
- Required . The Agent Engine to be created.
200
+ Optional . The Agent Engine to be created.
201
201
requirements (Union[str, Sequence[str]]):
202
202
Optional. The set of PyPI dependencies needed. It can either be
203
203
the path to a single file (requirements.txt), or an ordered list
@@ -222,14 +222,22 @@ def create(
222
222
ValueError: If the `location` was not set using `vertexai.init`.
223
223
ValueError: If the `staging_bucket` was not set using vertexai.init.
224
224
ValueError: If the `staging_bucket` does not start with "gs://".
225
+ ValueError: If `extra_packages` is specified but `agent_engine` is None.
226
+ ValueError: If `requirements` is specified but `agent_engine` is None.
225
227
FileNotFoundError: If `extra_packages` includes a file or directory
226
228
that does not exist.
227
229
IOError: If requirements is a string that corresponds to a
228
230
nonexistent file.
229
231
"""
230
232
sys_version = f"{ sys .version_info .major } .{ sys .version_info .minor } "
231
233
_validate_sys_version_or_raise (sys_version )
232
- agent_engine = _validate_agent_engine_or_raise (agent_engine )
234
+ if agent_engine is not None :
235
+ agent_engine = _validate_agent_engine_or_raise (agent_engine )
236
+ if agent_engine is None :
237
+ if requirements is not None :
238
+ raise ValueError ("requirements must be None if agent_engine is None." )
239
+ if extra_packages is not None :
240
+ raise ValueError ("extra_packages must be None if agent_engine is None." )
233
241
requirements = _validate_requirements_or_raise (agent_engine , requirements )
234
242
extra_packages = _validate_extra_packages_or_raise (extra_packages )
235
243
gcs_dir_name = gcs_dir_name or _DEFAULT_GCS_DIR_NAME
@@ -251,43 +259,45 @@ def create(
251
259
gcs_dir_name = gcs_dir_name ,
252
260
extra_packages = extra_packages ,
253
261
)
254
- # Update the package spec.
255
- package_spec = aip_types .ReasoningEngineSpec .PackageSpec (
256
- python_version = sys_version ,
257
- pickle_object_gcs_uri = "{}/{}/{}" .format (
258
- staging_bucket ,
259
- gcs_dir_name ,
260
- _BLOB_FILENAME ,
261
- ),
262
+ reasoning_engine = aip_types .ReasoningEngine (
263
+ display_name = display_name ,
264
+ description = description ,
262
265
)
263
- if extra_packages :
264
- package_spec .dependency_files_gcs_uri = "{}/{}/{}" .format (
265
- staging_bucket ,
266
- gcs_dir_name ,
267
- _EXTRA_PACKAGES_FILE ,
266
+ if agent_engine is not None :
267
+ # Update the package spec.
268
+ package_spec = aip_types .ReasoningEngineSpec .PackageSpec (
269
+ python_version = sys_version ,
270
+ pickle_object_gcs_uri = "{}/{}/{}" .format (
271
+ staging_bucket ,
272
+ gcs_dir_name ,
273
+ _BLOB_FILENAME ,
274
+ ),
268
275
)
269
- if requirements :
270
- package_spec .requirements_gcs_uri = "{}/{}/{}" .format (
271
- staging_bucket ,
272
- gcs_dir_name ,
273
- _REQUIREMENTS_FILE ,
276
+ if extra_packages :
277
+ package_spec .dependency_files_gcs_uri = "{}/{}/{}" .format (
278
+ staging_bucket ,
279
+ gcs_dir_name ,
280
+ _EXTRA_PACKAGES_FILE ,
281
+ )
282
+ if requirements :
283
+ package_spec .requirements_gcs_uri = "{}/{}/{}" .format (
284
+ staging_bucket ,
285
+ gcs_dir_name ,
286
+ _REQUIREMENTS_FILE ,
287
+ )
288
+ agent_engine_spec = aip_types .ReasoningEngineSpec (
289
+ package_spec = package_spec ,
274
290
)
275
- agent_engine_spec = aip_types .ReasoningEngineSpec (
276
- package_spec = package_spec ,
277
- )
278
- class_methods_spec = _generate_class_methods_spec_or_raise (
279
- agent_engine , _get_registered_operations (agent_engine )
280
- )
281
- agent_engine_spec .class_methods .extend (class_methods_spec )
291
+ class_methods_spec = _generate_class_methods_spec_or_raise (
292
+ agent_engine , _get_registered_operations (agent_engine )
293
+ )
294
+ agent_engine_spec .class_methods .extend (class_methods_spec )
295
+ reasoning_engine .spec = agent_engine_spec
282
296
operation_future = sdk_resource .api_client .create_reasoning_engine (
283
297
parent = initializer .global_config .common_location_path (
284
298
project = sdk_resource .project , location = sdk_resource .location
285
299
),
286
- reasoning_engine = aip_types .ReasoningEngine (
287
- display_name = display_name ,
288
- description = description ,
289
- spec = agent_engine_spec ,
290
- ),
300
+ reasoning_engine = reasoning_engine ,
291
301
)
292
302
_LOGGER .log_create_with_lro (cls , operation_future )
293
303
_LOGGER .info (
@@ -309,10 +319,11 @@ def create(
309
319
credentials = sdk_resource .credentials ,
310
320
location_override = sdk_resource .location ,
311
321
)
312
- try :
313
- _register_api_methods_or_raise (sdk_resource )
314
- except Exception as e :
315
- _LOGGER .warning ("Failed to register API methods: {%s}" , e )
322
+ if agent_engine is not None :
323
+ try :
324
+ _register_api_methods_or_raise (sdk_resource )
325
+ except Exception as e :
326
+ _LOGGER .warning ("Failed to register API methods: {%s}" , e )
316
327
sdk_resource ._operation_schemas = None
317
328
return sdk_resource
318
329
0 commit comments