@@ -338,8 +338,11 @@ def create(
338
338
"""
339
339
sys_version = f"{ sys .version_info .major } .{ sys .version_info .minor } "
340
340
_validate_sys_version_or_raise (sys_version )
341
+ gcs_dir_name = gcs_dir_name or _DEFAULT_GCS_DIR_NAME
342
+ staging_bucket = initializer .global_config .staging_bucket
341
343
if agent_engine is not None :
342
344
agent_engine = _validate_agent_engine_or_raise (agent_engine )
345
+ _validate_staging_bucket_or_raise (staging_bucket )
343
346
if agent_engine is None :
344
347
if requirements is not None :
345
348
raise ValueError ("requirements must be None if agent_engine is None." )
@@ -350,12 +353,9 @@ def create(
350
353
requirements = requirements ,
351
354
)
352
355
extra_packages = _validate_extra_packages_or_raise (extra_packages )
353
- gcs_dir_name = gcs_dir_name or _DEFAULT_GCS_DIR_NAME
354
356
355
357
sdk_resource = cls .__new__ (cls )
356
358
base .VertexAiResourceNounWithFutureManager .__init__ (sdk_resource )
357
- staging_bucket = initializer .global_config .staging_bucket
358
- _validate_staging_bucket_or_raise (staging_bucket )
359
359
# Prepares the Agent Engine for creation in Vertex AI.
360
360
# This involves packaging and uploading the artifacts for
361
361
# agent_engine, requirements and extra_packages to
@@ -409,12 +409,22 @@ def create(
409
409
)
410
410
agent_engine_spec .class_methods .extend (class_methods_spec )
411
411
reasoning_engine .spec = agent_engine_spec
412
- operation_future = sdk_resource .api_client .create_reasoning_engine (
413
- parent = initializer .global_config .common_location_path (
414
- project = sdk_resource .project , location = sdk_resource .location
415
- ),
416
- reasoning_engine = reasoning_engine ,
417
- )
412
+ if (
413
+ initializer .global_config .project is not None
414
+ and initializer .global_config .location is not None
415
+ ):
416
+ operation_future = sdk_resource .api_client .create_reasoning_engine (
417
+ parent = initializer .global_config .common_location_path (
418
+ project = sdk_resource .project , location = sdk_resource .location
419
+ ),
420
+ reasoning_engine = reasoning_engine ,
421
+ )
422
+ elif initializer .global_config .api_key is not None :
423
+ operation_future = sdk_resource .api_client .create_reasoning_engine (
424
+ reasoning_engine = reasoning_engine ,
425
+ )
426
+ else :
427
+ raise ValueError ("Either project or api_key must be set in vertexai.init." )
418
428
_LOGGER .log_create_with_lro (cls , operation_future )
419
429
_LOGGER .info (
420
430
f"View progress and logs at https://console.cloud.google.com/logs/query?project={ sdk_resource .project } "
@@ -430,11 +440,21 @@ def create(
430
440
sdk_resource ._gca_resource = sdk_resource ._get_gca_resource (
431
441
resource_name = created_resource .name
432
442
)
433
- sdk_resource .execution_api_client = initializer .global_config .create_client (
434
- client_class = aip_utils .AgentEngineExecutionClientWithOverride ,
435
- credentials = sdk_resource .credentials ,
436
- location_override = sdk_resource .location ,
437
- )
443
+ if (
444
+ initializer .global_config .project is not None
445
+ and initializer .global_config .location is not None
446
+ ):
447
+ sdk_resource .execution_api_client = initializer .global_config .create_client (
448
+ client_class = aip_utils .AgentEngineExecutionClientWithOverride ,
449
+ credentials = sdk_resource .credentials ,
450
+ location_override = sdk_resource .location ,
451
+ )
452
+ elif initializer .global_config .api_key is not None :
453
+ sdk_resource .execution_api_client = initializer .global_config .create_client (
454
+ client_class = aip_utils .AgentEngineExecutionClientWithOverride ,
455
+ api_key = initializer .global_config .api_key ,
456
+ location_override = sdk_resource .location ,
457
+ )
438
458
if agent_engine is not None :
439
459
try :
440
460
_register_api_methods_or_raise (sdk_resource )
@@ -881,17 +901,18 @@ def _prepare(
881
901
gcs_dir_name (str): The GCS bucket directory under `staging_bucket` to
882
902
use for staging the artifacts needed.
883
903
"""
904
+ if agent_engine is None :
905
+ return
884
906
gcs_bucket = _get_gcs_bucket (
885
907
project = project ,
886
908
location = location ,
887
909
staging_bucket = staging_bucket ,
888
910
)
889
- if agent_engine is not None :
890
- _upload_agent_engine (
891
- agent_engine = agent_engine ,
892
- gcs_bucket = gcs_bucket ,
893
- gcs_dir_name = gcs_dir_name ,
894
- )
911
+ _upload_agent_engine (
912
+ agent_engine = agent_engine ,
913
+ gcs_bucket = gcs_bucket ,
914
+ gcs_dir_name = gcs_dir_name ,
915
+ )
895
916
if requirements is not None :
896
917
_upload_requirements (
897
918
requirements = requirements ,
@@ -992,7 +1013,7 @@ def _generate_update_request_or_raise(
992
1013
Union [Sequence [str ], Dict [str , Union [str , aip_types .SecretRef ]]]
993
1014
] = None ,
994
1015
) -> reasoning_engine_service .UpdateReasoningEngineRequest :
995
- """Tries to generates the update request for the agent engine."""
1016
+ """Tries to generate the update request for the agent engine."""
996
1017
is_spec_update = False
997
1018
update_masks : List [str ] = []
998
1019
agent_engine_spec = aip_types .ReasoningEngineSpec ()
0 commit comments